Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Formalparameter für TForm.create
Ruachel - Fr 27.02.09 15:41
Titel: Formalparameter für TForm.create
Hallo zusammen,
Ich möchte gerne aus meiner Hauptform(frmMain) ein weiteres Formular(frmDetail) aufrufen, dabei aber Parameter übergeben.
Dazu habe ich folgendes gemacht(in vereinfachter Form):
in der aufrufenden unit:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| . . .
procedure TNavigation.LookOutButton22Click(Sender: TObject); var KomponenteEdit:TKomponente_Detail; begin
KomponenteEdit:=TKomponente_Detail.Create(self,'neu','');
KomponenteEdit.Visible:=false; KomponenteEdit.ShowModal;
end; |
in der aufgerufenen unit:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33:
| type TKomponente_Detail = class(TForm) Edit1:TEdit; ButtonSpeichern:TButton procedure ButtonSpeichernClick(Sender: TObject); procedure InsertKomp; public
constructor create(aOwner : tComponent;mode:string;UID:string); virtual; end;
var Komponente_Detail:TKomponente_Detail;
implementation
... constructor myForm.create(AOwner:TComponent,parm:string;UID:string); begin inherited create(AOwner); end;
...
...
procedure TKomponente_Detail.ButtonSpeichernClick(Sender: TObject); begin showmessage(Komponente_Detail.Edit1.Text); end; |
Die Programmierhilfe springt darauf an, der Compiler meckert auch nicht, aber
zur Laufzeit krieg ich eine Access violation, wenn ich auf Buttonspeichern klicke..
Nun der Hintergrund ist, dass ich an einer kleinen Datenbankanwendung (Absolute Database) schreibe und in mein Hauptfenster wie eine Webseite aufgebaut habe.
Also links die Navigation, rechts der Inhalt.
Bei oben angeführtem Konstrukt geht es darum, eine Eingabemaske (modal) für einen Datensatz aufzurufen.
Je nach gedrücktem Button soll entweder eine leere Maske angezeigt werden, oder eine mit bereits gefüllten Werten aus der Datenbank (zum editieren).
Ich habe das mittlerweile mit 2 Globalen Variablen gelöst, finde das aber nicht sehr schön und vermute, dass das Mißlingen auf diesem Weg an meinen mangelnden OOP_Kenntnissen liegt.
Deswegen: Kann mir da wer auf die Sprünge helfen ?
Wäre für Hinweise sehr dankbar.
greetz
Ruachel
Ruachel - Fr 27.02.09 18:01
Hallo,
Das Problem hat sich erledigt.
Nach einer Antwort in einem anderen Forum hab ich den Code nochmal versucht, und
es gab kein Problem mehr...
Ich kann nicht sagen worans lag, vielleicht hatte mein Delphi gestern seine Tage..
EDIT sagt:
Nun, es gab aber doch ein Problem:
Der Aufruf:
Delphi-Quelltext
1:
| showmessage(Komponente_Detail.Edit1.Text); |
geht ins Leere, weil so eine Instanz nicht existiert (Formular wird nicht automatisch erzeugt und der Aufruf aus der Hauptunit erzeugt KomponenteEdit.Edit1.TXT).
Die Programmierhilfe und der Compiler merken das natürlich nicht.
Also so:
Delphi-Quelltext
1:
| showmessage(Edit1.Text); |
eigentlich eine einfache Sache, ich dachte es liegt irgenwie am neuen constructor.
greetz
Ruachel
Xentar - Fr 27.02.09 18:18
Ruachel hat folgendes geschrieben : |
| Ich einer Antwort in einem anderen Forum... |
Wenn du die Frage in mehreren Foren stellst, solltest du das mit angeben, damit sich nicht alle Leute den Kopf zerbrechen, obwohl das Problem (im anderen Forum) schon gelöst wurde...
Ruachel - Fr 27.02.09 20:15
Xentar hat folgendes geschrieben : |
Wenn du die Frage in mehreren Foren stellst, solltest du das mit angeben, damit sich nicht alle Leute den Kopf zerbrechen, obwohl das Problem (im anderen Forum) schon gelöst wurde... |
Deswegen hab ich auch sofort hier den grünen Haken ans Thema gemacht und
die "Lösung" gepostet ;-)
greetz
Ruachel
jaenicke - Fr 27.02.09 20:19
Besser ist es gleich die Crossposts beim Fragen zu verlinken, dann kann man auch selbst schauen, ob das was man schreiben will vielleicht schon an anderer Stelle diskutiert wurde.
In manchen Foren wird dir, wenn du das unterlässt, dein Thema auch gleich ganz geschlossen. Gern gesehen ist es jedenfalls nie, auch wenn hier nicht gleich das Thema geschlossen wird. ;-)
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!