Autor Beitrag
Torsten
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 160



BeitragVerfasst: Di 17.12.02 19:36 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 160



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 302
Erhaltene Danke: 1

WinXP home
D6 Prof
BeitragVerfasst: 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.

_________________
"Der Mensch ist nicht was er sich vorstellt oder wünscht zu sein, sondern das was andere in ihm sehen."
grayfox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: 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


Zuletzt bearbeitet von grayfox am Mi 18.12.02 00:48, insgesamt 1-mal bearbeitet
Torsten Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 160



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 160



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 160



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 160



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 302
Erhaltene Danke: 1

WinXP home
D6 Prof
BeitragVerfasst: Mi 18.12.02 21:08 
Meld mich nochma wegen dem Sortieren.

  1. Ist hier die Rede von gerade mal 50 Zeilen.
  2. 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.

_________________
"Der Mensch ist nicht was er sich vorstellt oder wünscht zu sein, sondern das was andere in ihm sehen."
Torsten Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 160



BeitragVerfasst: 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