![]() |
Assistent-Probleme
Hallo Delphi-PRAXIS,
zu meinem Programm gibt es einen Assistenten, der als erste Unit fungiert. Man startet also den Assistenten, dann kann man Einstellungen vornehmen und "Fortsetzen" oder Schließen(Rotes X oben rechts). Das Problem ist nun, wenn ich Fortsetzen klicke, soll der Assistent verschwinden und das Hauptprogramm gestartet werden. Das Problem ist, wenn der Assistent geschlossen wird, wird alles geshclossen, auch das Hauptprogramm. Wenn der Assistent alleine geschlossen wird, also bevor man auf "Fortsetzen" klickt und das Hauptprogramm noch gar nicht gezeigt wird, ist das gut so. Es reicht ja leider nicht aus nur den Assistenten unsichtbar zu machen, da er nach Programmschluss immernoch läuft... Hat jemand eine Idee, wie ich beides unabhängig voneinander zeigen (Hauptprogramm.show;) und schließen (...?) kann, bzw. wie man auf die Einstellungen für das Rote X zugreifen kann? FG Dunkelbunt |
AW: Assistent-Probleme
Ich hätte folgenden Vorschlag:
Öffne den Quelltext des Projektes: Projekt->Quelltext anzeigen Jetzt trage vor dem
Delphi-Quellcode:
-Aufruf deines Hauptformulares folgendes ein:
CreateForm
Delphi-Quellcode:
Dann gehst du in die OnClick-Methode des "Fortsetzen-Buttons".
DeinAssistent:=TDeinAssistent.Create(Application);
try DeinAssistent.Parent:=Application;//<--Die Zeile ist vielleicht Murks - wenn ja dann entfernen DeinAssistent.ShowModal;//showModal liefert zurück mit welchem ModalResult dein Formular geschlossen wurde. finally DeinAssistent.Free; end; Dort trägst du am Ende folgendes ein:
Delphi-Quellcode:
self.ModalResult:=mrOk;//du könntest das abfragen s.oben // im abbrechen button ModalResult:=mrCancel
self.Close; |
AW: Assistent-Probleme
Leider kommt mit dem Vorschlag: "'Hauptprogramm.exe' kann nicht erstellt werden"...
Ich denke du bist davon ausgegangen, dass ich das Ganze in das Hauptprogramm reinschreibe, nicht? Also praktisch vor dem Hauptprogramm dadurch den Assistenten aufrufe, richtig? Ich starte jedenfalls erst den Assistenten.exe der starten dann auf Druck von "Fortsetzen" das Hauptprogramm.exe also Hauptprogramm.show, dann sehen ich beide Programme hintereinander. ... Wenn ich es also in den Assistenten eintrage kommt der besagte Fehler, ich bin noch gar nicht bis zu dme Button vorgedrungen... EDIT1: Ich konnte jetzt eine detailliertere Fehlermeldung bekommen: "Diese Form des Methodenaufrufs ist nur für Klassennmethoden erlaubt..."
Delphi-Quellcode:
Assistent:=TAssistent.Create(Application); // muss ich Application ersetzen?
try TAssistent.ShowModal; finally TAssistent.Free; end; |
AW: Assistent-Probleme
OK: ich glaube ich habe dich falsch verstanden. Du hast also 2 Exen?
Dann Rate ich dir mal nach "Programm starten und auf beenden warten" zu suchen. Ich dachte, du hättest 2 Formulare in einer Anwendung, sorry. Oder soll der Assistent das Hauptprogramm starten? Dann schau dir ![]() ![]() |
AW: Assistent-Probleme
Danke, ich suche, kein Problem =D
EDIT1: Ich habe nun doch nur 1ne Exe, kann also dienen Vorschlag probieren,..... Zum Glück, das andere klang etwas komplizierter... |
AW: Assistent-Probleme
[ot]
Das mit dem Bearbeiten hat offensichtlich keinen Sinn [/ot] Zitat:
Delphi-Quellcode:
durch
TAssistent.ShowModal;
Delphi-Quellcode:
ersetzen, denn du willst ja die Instanz (Assistent)und nicht die Klasse (TAssistent)
Assistent.ShowModal
|
AW: Assistent-Probleme
Okay, momentan sieht es so aus:
Projekt-Quelltext
Delphi-Quellcode:
Fortsetzen Button
Application.Initialize;
Application.MainFormOnTaskbar := True; Assistent:=TAssistent.Create(Application); try Assistent.ShowModal; finally Assistent.Free; end; Application.CreateForm(TAssistent, Assistent); Application.CreateForm(THauptprogramm, Hauptprogramm); Application.Run;
Delphi-Quellcode:
self.ModalResult:=mrOk;
self.Close; Abbrechen-Button
Delphi-Quellcode:
Es startet ohne Fehler, aber wnen ich auf Fortsetzen klicke, dann schließt sich der Assistent und öffnet sich erneut...
ModalResult:=mrCancel
wie kann ich statt 2x dem Assistenten das Hauptprogramm starten? |
AW: Assistent-Probleme
Zitat:
Zitat:
|
AW: Assistent-Probleme
Ihr seid genial!
:dp: für alle dies interessiert:
Delphi-Quellcode:
Danke!
Application.Initialize;
Application.MainFormOnTaskbar := True; Assistent:=TAssistent.Create(Application); try Assistent.ShowModal; finally Assistent.Free; end; //Application.CreateForm(TAssistent, Assistent); Application.CreateForm(TSchreibmaschine, Schreibmaschine); Application.Run; Edit: Bei der Gelegenheit würde ich gerne noch verstehen, was ich eigentlich mache: Es wird also nach dem Initalisieren der Assistent manuel gestartet und dann mit ShowModal gesendet, wenn er geschlossen wird, oder? Löst deshalb
Delphi-Quellcode:
erst nach dem Weiterklicken aus?
Application.CreateForm(THauptprogramm, Hauptprogramm);
Das:
Delphi-Quellcode:
bewirkt was?
self.ModalResult:= mrOk;
self.Close;
Delphi-Quellcode:
und was das?
ModalResult:=mrCancel;
Wäre nett wenn jemand das kurz erläutern könnte =D Danke |
AW: Assistent-Probleme
Die Hilfe kann das ja wohl am Besten:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:06 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