Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - StringGrid mit FixedRow


hRb - So 14.10.18 16:55
Titel: StringGrid mit FixedRow
Hallo zusammen,
es fällt mir jetzt erst auf. Habe mehrere Anwendungen mit StringGrid-Anzeigen. Die erste Zeile enthält meist die Überschriften. Definiert habe ich FixedRow=1.
Erwartet habe ich, dass diese Zeile immer sichtbar ist. Tatsächlich rollt sie beim Scrollen wie jede andere Zeile weg.
Habe ich da falsche Erwartungen bzw. wie bleiben Fixed-Zeilen immer sichtbar?
Danke hRb


Delete - So 14.10.18 23:03

- Nachträglich durch die Entwickler-Ecke gelöscht -


hRb - Do 01.11.18 21:49

Hallo Frühlingsrolle,
habe ich ja auch geglaubt. Aber sie mal die beiden beigefügten Bilder an. FixedRow = 1 !
Beim Scrollen verschwindet Zeile 0 (Fixzeile). Keine Ahnung warum? Oder doch?
Gruß hRb


Delete - Fr 02.11.18 04:18

- Nachträglich durch die Entwickler-Ecke gelöscht -


hRb - Di 06.11.18 00:13

Hallo Frühlingsrolle (und alle mit dem gleichen Problem),
1. OnDrawCell-Ereignis nutze ich nicht
2. bei "neuem" StringGrid gleicher Effekt,
3. Jetzt habe ich das Problem nach langer Suche gefunden, stecke jedoch in einem Dilemma.

Von der Aufgabenstellung her fülle ich das StringGrid mit den Dateinamen eines Ordners. Da kann es vorkommen, dass keine Dateien einzutragen sind, bzw., die Anzeige leer wird durch Selektion auf bestimmte Dateiendungen. Das bedeutet, man sieht dann nur die Fix-Zeile. Damit erreicht RowCount=FixedRow (keine Nutzzeile). Dies jedoch ist per Definition beim StrinGrid-Object offenbar nicht erlaubt.
Auch zum Leeren eines StringGrid habe ich den Befehl
StringGrid1.RowCount:=FixedRows;
verwendet. Wie sich nun zeigt, wird FixedRows hierbei automatisch um eins unter RowCount gesetzt. Bei RowCount=1 wird FixedRows also =0. Danach ist klar, dass beim Scrollen die Überschrift nicht sichtbar bleibt. Ist RowCount erst einmal =1, verpufft der "Wiederherstell-Befehl" FixedRows:=1.

Nun meine Frage: wie zeigt man eine leere StringGrid an ohne danach das Problem mit Scroll zu haben?
Danke für hilfreiche Antworten.


Delete - Di 06.11.18 23:16

- Nachträglich durch die Entwickler-Ecke gelöscht -


hRb - Mi 07.11.18 18:11

Hallo Frühlingsrolle,
danke für die Erklärung! Wie Du recht vermutet hast, lege ich StringGrid.Count in Anhängigkeit der Anzahl darzustellender Dateien fest. Wenn es natürlich keine "Nutzzeilen" gibt, bleibt nur die Fix-Zeile. Das Scrollproblem habe ich inzwischen programm-intern an zwei Stellen abgefangen, was leicht möglich war, denn kommt die Anzahl der Nutzzeilen unter VisibleColCount, verschwindet der Scroolbalken und die Fix-Zeile bleibt immer sichtbar. Werden Nutzzeilen wieder > Null, so "restauriere" ich den Wert von FixedRows. Das "Scroll-Problem" ist damit behoben.

Nun interessiert mich aber Deine Procedure. Zunächst habe ich Deine Ausführung als Erklärung zum Effekt der autom. Werte-Korrektur verstanden. Hier wird ja deutlich, dass FixedCols (FixedRows) immer Value-1 sein muss. Würde dies jedoch bedeuten, dass durch Anpassung dieser Procedure die autom. Korrektur deaktiviert werden könnte?

PS: nicht zuletzt durch Deine Hilfe stehe ich kurz vor Abschluss der Programmentwicklung: "Listview mit StringGrid optisch synchronisieren"
https://www.entwickler-ecke.de/topic_Listview+mit+StringGrid+optisch+synchronisieren_117091.html (noch offener Punkt)
Werde in den nächsten Tagen Ergebnis veröffentlichen.
Dank und Gruß hRb


Delete - Do 08.11.18 18:04

- Nachträglich durch die Entwickler-Ecke gelöscht -