[gelöst] Wo finde ich TCustomStringGrid?

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Benutzeravatar
kralle
Lazarusforum e. V.
Beiträge: 994
Registriert: Mi 17. Mär 2010, 14:50
OS, Lazarus, FPC: Linux Mint 20 , FPC 3.3.1 , Lazarus 2.1.0 -Win10 & XE7Pro
CPU-Target: 64Bit
Wohnort: Bremerhaven
Kontaktdaten:

[gelöst] Wo finde ich TCustomStringGrid?

Beitrag von kralle »

Moin,

wo finde ich das "TCustomStringGrid"?

Gruß Heiko
Zuletzt geändert von kralle am Do 7. Mär 2024, 10:45, insgesamt 1-mal geändert.
OS: Manjaro Linux, Debian und Windows 10
FPC-Version: 3.2.2 , Lazarus 3.0
+ Delphi XE7SP1

Benutzeravatar
theo
Beiträge: 10499
Registriert: Mo 11. Sep 2006, 19:01

Re: Wo finde ich TCustomStringGrid

Beitrag von theo »

Manchmal hast du schon echt merkwürdige Fragen für jemand, der schon 14 Jahre dabei ist. :lol:

Am gleichen Ort wo TStringGrid ist, nämlich in Grids (grids.pas)
TCustomXYZ ist fast immer der direkte Vorfahr von TXYZ.
Der Unterschied liegt meistens nur im publishen von Eigenschaften für den Objekinspektor.

Ausserdem kann man so etwas allgemein auch über "Suche Bezeichner" durch Rechtsklick im Nachrichtenfenster finden (via Code Browser). Siehe z.B. viewtopic.php?p=120881#p120881

Benutzeravatar
Niesi
Lazarusforum e. V.
Beiträge: 338
Registriert: So 26. Jun 2016, 19:44
OS, Lazarus, FPC: Linux Mint Cinnamon (Windows wenn notwendig), Lazarus 3.0 FPC 3.3.1

Re: Wo finde ich TCustomStringGrid?

Beitrag von Niesi »

Lege Dir ein TStringGrid auf eine Form.

Klicke im Quelltext mit der rechten Maustaste auf TStringGrid und wähle "Find Declaration ...".

Die Unit "Grids" wird geöffnet.

Klicke rechts auf "TCustomStringGrid" und wähle "Find Declaration ..." ...

Edit: Für Anfänger auch nützlich sind

https://lazarus-ccr.sourceforge.io/docs ... ggrid.html

https://wiki.freepascal.org/Grids_Reference_Page
Wissen ist das einzige Gut, das sich vermehrt, wenn es geteilt wird ...

Benutzeravatar
kralle
Lazarusforum e. V.
Beiträge: 994
Registriert: Mi 17. Mär 2010, 14:50
OS, Lazarus, FPC: Linux Mint 20 , FPC 3.3.1 , Lazarus 2.1.0 -Win10 & XE7Pro
CPU-Target: 64Bit
Wohnort: Bremerhaven
Kontaktdaten:

Re: Wo finde ich TCustomStringGrid

Beitrag von kralle »

Hallo Theo,
theo hat geschrieben:
So 18. Feb 2024, 08:39
Manchmal hast du schon echt merkwürdige Fragen für jemand, der schon 14 Jahre dabei ist. :lol:
14 Jahre? Pascal Erstkontakt Mitte der 80er Jahre.
Aber ich habe es nie gelernt. Ich habe mir immer wenn ich eine Tool brauchte, die nötigen Codezeilen für das was ich nicht wusste, zusammen gesucht.
theo hat geschrieben:
So 18. Feb 2024, 08:39
Am gleichen Ort wo TStringGrid ist, nämlich in Grids (grids.pas)
TCustomXYZ ist fast immer der direkte Vorfahr von TXYZ.
Der Unterschied liegt meistens nur im publishen von Eigenschaften für den Objekinspektor.
Okay, deshalb gibt es keine Komponenten die so heißt.
theo hat geschrieben:
So 18. Feb 2024, 08:39
Ausserdem kann man so etwas allgemein auch über "Suche Bezeichner" durch Rechtsklick im Nachrichtenfenster finden (via Code Browser)
Egal in welches Suchfenster/-feld ich "TCustomStringGrid" eingebe, es wird nichts dazu gefunden.

Das heißt jetzt aber doch auch, dass das hier auch für das Stringgrid gilt:

Code: Alles auswählen

DBGrid1.Options := DBGrid1.Options + [dgAutoSizeColumns];
nur das die Option nicht im Objektinspektor angezeigt wird - oder?


Gruß Heiko
Zuletzt geändert von kralle am So 18. Feb 2024, 12:04, insgesamt 1-mal geändert.
OS: Manjaro Linux, Debian und Windows 10
FPC-Version: 3.2.2 , Lazarus 3.0
+ Delphi XE7SP1

Benutzeravatar
kralle
Lazarusforum e. V.
Beiträge: 994
Registriert: Mi 17. Mär 2010, 14:50
OS, Lazarus, FPC: Linux Mint 20 , FPC 3.3.1 , Lazarus 2.1.0 -Win10 & XE7Pro
CPU-Target: 64Bit
Wohnort: Bremerhaven
Kontaktdaten:

Re: Wo finde ich TCustomStringGrid?

Beitrag von kralle »

oin,
Niesi hat geschrieben:
So 18. Feb 2024, 08:41
Lege Dir ein TStringGrid auf eine Form.

Klicke im Quelltext mit der rechten Maustaste auf TStringGrid und wähle "Find Declaration ...".

Die Unit "Grids" wird geöffnet.

Klicke rechts auf "TCustomStringGrid" und wähle "Find Declaration ..." ...
Das funktioniert alles so weit, aber als ich den Tipp fand, das "TCustomStringGrid" die Spaltenbreite an den Inhalt automatisch anpassen kann, suchte ich nach einer Visuellen Komponente mit diesem Namen.
Niesi hat geschrieben:
So 18. Feb 2024, 08:41
Edit: Für Anfänger auch nützlich sind

https://lazarus-ccr.sourceforge.io/docs ... ggrid.html

https://wiki.freepascal.org/Grids_Reference_Page
Da sieht man schön wer von wem abstammt, aber nicht wer als Visuelle Komponente vorliegt und wer nicht.

Gruß Heiko
OS: Manjaro Linux, Debian und Windows 10
FPC-Version: 3.2.2 , Lazarus 3.0
+ Delphi XE7SP1

Benutzeravatar
theo
Beiträge: 10499
Registriert: Mo 11. Sep 2006, 19:01

Re: Wo finde ich TCustomStringGrid

Beitrag von theo »

kralle hat geschrieben:
So 18. Feb 2024, 11:55
Egal in welches Suchfenster/-feld ich "TCustomStringGrid" eingebe, es wird nichts dazu gefunden.
Bei mir schon:

lazcodebrowser.png
lazcodebrowser.png (82.1 KiB) 4642 mal betrachtet

kralle hat geschrieben:
So 18. Feb 2024, 11:55
Das heißt jetzt aber doch auch, dass das hier auch für das Stringgrid gilt:

Code: Alles auswählen

DBGrid1.Options := DBGrid1.Options + [dgAutoSizeColumns];
nur das die Option nicht im Objektinspektor angezeigt wird - oder?
Wahrscheinlich.

Benutzeravatar
kralle
Lazarusforum e. V.
Beiträge: 994
Registriert: Mi 17. Mär 2010, 14:50
OS, Lazarus, FPC: Linux Mint 20 , FPC 3.3.1 , Lazarus 2.1.0 -Win10 & XE7Pro
CPU-Target: 64Bit
Wohnort: Bremerhaven
Kontaktdaten:

Re: Wo finde ich TCustomStringGrid?

Beitrag von kralle »

Mein Fehler. Habe es im Code-Explorer eingegeben und nicht im Code-Browser.
Die Darstellung war so klein, das ich nur "Code-" sehen konnte.

Es gibt zwar das hier

Code: Alles auswählen

  procedure AutoSizeColumn(aCol: Integer);
    procedure AutoSizeColumns;     
beim "TCustomStringGrid", aber nicht bei "TStringGrid".
Hier gibt es nur "goColSizing", aber das erlaubt nur das Ändern der Breite.

Ich habe mir dann ein Procedure aus dem Netz geladen, die es angeblich kann, aber auch die schafft es nicht.

Code: Alles auswählen

procedure grdColWidth(grd: TStringGrid; min: Word);
var i, j, tmp, max: Word;
const dx = 5;

begin
  with grd do begin
    for j := 0 to (ColCount -1) do begin         // alle Spalten
      max := 0;
      for i := 0 to (RowCount - 1 ) do begin     // alle Zeilen
       tmp := Canvas.TextWidth(Cells[j, i]);
       if tmp > max then max := tmp
      end;
      if max > min then                          // nur wenn Minimalbreite überschritten wird,
      ColWidths[j] := max + GridLineWidth + dx  // ... dann Spalte verbreitern
     end
  end
end; 

Gruß Heiko
OS: Manjaro Linux, Debian und Windows 10
FPC-Version: 3.2.2 , Lazarus 3.0
+ Delphi XE7SP1

wp_xyz
Beiträge: 4893
Registriert: Fr 8. Apr 2011, 09:01

Re: Wo finde ich TCustomStringGrid

Beitrag von wp_xyz »

kralle hat geschrieben:
So 18. Feb 2024, 11:55
Das heißt jetzt aber doch auch, dass das hier auch für das Stringgrid gilt:

Code: Alles auswählen

DBGrid1.Options := DBGrid1.Options + [dgAutoSizeColumns];
nur das die Option nicht im Objektinspektor angezeigt wird - oder?
Wieso soll denn TStringGrid eine Eigenschaft haben, die zu TDBGrid gehört? Richtig ist dass TStringGrid einen Satz von Optionen (vom Typ TGridOptions) von TCustomGrid erbt. In TCustomGrid sind diese Options als protected deklariert, also von außen nicht sichtbar; TStringGrid deklariert die Options dann als published, so dass sie im Objekt-Inspektor sichtbar werden. TDBGrid (das auch von TCustomGrid abgeleitet ist) hat zwar ebenfalls Options, jedoch sind die ein anderer Typ: TDBGridOptions, haben also trotz der Namensgleichheit überhaupt nichts mit den Options des StringGrid zu tun. Und vor allem: beide Grids stammen von TCustomGrid ab, aber das heißt nicht dass TStringGrid auf irgendwelche Properties zugreifen kann, die in TDBGrid eingeführt wurden.

Um bei einem TStringGrid die Spaltenbreite an den Text anzupassen, kannst du die Methode AutoSizeColumn(ColumnIndex) anwenden (oder AutoSizeColumns() für alle Spalten).

Benutzeravatar
theo
Beiträge: 10499
Registriert: Mo 11. Sep 2006, 19:01

Re: Wo finde ich TCustomStringGrid?

Beitrag von theo »

kralle hat geschrieben:
So 18. Feb 2024, 12:47
beim "TCustomStringGrid", aber nicht bei "TStringGrid".
Wie kommst du darauf?
TStringGrid erbt alles von TCustomStringGrid.

Benutzeravatar
kralle
Lazarusforum e. V.
Beiträge: 994
Registriert: Mi 17. Mär 2010, 14:50
OS, Lazarus, FPC: Linux Mint 20 , FPC 3.3.1 , Lazarus 2.1.0 -Win10 & XE7Pro
CPU-Target: 64Bit
Wohnort: Bremerhaven
Kontaktdaten:

Re: Wo finde ich TCustomStringGrid

Beitrag von kralle »

Moin,
wp_xyz hat geschrieben:
So 18. Feb 2024, 12:50
Wieso soll denn TStringGrid eine Eigenschaft haben, die zu TDBGrid gehört?
War nur als Beispiel.
wp_xyz hat geschrieben:
So 18. Feb 2024, 12:50
Um bei einem TStringGrid die Spaltenbreite an den Text anzupassen, kannst du die Methode AutoSizeColumn(ColumnIndex) anwenden (oder AutoSizeColumns() für alle Spalten).
Beides interessiert mein StringGrid nicht. Es ist auch egal, ob die Option "goColSizing" aktiv ist oder nicht.
Die Spaltenbreite bleibt gleich. Auch "DefaultColWitdh" kann ich auf beliebige Werte setzen.

Gruß Heiko
OS: Manjaro Linux, Debian und Windows 10
FPC-Version: 3.2.2 , Lazarus 3.0
+ Delphi XE7SP1

Benutzeravatar
kralle
Lazarusforum e. V.
Beiträge: 994
Registriert: Mi 17. Mär 2010, 14:50
OS, Lazarus, FPC: Linux Mint 20 , FPC 3.3.1 , Lazarus 2.1.0 -Win10 & XE7Pro
CPU-Target: 64Bit
Wohnort: Bremerhaven
Kontaktdaten:

Re: Wo finde ich TCustomStringGrid?

Beitrag von kralle »

Hier mal das Programm als ZIP.
Vielleicht bin ich wirklich zu blöd.

Gruß Heiko
Dateianhänge
Dateinamen kuerzen.zip
(126.02 KiB) 70-mal heruntergeladen
OS: Manjaro Linux, Debian und Windows 10
FPC-Version: 3.2.2 , Lazarus 3.0
+ Delphi XE7SP1

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1436
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Wo finde ich TCustomStringGrid?

Beitrag von fliegermichl »

Wenn du AutosizeColumns aufrufst, bevor du das Grid füllst, was erwartest du dann für ein Ergebnis?

Benutzeravatar
kralle
Lazarusforum e. V.
Beiträge: 994
Registriert: Mi 17. Mär 2010, 14:50
OS, Lazarus, FPC: Linux Mint 20 , FPC 3.3.1 , Lazarus 2.1.0 -Win10 & XE7Pro
CPU-Target: 64Bit
Wohnort: Bremerhaven
Kontaktdaten:

Re: Wo finde ich TCustomStringGrid?

Beitrag von kralle »

Danke.
fliegermichl hat geschrieben:
So 18. Feb 2024, 14:50
Wenn du AutosizeColumns aufrufst, bevor du das Grid füllst, was erwartest du dann für ein Ergebnis?
Ich habe schon an meinem Verstand gezweifelt.

Gruß Heiko
OS: Manjaro Linux, Debian und Windows 10
FPC-Version: 3.2.2 , Lazarus 3.0
+ Delphi XE7SP1

Antworten