Autor Beitrag
Tom.Schröder
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33



BeitragVerfasst: Do 02.08.07 10:25 
Hallo,

in einem Adressprogramm benutze ich ein Records TPerson in welchen alle möglichen Daten sehen.
Zum schöneren angucken habe ich eine formBenutzer.

Wähle ich in meinem Hauptprogramm einen in der ListBox stehenden Benutzer, öffnet sich die zweite Form und die Daten stehen wie gewünscht darin.

formBenutzer beinhaltet lediglich Editfelder, in welchen die Daten angezeigt werden.
Jetzt hab ich in meinem Hauptprogramm neben der ListBox 2 Buttons: Neu und Bearbeiten.
Kann ich formBenutzer unterschiedlich verwenden, abhängig davon welcher Button es geöffnet hat?
Sprich, einmal die Eingabefelder leer um ein neuen Datensatz einzutragen, einmal mit gesperrten Editfeldern und Anzeige des gewünschten Datensatzes und einmal den Datensatz anzeigen, allerdings die Editfelder umschreibbar lassen, so dass der ausgewählte Datensatz aus der ListBox verändert wird?

Wo und wie kann ich effektiv gucken über (Sender as TButton nehme ich an, bzw TListBox) um herauszufinden wofür das Form genutzt werden soll und die Datenhin und hertauschen?


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
type
  TPersonForm = class(TForm)
    editVorname: TEdit;
    editNachname: TEdit;
    editKommentar: TMemo;
    btnSpeichern: TButton;
    procedure btnAGFormSpeichernClick(Sender: TObject);


Sprich der btnSpeichern soll jenachdem wie das Fenster aufgerufen wurde: ein neuen TBenutzer zurückgeben können, einen bestehenden TBenutzer verändern oder garnichts tun und das Anzeigefenster schließen.

Beispiel-Code wird nicht benötigt, nur ein Ideenansatz, stehe mit beiden Füßen aufm Schlauch :-)

MfG
Tom Schröder
Aachen
Regan
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Do 02.08.07 11:12 
Also ich würde an deiner Stelle zwei proceduren auf der formbenutzer deklarieren. Diese stellst du dann in den public-teil. Die eine procedure leert die Edit-felder, die andere füllt sie. An diese proceduren (vor allem aber die zweite) kannst du auch Parameter übergeben, z.b. eben dein record-feld.
Tom.Schröder Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33



BeitragVerfasst: Do 02.08.07 11:16 
Autsch... dass ich darauf nicht selber gekommen bin!
Wie war das mit dem Wald und den Bäumen? Klar...

Danke für den Tipp! :-)
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 02.08.07 14:12 
Außerdem kannst du ein Flag übergeben, das dir in dem Anzeigeformular sagt, ob gerade editiert oder neu erstellt wird, damit dort dementsprechend der Knopf zum Speichern vielleicht einmal "Änderungen speichern" und einmal "Mit diesen Daten neu anlegen" oder so ähnlich beschriftet ist und so funktioniert.

Bei mir ist es zudem so, das bestimmte Felder nur beim Neuanlegen geändert werden können, auch das läuft bei mir über Flags.