Avatar billede koden12 Nybegynder
13. september 2003 - 16:48 Der er 7 kommentarer og
1 løsning

2 linjer i en DataGrid eller ne StringGrid

Hvordan kan jeg lave flere linjer tekst i en DataGrid som er en slags StringGrid.
Det skulle gerne komme med tryk på Inter Return men det er ikke et krav.
Har nogle set om det kan lade sig gøre ?
VH
Koden12
Avatar billede koden12 Nybegynder
14. september 2003 - 01:04 #1
Jeg kan sandt for dyden ikke få den til at lave mere end en linje.. øv..
Jeg har lagt et hav af Procedure og Function ind og så galt en Tilladelse til at Lave LF og BR ... men lige lidt hjæper det... den vil ikke..
Den retter bare teksten til om cellen bliver den samme størrelse og nogen Ny linje neden under den anden kommer der ikke.
Jeg har Russiske og Poske og tyske Procedure og Function og ingen af dem vil noget som helst.
Kan man slet ikke lave "Næste linje" i samme celle i en StringGrid ?
VH
SpørgerJørgen (godt sur)
Avatar billede Slettet bruger
14. september 2003 - 11:18 #2
Det her virker i en stringgrid, måske virker det i en datagrid hvis man laver lidt om i det:

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  List: TStringList;
  I:Integer;
begin
  List := TStringList.Create;
  with (Sender as TStringGrid) do
  begin
      List.Delimiter := Chr(10);
      List.DelimitedText := Cells[ACol, ARow];

      if DefaultRowHeight < List.Count * Canvas.TextHeight(Cells[ACol, ARow]) + 2 then
      DefaultRowHeight := List.Count * Canvas.TextHeight(Cells[ACol, ARow]) + 2;

      Canvas.FillRect(Rect);
      for I := 0 to List.Count - 1 do
      begin
      Canvas.TextOut(Rect.Left + 2, Rect.Top + (Canvas.TextHeight(Cells[ACol, ARow])*I) + 2, List.Strings[I]);
      end;
    end;
  List.Free;
end;

procedure TForm1.Memo1Change(Sender: TObject);
begin
StringGrid1.Cells[1,1] := Memo1.Text;
end;
Avatar billede koden12 Nybegynder
14. september 2003 - 12:35 #3
Desværre... den stopper her :
List.Delimiter
Den har ikke noget Delimiter
Jeg slog op under TStringlist og fandt :

TStringList = class(TStrings)
  private
    FList: PStringItemList;
    FCount: Integer;
    FCapacity: Integer;
    FSorted: Boolean;
    FDuplicates: TDuplicates;
    FOnChange: TNotifyEvent;
    FOnChanging: TNotifyEvent;
    procedure ExchangeItems(Index1, Index2: Integer);
    procedure Grow;
    procedure QuickSort(L, R: Integer);
    procedure InsertItem(Index: Integer; const S: string);
    procedure SetSorted(Value: Boolean);
  protected
    procedure Changed; virtual;
    procedure Changing; virtual;
    function Get(Index: Integer): string; override;
    function GetCapacity: Integer; override;
    function GetCount: Integer; override;
    function GetObject(Index: Integer): TObject; override;
    procedure Put(Index: Integer; const S: string); override;
    procedure PutObject(Index: Integer; AObject: TObject); override;
    procedure SetCapacity(NewCapacity: Integer); override;
    procedure SetUpdateState(Updating: Boolean); override;
  public
    destructor Destroy; override;
    function Add(const S: string): Integer; override;
    procedure Clear; override;
    procedure Delete(Index: Integer); override;
    procedure Exchange(Index1, Index2: Integer); override;
    function Find(const S: string; var Index: Integer): Boolean; virtual;
    function IndexOf(const S: string): Integer; override;
    procedure Insert(Index: Integer; const S: string); override;
    procedure Sort; virtual;
    property Duplicates: TDuplicates read FDuplicates write FDuplicates;
    property Sorted: Boolean read FSorted write SetSorted;
    property OnChange: TNotifyEvent read FOnChange write FOnChange;
    property OnChanging: TNotifyEvent read FOnChanging write FOnChanging;
  end;

Men altså ikke den du søger.
VH
Koden12
Avatar billede fixxxer Nybegynder
14. september 2003 - 15:15 #4
er det mig der er bare er bagstiv, eller vil du indsætte en ny record i din db, ved at lave en ny linje i DBgrid? så bruger du jo bare piletasten ned, og så står du i en ny linje? men hvis du vil have det skal ske på Enter tryk, så er den nok knap såre simpel :)
bær over med mig hvis jeg har misforstået spørgsmålet :)
Avatar billede koden12 Nybegynder
14. september 2003 - 15:24 #5
fixxxer , ja det har du.
Det handler slet ikke om DBGrid men om StringGrid som ikke har nogen database med ny linje i databasen mm
VH
SpørgerJørgen
Avatar billede koden12 Nybegynder
14. september 2003 - 20:36 #6
Jeg fandt en Delimiter som Char
Var
Delimiter : Char;

Begin

Men det hjalp mig nu ikke.
VH
Koden12
Avatar billede klasker Nybegynder
15. september 2003 - 18:46 #7
Delimiter og Delimiter text er erklæret i TStrings som TStringlist arver fra.
Avatar billede klasker Nybegynder
15. september 2003 - 18:46 #8
*Ups, Stavefejl: "Delimiter text" = "DelimiterText"
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

Seneste spørgsmål Seneste aktivitet
I dag 10:21 Ny printer, men hvilken Af mort1 i Printere
I går 19:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging