Benutzer mit den meisten Antworten
Zellen im Grid auslesen

Frage
-
Hallo zusammen,
ich bräuchte mal wieder eure geschätzte Hilfe.
Ich habe ein Grid mit 10 Spalten. Mit der entsprechenden Logik (und unter Verwendung von ActiveRow, - Column sowie RelativeRow und -Column) funktioniert es recht gut, die richtige Zeile im Grid zu bestimmen.
Wenn ich nun den Wert der ersten Zelle in einer bestimmten Zeile auslesen möchte sieht der Code ungefähr wie folgt aus:
Thisform.Grid1.activatecell(varrow,1)Testvariable1 = Thisform.Grid1.column1.text1.value
In varrow steht ne vernünftige Zeilennummer im sichtbaren Bereich des Grids drin. Soweit so gut. Ich habe nun festgestellt, daß das Auslesen in der Form
Testvarable2 = = Thisform.Grid1.column10.text1.value
nicht automatisch die Zelle in der Zeile 'varrow ' ausliest, sondern immer den Wert von Spalte 10 / Zeile 1. D. h. ich muß auch beim Auslesen der Zelle in Spalte 10 die Anweisung
Thisform.Grid1.activatecell(varrow,10)
angeben.
Stimmt meine Behauptung oder mache ich etwas falsch? Muß ich jedesmal beim Auslesen eine Zelle vom Grid ihre Position durch Grid.Activatecell(r,c) zuerst anwählen?
Viele Grüße
Christoph
Donnerstag, 29. März 2018 12:48
Antworten
-
Das stimt, es gibt eben nicht wirklich N Textboxen pro Zeile, Es gibt wirklich nur eine Textbox pro Gridspalte und die hat nur den aktiven Datensatz geladen. Du kommst über die Grid controls also auch nur an das dem Grid zugrundeleigende Tabelln/View/Cursorfeld des aktiven records. Das Grid malt nur weitere Zeilen, es erzeigt nicht 5-20 Controls je nach Anzahl sichtbarer Zeilen.
Das ganze behandeln des Grids mit ActivateCell und Scroll etc. kann nur der Optik dienen, nie dem Zugriff auf Daten, den regelst Du besser über Zugriff auf die Tabelle selbst.
PS: Das beste für den Zugriff auf eine bestimmte "Zelle" sprich das Feld eines dann leider nicht unbedingt gerade aktiven Datensatzes ist, dahin und wieder zurück zu navigieren, ohne das Grid dabei "aufzuscheuchen" sich entsprechend zu aktualisieren, und fast jedes Event in sich selbst kann das. Bequemer wird es mit tabellenweiser Pufferung, so dass man auch keine automatische Speicherung geänderter Felder/Sätze und damit Insert/Update/Delete Trigger anfeuert, wenn man in den Daten navigiert. Per se kannst Du in jeder Methode und jedem Event alles in der Weise machen, sofern am Schluss der Anfangszustand wiederhergestellt ist, es sei denn Du schießt mit Timern die Refreshs auslösen ein Eigentor. Für die Zeit muss Dein Code Alleinherrscher sein und ist es dank VFPs single threaded Natur auch.
Tschüß, Olaf.
Olaf Doschke - https://www.doschke.name
- Bearbeitet Olaf Doschke Freitag, 30. März 2018 10:17
- Als Antwort markiert CLTBEN Dienstag, 3. April 2018 09:58
Donnerstag, 29. März 2018 15:40
Alle Antworten
-
Das stimt, es gibt eben nicht wirklich N Textboxen pro Zeile, Es gibt wirklich nur eine Textbox pro Gridspalte und die hat nur den aktiven Datensatz geladen. Du kommst über die Grid controls also auch nur an das dem Grid zugrundeleigende Tabelln/View/Cursorfeld des aktiven records. Das Grid malt nur weitere Zeilen, es erzeigt nicht 5-20 Controls je nach Anzahl sichtbarer Zeilen.
Das ganze behandeln des Grids mit ActivateCell und Scroll etc. kann nur der Optik dienen, nie dem Zugriff auf Daten, den regelst Du besser über Zugriff auf die Tabelle selbst.
PS: Das beste für den Zugriff auf eine bestimmte "Zelle" sprich das Feld eines dann leider nicht unbedingt gerade aktiven Datensatzes ist, dahin und wieder zurück zu navigieren, ohne das Grid dabei "aufzuscheuchen" sich entsprechend zu aktualisieren, und fast jedes Event in sich selbst kann das. Bequemer wird es mit tabellenweiser Pufferung, so dass man auch keine automatische Speicherung geänderter Felder/Sätze und damit Insert/Update/Delete Trigger anfeuert, wenn man in den Daten navigiert. Per se kannst Du in jeder Methode und jedem Event alles in der Weise machen, sofern am Schluss der Anfangszustand wiederhergestellt ist, es sei denn Du schießt mit Timern die Refreshs auslösen ein Eigentor. Für die Zeit muss Dein Code Alleinherrscher sein und ist es dank VFPs single threaded Natur auch.
Tschüß, Olaf.
Olaf Doschke - https://www.doschke.name
- Bearbeitet Olaf Doschke Freitag, 30. März 2018 10:17
- Als Antwort markiert CLTBEN Dienstag, 3. April 2018 09:58
Donnerstag, 29. März 2018 15:40