Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   First Steps: FMX tgrid tcolumn databinding fieldname (https://www.delphipraxis.net/189937-first-steps-fmx-tgrid-tcolumn-databinding-fieldname.html)

DSCHUCH 9. Aug 2016 18:05

First Steps: FMX tgrid tcolumn databinding fieldname
 
Hallo,

ich probiere gerade mal ein paar ganz einfache Dinge mit Firemonkey, habe ich schon ne halbe Stunde probiert, gegoogled und quellcode angeschaut, komme nicht weiter und Problem ist garantiert ganz einfach:

Ich möchte den Inhalt einer Datenbank darstellen, gelöst über TGrid, Query, TDataSource und TBindSourceDB. Funktioniert.

Ich wollte jetzt die ColumnWidth im Quellcode vergeben, da ich nicht genau weiß wieviele Spalten entstehen (Select * FROM) und oder halt auf den Inhalt anpassen.
  • Vordefinierte Propertie (ColumnAutoWidht) habe ich nicht gefunden
  • Im CustomDraw habe ich TColumn, wie finde ich die dahinterliegende Datenanbindung / Fieldname heraus? ... ich wollte über TField.DataSize oder Displaywidth die Spaltenbreite setzen
  • IF Column.Index=0 then Column.Width:=140; >>>> irgendsowas >>>> IF Column.DataBinding.MemberName='fieldA' then Column.Width:=140;

Evtl gibt es ja auch irgendwo ein Tutorial oder sonstige Einstiegsdokumentation?

Danke,
Daniel.

DSCHUCH 11. Aug 2016 07:58

AW: First Steps: FMX tgrid tcolumn databinding fieldname
 
Ich trage hier mal bissl was zusammen, was ich auf meiner Recherche so finde:

http://stackoverflow.com/questions/3...byrow-function

Delphi-Quellcode:
var tmp : TFmxObject;
 begin
  tmp:=TColumnAccess(Columns[Col]).CellControl;
  result:=TControl(tmp).BoundsRect.BottomRight
Edit: wobei das scheinbar veraltet ist:
http://www.delphipraxis.net/180120-z...d-fmx-xe6.html

MEissing 16. Aug 2016 08:39

AW: First Steps: FMX tgrid tcolumn databinding fieldname
 
Ganz einfach (Getestet mit 10.1 Berlin):
Code:
procedure TForm1.AutoSizeCol(Grid: TStringGrid; Column: integer);
var
  i: integer;
   W, WMax : Single;
begin
  WMax := 0;
  for i := 0 to (Grid.RowCount - 1) do begin
    W := Grid.Canvas.TextWidth(Grid.Cells[Column, i]);
    if W > WMax then
      WMax := W;
  end;
  Grid.Columns[Column].Width := WMax + 8;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
begin
  for i := 0 to StringGrid1.ColumnCount - 1 do
    AutoSizeCol(StringGrid1, i);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:01 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz