Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - erste freie Zeile in StringGrid?
Torsten - Di 17.12.02 19:36
Titel: erste freie Zeile in StringGrid?
Moinsen Leute!
Der Titel sagt eigentlich alles. Ich brauche für meine Anwendung ein TStringGrid, in das ich diverse Daten zur Laufzeit einfüge.
Jenes geschieht über ein zweites Fenster.
Um nicht vorhandene Daten zu überschreiben, will ich natürlich die neuen Daten in die erste freie Zeile schreiben. Doch wie ermittle ich jene Zeile?
Über RowCount ist es mir bis dato nicht möglich, da ich beim Start die Anzahl der Zeilen auf 50 setze.
Fragende Grüße
Torsten
grayfox - Di 17.12.02 21:25
hallo torsten!
durchlauf einfach das grid von zeile nr 1 bis maximal rowcount-1 (weil rowcount auch die zeile 0 mitzählt) und überprüfe den inhalt auf ein leeres feld. somit hast deine erste leere zeile.
mfg, stefan
Torsten - Mi 18.12.02 00:02
Moinsen!
Danke, so dachte ich mir das auch, nachdem ich den Text geschrieben hatte. Wird wohl klappen.
Dumm ist es nur, wenn zwischen zwei Einträgen eine leere Zeile steht.
Grüße
Torsten
Wolff68 - Mi 18.12.02 00:32
| grayfox hat folgendes geschrieben: |
| von zeile nr 1 bis maximal rowcount-1 (weil rowcount auch die zeile 0 mitzählt) |
Genau deshalb sollte es eher For i :=
0 to StringGrid1.RowCount-1 heisen, oder?
| Torsten hat folgendes geschrieben: |
| Dumm ist es nur, wenn zwischen zwei Einträgen eine leere Zeile steht. |
2 Möglichkeiten:
1. Aufpassen, daß sowas nicht vorkommt
2. In einem extra Durchlauf das Grid quasi 'Sortieren' und dabei die Leerzeilen nach hinten schieben.
grayfox - Mi 18.12.02 00:40
wieso sollte das dumm sein?
beim ersten mal findet er die leere zeile mittendrinnen und beim
nächstenmal suchen überspringt er die beschriebene zeile und trägt sich dort ein.
mfg, stefan
grayfox - Mi 18.12.02 00:46
hallo wolff86!
es sollte reichen, wenn die schleife bei zeile nr 1 zum testen beginnt, da in der zeile nr 0 gewöhnlich die überschriften stehen und sie ohnehin eine fixed cell ist :wink:
das grid sortieren ist auch keine schlechte idee - bei einer grossen anzahl von zeilen kann es aber schon etwas zeitintensiv sein. in diesem fall gilt es eben abzuwägen, was sinnvoller ist.
mfg, stefan
Torsten - Mi 18.12.02 00:47
Moinsen!
@Wolff68
Naja, sortieren darf nicht sein. Aber so war zunächst auch meine Idee. Mal schauen, was sich da machen lässt.
@grayfox
Und wenn es drei oder x Zeilen gibt, zwischen denen eine oder mehrere leere Zeilen sind? So wie Du hätte ich es auch gemacht. Doch so ermittle ich nicht die erste leere Zeile nach der letzten vollen Zeile.
Anscheinend muss ich es wirklich so einrichten, dass Leerzeilen nicht erlaubt sind.
Grüße
Torsten
Torsten - Mi 18.12.02 00:54
So, ich noch mal.
In die erste leere Zeile eintragen, auch wenn noch eine Zeile folgt, dürfte ausreichen.
Werde mich jedenfalls dazu durchringen.
Grüße
Torsten
grayfox - Mi 18.12.02 00:57
@torsten
| Zitat: |
Und wenn es drei oder x Zeilen gibt, zwischen denen eine oder mehrere leere Zeilen sind?
|
dann ist es auch kein problem, da du ja jedesmal bevor du was ins grid einträgst, eine leere zeile suchst. klar? :wink:
mfg, stefan
Torsten - Mi 18.12.02 01:02
Jaja, schon klar.
Aber das war nicht die gesuchte Lösung. Somit trägt man in die erste gefunden leere Zeile ein. Ist ja im Prinzip auch ok.
Doch ich meinte die erste leere Zeile nach der letzten vollen Zeile.
Ist aber egal, habe mich nun umentschieden.
Grüße
Torsten
grayfox - Mi 18.12.02 01:08
| Zitat: |
| Doch ich meinte die erste leere Zeile nach der letzten vollen Zeile. |
dann dreh die schleife um und beginn bei rowcount-1 nach einer leeren zelle zu suchen - dann bist immer in der ersten freie zeile am schluss :wink:
mfg, stefan
Torsten - Mi 18.12.02 01:29
;)
Gute Idee.
Damit bekomme ich die erste leere Zeile von unten gesehen. Also wahrscheinlich die letzte Zeile.
Die Idee ansich ist aber nicht übel.
Ich kann ja von unten die erste volle Zeile suchen. Nehme den Kram -1 und habe die gewünschte Zeile (solange es zuvor nicht die letzte Zeile war).
Grüße
Torsten
grayfox - Mi 18.12.02 01:39
oops...
| Zitat: |
... beginn nach der ersten nichtleeren zeile von unten zu suchen... |
hätts werden sollen :oops: naja, die hektik! :))
na hoffentlich sind jetzt alle unklarheiten beseitigt! *g*
mfg, stefan
Wolff68 - Mi 18.12.02 21:08
Meld mich nochma wegen dem Sortieren.
- Ist hier die Rede von gerade mal 50 Zeilen.
- Meinte ich nicht richtig sortieren. Deshalb auch "quasi Sortieren" Ich dachte eher daran einen Sortieralgorithmus entsprechend anzupassen. Du suchst einfach eine leere Zeile und schiebst sie nachhinten. Oder man liest die Zeilen durch und setzt sich einen Integer FirstLeer auf die erste leere Zeile. Wenn man dann bei weiterem lesen auf eine gefüllte stößt, setzt man den Ihnalt in die leere Zeile und macht ein Inc(FirsLeer). Sollte eigentlich relativ schnell gehen.
Am besten ist natürlich wie gesagt gleich zu verhindern, daß Lücken entstehen.
Torsten - Mi 18.12.02 21:10
Moinsen!
Besten Dank für die Antwort.
Sehr scön, so kann man es natürlich auch machen. Ich werde aber verhindern, dass man Zeilen überspringen kann.
Grüße
Torsten
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!