![]() |
OnCreate aus weiterer Form heraus benutzen
Folgendes: Ich habe einmal die THauptform, in der ein OnCreate-Ereignis festgelegt ist.
Nun möchte ich, sobald in TGrundeinstellungen das Fenster per Klick auf den 'OK'-Button geschlossen wird, dass das OnCreate-Ereignis aus der THauptform ausgelöst wird. Ist dies möglich? |
Re: OnCreate aus weiterer Form heraus benutzen
Da du anscheinend nur erreichen willst den Code aus dem OnCreate erneut auszuführen:
Lege dir eine Methode an der den Code aus OnCreate enthält. Diese Methode rufst du nun einmal im OnCreate auf und einmal wenn der Dialog mit ok verlassen wurde/wird. |
Re: OnCreate aus weiterer Form heraus benutzen
Und wie erreiche ich, dass es sich dann auch auf THauptform auswirkt?
Wenn ich das Ganze in das OnClick-Ereignis schreibe, bezieht es sich doch auf TGrundeinstellungen.. |
Re: OnCreate aus weiterer Form heraus benutzen
Hi,
falsch verstanden.
Delphi-Quellcode:
oder an jeder anderen gewünschten stelle deines Codes.
procedure TForm1.MakeChanges;
begin // hier alles was zu tun ist end; procedure TForm1.FormCreate; begin MakeChanges; end; procedure TForm1.Buttonclick; begin Makechanges; end; Gruß oki |
Re: OnCreate aus weiterer Form heraus benutzen
Ah!
Also der Code bleibt in THauptform, dann bindet man diese in TGrundeinstellungen ein und lässt das dann im OnClick-Event ausführen?? /edit: In der Hauptform fuktionierts prima, nur sobald ich diese in TGrundeinstellungen einbeziehen will, sagt er mir, dass er 'GetInfos' nicht kennt..:( |
Re: OnCreate aus weiterer Form heraus benutzen
Hi Svenkan.
Um es strukturiert zu machen ist der Ansatz schon mal richtig. Der Code für die Änderungen wird wie gezeigt in eine eigene Procedure deines Hauptfensters ausgelagert. Der Aufruf im FormCreate erfolgt wie gezeigt. Ich gehe mal davon aus, dass dein Einstellungsfenster modal angezeigt wird. In der Ereignisbehandlung des Buttons zum Öffnen deines Einstellungsfensters machst du folgendes:
Delphi-Quellcode:
In deinem Fenster Grundeinstellungen nimmst du in die Ereignisbehandlung deines OK-Buttons folgendes mit auf:
procedure THauptform.EinstellungButtonClick(Sender : TObject);
begin Grundeinstellungen.ShowModal; // Fenster grundeinstellungen öffnen IF Grundeinstellungen.ModalResult = mrOK then MakeChanges; end;
Delphi-Quellcode:
Wenn du möchtest, dann kannst du für den Abbrechen-Button mrCancel zuweisen. Grundsätzlich geht es darum, dass Du ModalResult als öffentliche Eigenschaft je nach Aktion den passenden Wert zu weist. Öffentliche Eigenschaften deines Einstellungsfensters kannst du dann abrufen und auswerten (siehe Bsp.).
ModalResult := mrOK;
Gruß Oki |
Re: OnCreate aus weiterer Form heraus benutzen
Hey Oki!
Danke für deinen Tipp! Leider funktioniert es nicht, sprich: Beim Schließen per Klick auf OK, führt er es nicht aus. :( |
Re: OnCreate aus weiterer Form heraus benutzen
Zitat:
|
Re: OnCreate aus weiterer Form heraus benutzen
Zitat:
|
Re: OnCreate aus weiterer Form heraus benutzen
Poste mal den Code aus deinem OK-button.
|
Re: OnCreate aus weiterer Form heraus benutzen
Ist aber nicht ganz aufgeräumt. ^^
Da mein Öffnungs-Code etwas abweicht:
Delphi-Quellcode:
Und hier OK-Button:
procedure THauptform.Grundeinstellungen1Click(Sender: TObject);
begin ShowGeneralSettings; if Grundeinstellungen.ModalResult = mrOK then Datenneuladen1.OnClick(Datenneuladen1); end;
Delphi-Quellcode:
procedure TGrundeinstellungen.BitBtn2Click(Sender: TObject);
var Ini: TIniFile; sj: String; begin if CbSchuljahr.ItemIndex=0 then sj:='06_07.dbf' else if CbSchuljahr.ItemIndex=1 then sj:='07_08.dbf' else if CbSchuljahr.ItemIndex=2 then sj:='08_09.dbf'; try Ini:=TIniFile.Create(ExtractFilePath(ParamStr(0))+'conf.ini'); Ini.WriteString('Grundeinstellungen','sVP-Pfad',EdPath.text); Ini.WriteString('Grundeinstellungen','sVP-Schuljahr',sj); Ini.WriteBool('Grundeinstellungen','HTML-Plan übertragen',CBHTML.Checked); if RB1.Checked=TRUE then Ini.WriteInteger('Grundeinstellungen','Zeitraum HTML-Übertragung',900) else if RB2.Checked=TRUE then Ini.WriteInteger('Grundeinstellungen','Zeitraum HTML-Übertragung',3600) else if RB3.Checked=TRUE then Ini.WriteInteger('Grundeinstellungen','Zeitraum HTML-Übertragung',(StrToInt(Edit1.Text)*60)); Ini.WriteBool('Grundeinstellungen','Tageskopie erstellen',CBCopy.Checked); Ini.WriteBool('Grundeinstellungen','Lehrerplan hochladen',CBLehrerplan.Checked); if RBSortOrder1.Checked=TRUE then Ini.WriteString('Sortierung','HTML-Plan','S') else Ini.WriteString('Sortierung','HTML-Plan','KLASSEN'); Ini.WriteBool('Grundeinstellungen','höher als Build 3',RBV4.Checked); Ini.WriteBool('Grundeinstellungen','Klassenbänder',RBAll.Checked); finally Ini.Free; end; ModalResult := mrOK; //ShowMessage('Bitte starten Sie das Programm neu, damit die Änderungen wirksam werden!'); end; |
Re: OnCreate aus weiterer Form heraus benutzen
Keiner 'ne Idee?
|
Re: OnCreate aus weiterer Form heraus benutzen
Zitat:
|
Re: OnCreate aus weiterer Form heraus benutzen
/edit: OK, nu funktionierts!
Danke. ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:18 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