![]() |
Nach Close von Form2 eine Funktion ausführen
Hallöchen!
Ich besitze, wie es auch in meinem Profil zu erkennen ist, Delphi 2010! Also, folgende Frage: Ich habe eine MainForm und eine Form2... Bei dieser Form2 werden durch einen Knopfdruck Einstellungen in einer *ini gespeichert! Wenn man Form2 schließt, dann soll Form1 jetzt noch einmal die *ini auslesen.. Wie funktioniert das denn? Mit dem Form Close Event hat das bei mir nicht funktioniert! (Weiß ja noch nicht einmal im annähesten, wie es geht! ^^) Bitte um Hilfe und um Korrektur von falschen Ausdrücken! ^^ Mfg DarkItachi |
Re: Nach Close von Form2 eine Funktion ausführen
Hallo und willkommen in der DP :dp:
Wird Form2 modal oder normal geöffnet ? Zeig mal den Code, der bei dir nicht funktioniert. :hi: |
Re: Nach Close von Form2 eine Funktion ausführen
Liste der Anhänge anzeigen (Anzahl: 1)
Habe das jetzt nochmal ganz schnell neu aufgebaut um nicht mein ganzen SOurce rauszugeben! ^^ (Arbeite schon ein paar Wochen daran!)
Ist sehr umständlich und sogar unordentlich aufgebaut! Bitte nicht lachen! ^^ Projekt im Anhang! :!: €D1T: Ich merke gerade, dass das noch nicht einmal funktioniert! OMG |
Re: Nach Close von Form2 eine Funktion ausführen
Zitat:
Delphi-Quellcode:
arbeiten. Oder habe ich das was falsch verstanden!?!
[...]
procedure TForm1.SpeedButton1Click(Sender: TObject); begin Form2.ShowModal; LiesINIDateiEin; // Prozedur aufrufen End; [...] //EDIT: 1. Und nicht vergessen, den Speicher wieder freizugeben!!! (INI.Free in Deinem Beispiel) 2. Vermeide Globale Variablen :) |
Re: Nach Close von Form2 eine Funktion ausführen
Hier mal ein Beispiel, wie ich das machen würde:
Delphi-Quellcode:
Bei mehreren Einzulesenden Dingen natürlich nicht als Funktion mit Rückgabe sondern als Prozedur, welche Variablen den Werten zuweist. Aber soll ja nur mal die Funktionsweise demonstrieren...
[...]
type TForm1 = class(TForm) SpeedButton1: TSpeedButton; PageControl1: TPageControl; TabSheet1: TTabSheet; TabSheet2: TTabSheet; function ReadINI(Datei : String) : Integer; procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; [...] procedure TForm1.FormCreate(Sender: TObject); VAR DesignNo : Integer; begin DesignNo := ReadINI(ExtractFilePath(ParamStr(0))+'settings.ini'); if DesignNo = -1 then ShowMessage('Design nicht gefunden!') else ShowMessage('Design Nr. ' + IntToStr(DesignNo) + ' ist aktiv!'); end; function TForm1.ReadINI(Datei : String) : Integer; var MeinINIFile : TIniFile; begin Try MeinINIFile := TIniFile.Create(Datei); result := MeinINIFile.ReadInteger('Configure', 'Design', -1); Finally MeinINIFile.Free; End; end; [...] Die INI-Datei sehe dann so aus: ============ SCHNIPP ============== [Configure] Design=4 ============ SCHNAPP =============== Grüße SCRaT |
Re: Nach Close von Form2 eine Funktion ausführen
Ok danke dass sich dir Leute soviel Mühe geben, anderen Leuten zu helfen!^^
Werde das mit der eigenen Procedure jetzt erstmal probieren! Nochmal eine Frage: Was ist an globalen Variablen schlimm? Verbrauchen dir mehr Speicher oder verhindern die bestimmte Möglichkeiten? Thx! Ps.: Ich habe kein Informatik Unterricht und habe mir bis jetzt alles selber beigebracht! ^^ (Alles über Google!! ^^) Das ist meine erste Forenanfrage! ^^ €d1T: Danke für den Beispiel Code! Mal sehn' was ich gelernt habe!^^ |
Re: Nach Close von Form2 eine Funktion ausführen
Zu den globen Variablen siehe hier :
![]() Dass du Dir das ganz alleine beigebracht hast, schonmal gut ( Ich habe mir es vor vielen Jahren an einem (Damals noch TP 7.0) großen Source meines Schulkameraden beigebracht )! Ich überlege gerade, warum Du Dir dann gleich D2010 Enterprise kaufst ( möchte ja jetzt nichts unterstellen.... :oops: ) Klar, wir helfen immer wieder gerne, vor allem bei entsprechender Eigeninitiative! Viel Spaß weiterhin beim Programmieren... |
Re: Nach Close von Form2 eine Funktion ausführen
Zitat:
Ist nicht gekauft... ^^ Mein Vater arbeitet bei privater Firma Wir kriegen wirklich voll viel umsonst (die Firma bezahlt das ja, aber trotzdem! :thumb: ) Mein Vater wollte mir Delphi 2010 eigentlich nicht geben aber da ich das unbedingt wollte, ging das schon! Zuerst hatte ich mit Delphi 7 einen MessageBox Editor gemacht! ^^ (mithilfe von google mal wieder! ^^) Nun zum Thema: Wie soll ich das nun in einer Ini Datei schreiben? Etwa so: (?) ini.WriteInteger('Configure','Design',1) für tsButtons? Thx so far |
Re: Nach Close von Form2 eine Funktion ausführen
Ist ja schon gut :) :cheers:
Ja, mit dem Befehl schreibst Du das in die INI-Datei rein. Zuvor aber wieder INI-Datei erstellen, dann schreiben und zum Schluss Speicher freigeben. SCRaT |
Re: Nach Close von Form2 eine Funktion ausführen
Danke Ey!!!
Ich habs hinbekommen! Soviel Hilfe und dann so langsam kapiert! Zwei Sachen weiß ich noch nicht:^^ 1. Zitat:
2. Wie kann ich eine Funktion von Form2 beim Schließen ausführen lassen? Also wo muss man das einfügen? (die function) Thx4All Ein wahrer Support! |
Re: Nach Close von Form2 eine Funktion ausführen
Zitat:
Wenn man ein Projekt startet, sollte man schon im Vorhinein wissen, wo welcher Code stehen soll und wann was geladen werden soll. Wenn man nach und nach (immer wenn was neues kommt) alles ins FormCreate oder FormShow - Ereignis packt, wird die Anwendung sehr schnell sehr langsam. |
Re: Nach Close von Form2 eine Funktion ausführen
Jop hab ich jetzt auch so gemacht! ^^
UND das mit dem Fenster schließen brauch ich nicht mehr, weil ich das direkt per function in den SaveButton reingeschnippselt habe! ^^ Währe nett, wenn jemand mir noch das hier erklären würde: DesignNo := ReadINI(ExtractFilePath(ParamStr(0))+'settings.ini '); Danke! Ansonsten kann das Thema geschlossen werden!^^ |
Re: Nach Close von Form2 eine Funktion ausführen
Zitat:
Zusammengefasst: 1. Einer Variable kann man einen Wert direkt zuweisen z.B. mittels VarName := 5; (VarName sei ein Integer) 2. Einer Varialbe kann man aber auch einen Rückgabewert einer Funktion zuweisen z.B. VarName := FunktionDieIntZurueckgibt(blablabla); Willst Du noch wissen was ExtractFilePath und ParamStr(x) macht, bemühe mal die Hilfe. Erstetes gibt von einer Datei (z.B. d:\test\datei123.txt) den Pfad (d:\test\) zurück, ParamStr(0) Gibt den EXE-Name der Anwendung zurück (inkl. Pfad). Also wird hier der Pfad der Anwendung zurückgegeben und dann noch der string "settings.ini". In diesem Fall also "d:\test\settings.ini". SCRaT |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:36 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 by Thomas Breitkreuz