![]() |
StrinGrid (goRowSelect) zelleneintrag in ein form laden
Ich habe eine Tabelle, die nur Zeilenweise markiert werden kann. in einem anderen formular werden daten in edit-felder eingetrage und in die tabelle auf dem mainform übertragen. für jeden eintrag schreibt er eine neue zeile. wenn man einen bestehenden eintrag auf rechtsklick(popup-menu) "Eintrag bearbeiten" klickt, soll das eingabe-formular wieder aufgerufen werden und dort wieder die entsprchenden daten der angeklickten zeile wieder in die edit-felder geschrieben werden. hintergrund ist, die bereits erstellten einträge zu ändern und wieder in die tabelle zu übernehmen.
uff Irgentwelche vorschläge? Grüße, dopeline |
Hi,
wie währe es denn damit ???
Code:
ungetestet ..., sollte aber so gehen
// Holt die Daten aus der 2. !!! Spalte des Stringgrids in der ausgewälten
// Reiche in das Edit edit1.text :=Stringgrid1.Rows[Stringgrid1.Row].Strings[1]; Gruß Neo PS: Mit 17 Delphi 7.0 Enterprise.... Ihr seid bestimmt ganz schlimm reich :lol: |
das funktioniert schon mal! wenn ich die erste zeile markiere und auf den button klicke, steht in dem editfeld der string (zeile 1 spalte 2)
aber wie veralgemeinere ich das (das es mit allen spalten (und allen editfelder(es sind mehrere>> name, adresse, telefon...) klappt)? |
hat sich schon erledigt! hab es gefunden:
Code:
Trotzdem DANKE!!!
FormNeuerEintrag.EditName.Text :=Stringgrid1.Rows[Stringgrid1.Row].Strings[0];
FormNeuerEintrag.EditTelefon.Text :=Stringgrid1.Rows[Stringgrid1.Row].Strings[1]; FormNeuerEintrag.EditAdresse.Text :=Stringgrid1.Rows[Stringgrid1.Row].Strings[2]; FormNeuerEintrag.EditMobil.Text :=Stringgrid1.Rows[Stringgrid1.Row].Strings[3]; FormNeuerEintrag.EditMail.Text :=Stringgrid1.Rows[Stringgrid1.Row].Strings[4]; Gruß, dopeline :dancer: |
achso, da ist aber noch eine sache:
wenn ich das bearbeiten-fenster öffne, den eintrag bearbeie und wieder abspeichere, denkt er es sei ein neuer eintrag und erstellt auch einen neuen(neue zeile in der tabelle) :( |
Hi,
das wirst du wohl gar nicht können, da du deine Edit-Felder nicht in einem Array hast.. Die Spalten sind ja nicht das Problem, die kannst du ja in einer for-Schleife durchlaufen. Einzige möglichkeit währe die Edit-Felder dynamisch zu generieren und dann Pointer auf die Edits in einem Array zu verwalten. Gruß Neo |
Hallo,
kehr meine Funktion einfach un :
Delphi-Quellcode:
Stringgrid1.Row bezeichnet immer die markierte Zeile.
Stringgrid1.Rows[Stringgrid1.Row].Strings[1]; :=edit1.text;
Gruß Neo |
ja letzteres funktioniert! jetzt noch eine sache:
gibt es eine möglichkeit abzufragen, wiewiele zeilen der tabelle belegt sind? denn wenn ich eine datei lade, und einen eintrag erstelle, fängt er ganz ober an und ersetzt den schon bestehenden in zeile 1. doch eigentlich sollte er gucken "wielviele zeilen sind schon belegt? >> also ist der nächste eintrag zeile:=zeile+1" (iah hab die variable eingesetzt, dass er bei jedem eintrag eine zeile weiter springt) |
Hi,
StringGrid1.Rows ist dein Freund ;-) Um eine Zeile erweitern : StringGrid1.Rows :=StringGrid1.Rows+1; auf letzte Zeile stellen : StringGrid1.Row :=StringGrid1.Rows-1; Gruß Neo |
Wie jetzt belegt? Nicht leere Zeilen oder was?
Mit RowCount kannst Du jedenfalls die Anzahl der Zeilen abrufen. Um auf die letzte Zeile des StringGrids zuzugreifen nimmst Du dann
Delphi-Quellcode:
.
StringGrid1.RowCount - 1
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz