[Gelöst] Verhalten Stringgrid

Rund um die LCL und andere Komponenten
Antworten
MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

[Gelöst] Verhalten Stringgrid

Beitrag von MacWomble »

Ich habe ein kleines Problem mit einem Stringgrid bei folgendem Code:

Code: Alles auswählen

    for i := 0 to Project.Units.Count - 1 do
    begin
      sgUnits.RowCount := i + sgUnits.FixedRows + 1;
      ShowMessage(Project.Units[i].Name + ',' + Project.Units[i].PathExt);
      sgUnits.Rows[i + sgUnits.FixedRows].AddCommaText(Project.Units[i].Name + ',' + Project.Units[i].PathExt);
    end;   

Beim ersten Aufruf funktioniert es wie es soll.
Wird die Routine jedoch ein zweites mal aufgerufen, wird nur die erste Zeile des Stringgrids mit dem Namen gefüllt, die weiteren Zeilen werden zwar angelegt, sind aber leer. :shock:
Das Showmessage habe ich nur zum Testen eingebaut, es zeigt immer die richtigen Werte an, auch beim zweiten Durchlauf.
Zuletzt geändert von MacWomble am Fr 27. Mär 2020, 10:58, insgesamt 1-mal geändert.
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

Benutzeravatar
h-elsner
Lazarusforum e. V.
Beiträge: 259
Registriert: Di 24. Jul 2012, 15:42
OS, Lazarus, FPC: LINUX Mint21.1, Win10, Lazarus 2.2.4, FPC3.2.2
CPU-Target: X86-64; arm 32bit
Wohnort: Illertissen
Kontaktdaten:

Re: Verhalten Stringgrid

Beitrag von h-elsner »

Blöde Frage, aber hast du vor dem Aufruf RowCount zurückgesetzt?

Gruß HE

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

Re: Verhalten Stringgrid

Beitrag von wp_xyz »

Weiß nicht, ob das dein Problem ist, aber die Zeilenzahl innerhalb der Schleife hochzuzählen, wo der Wert eigentlich von Anfang an schon bekannt ist, finde ich sehr ungeschickt. Auch würde ich nicht Rows.AddCommaText nehmen, zum einen weil mit jedem Aufruf an die schon existierende Zeile angehängt wird anstatt von vorne zu beginnen, und zum anderen weil es die Funktion in der Release-Version von FPC nicht gibt - dadurch versperrst du dir eine Rückzugsmöglichkeit auf die Release-Version, falls FPC-Trunk einmal totale Schwierigkeiten machen sollte (generell würde ich sowieso nicht mit FPC-Trunk entwickeln). Also:

Code: Alles auswählen

  sgUnits.RowCount := Project.Units.Count + sgUnits.FixedRows;
  for i := 0 to Project.Units.Count - 1 do
  begin
    sgUnits.Rows[i + sgUnits.FixedRows].CommaText := Project.Units[i].Name + ',' + Project.Units[i].PathExt;
  end;

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: Verhalten Stringgrid

Beitrag von MacWomble »

1. Die RowCount habe ich nicht zurück gesetzt, da ich diese ja in der Schleife gesetzt habe
2. Die Lösung von wp_xyz sieht gut aus und funktioniert wunderbar

Herzlichen Dank!
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

Antworten