StringGrid Cols

Für allgemeine Fragen zur Programmierung, welche nicht! direkt mit Lazarus zu tun haben.
Antworten
Cool-Tuc
Beiträge: 100
Registriert: Mi 6. Apr 2011, 17:10

StringGrid Cols

Beitrag von Cool-Tuc »

Hallo alle,

ich möchte zur Laufzeit die Anzahl der Spalten eines StringGrids flexibel halten. Durch setzen von "TStringGrid.colcount := xyz" kann ich die Anzahl der Spalten verändern und diese auch problemlos füllen, aber wahrscheinlich ist es nicht sauber. Beim Zugriff auf die ColEigenschften bekomme ich immer ListIndex(xyz) - Fehler.
Sauberer wäre es wahrscheinlich mit TStringGird.Columns.Items.Add Spalten hinzuzufügen; dort habe ich dann auch Zugriff auf alle Eigenschaften.
Wofür gibts/funktioniert aber dann trotzdem noch "TStringGrid.colcount := xyz"?

Danke

Udo

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

Re: StringGrid Cols

Beitrag von wp_xyz »

Die Lazarus Grids kann man auf zwei Arten verwenden: ohne und mit Columns. Bei "ohne Columns" wird die Spaltenanzahl - so wie bei Delphi - mit der Eigenschaft ColCount eingestellt. Bei "mit Columns" muss man der Collection Columns explizit Einträge hinzufügen (oder löschen), bis man die gewünschte Anzahl an Spalten hat - das ist etwas umständlicher, aber dafür hat man für jede einzelne Spalte diverse Eigenschaften gebrauchsfertig, für die man sonst etwas Code schreiben müsste.

Wer vor ein paar Zeilen Code nicht zurückschreckt, für den bringen Columns aber kaum Vorteile - ich bin bisher immer ohne ausgekommen. Columns hat für mich den wesentlichen Nachteil, dass die Indizierung nicht mehr konsistent ist: Wenn man jeweils eine FixedRow/FixedCol hat, hat das 1.benutzbare Datenfeld die Koordinaten Col=1 und Row =1, es liegt aber auf der Spalte mit Index 0. Und sowas ist eine immense Fehlerquelle.

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

Re: StringGrid Cols

Beitrag von theo »


Cool-Tuc
Beiträge: 100
Registriert: Mi 6. Apr 2011, 17:10

Re: StringGrid Cols

Beitrag von Cool-Tuc »

OK, hab ich verstanden, Danke

Antworten