Hallo,
wie kann man einen Titel des TColumn eines TStringGrid mehrzeilig
darstellen lassen. In den restlichen Zellen verwende ich immer
SingleLine := false in PrepareCanvas, aber bei dem Titel geht
das leider nicht.
nochmal TStringGrid [gelöst]
-
- Beiträge: 55
- Registriert: Sa 15. Jan 2011, 00:14
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
nochmal TStringGrid [gelöst]
Zuletzt geändert von DAP am Sa 22. Mär 2014, 18:56, insgesamt 1-mal geändert.
Re: nochmal TStringGrid
Dieser Code zeigt bei mir mehrzeiligen Text an, auch beim Titel. Allerdings müssen bereits die NewLine-Zeichen vorhanden sein, das Grid macht keinen automatischen Umbruch. Und die Zeilenhöhe muss entsprechend groß sein, sonst sieht man nur die 1. Zeile. In dem Beispiel stelle ich die Optionen für variierbare Zeilenhöhen und Spaltenbreiten - warum gibt es eigentlich kein goFixedRowSizing?
Code: Alles auswählen
procedure TForm1.StringGrid1PrepareCanvas(sender: TObject; aCol, aRow: Integer;
aState: TGridDrawState);
var
ts: TTextStyle;
begin
ts := StringGrid1.Canvas.TextStyle;
ts.SingleLine := false;
StringGrid1.Canvas.TextStyle := ts;
StringGrid1.Options := StringGrid1.Options + [goColSizing, goRowSizing, goFixedColSizing];
StringGrid1.DefaultRowHeight := 48;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.Cells[1, 0] := 'Das'#13'ist'#13'mehrzeilig.';
StringGrid1.Cells[1, 1] := 'Das'#13'ist'#13'mehrzeilig.';
end;
-
- Beiträge: 55
- Registriert: Sa 15. Jan 2011, 00:14
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: nochmal TStringGrid
wp_xyz, wenn Du Deinen Code aber auf ein Grid mit
eingefügten TColumn anwendest, dann wird die Titelzelle
nicht mehrzeilig. Der Titel wird wahrscheinlich nach
der Zelle überzeichnet.
eingefügten TColumn anwendest, dann wird die Titelzelle
nicht mehrzeilig. Der Titel wird wahrscheinlich nach
der Zelle überzeichnet.
Re: nochmal TStringGrid
Nein, ich hatte es erfolgreich auch mit eingefügter Column ausprobiert. Das FormCreate war dann
Code: Alles auswählen
procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.Columns[0].Title.Caption := 'Das'#13'ist'#13'mehrzeilig.';
StringGrid1.Cells[1, 1] := 'Das'#13'ist'#13'mehrzeilig.';
end;
-
- Beiträge: 55
- Registriert: Sa 15. Jan 2011, 00:14
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: nochmal TStringGrid
Sorry, das war natürlich mein Fehler, ich habe der ersten Zelle und nicht
dem Titel den zweizeiligen Text zugewiesen.
wp_xyz, vielen Dank für die schnelle und professionelle Hilfe.
Kann man eigentlich irgendwie den Zeilenumbruch im Titeleditor zur
Designzeit eingeben?
dem Titel den zweizeiligen Text zugewiesen.
wp_xyz, vielen Dank für die schnelle und professionelle Hilfe.
Kann man eigentlich irgendwie den Zeilenumbruch im Titeleditor zur
Designzeit eingeben?
Re: nochmal TStringGrid
Eigentlich nicht. Aber wie ich gesehen habe, ist es einfach, das einzurichten. Ich habe einen Patch geschrieben und unter http://mantis.freepascal.org/view.php?id=25902 beim BugTracker eingereicht. Zur weiteren Erleichterung gibt es für TGridColumnTitle eine neue Eigenschaft MultiLine, so dass man sich deswegen nicht mehr mit den OnPrepareCanvas-Event befassen muss.Kann man eigentlich irgendwie den Zeilenumbruch im Titeleditor zur Designzeit eingeben?
Vielleicht suche ich jetzt, wie man die Option goFixedRowSizing realisieren kann...
-
- Beiträge: 55
- Registriert: Sa 15. Jan 2011, 00:14
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: nochmal TStringGrid
damit ist die Frage mehr als umfassend beantwortet