AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Assistent-Probleme

Ein Thema von Dunkelbunt27 · begonnen am 15. Feb 2011 · letzter Beitrag vom 16. Feb 2011
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Dunkelbunt27
Dunkelbunt27

Registriert seit: 10. Aug 2010
232 Beiträge
 
Delphi XE Professional
 
#1

Assistent-Probleme

  Alt 15. Feb 2011, 17:27
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
  Mit Zitat antworten Zitat
WM_CLOSE

Registriert seit: 12. Mai 2010
Ort: königsbronn
398 Beiträge
 
RAD-Studio 2009 Pro
 
#2

AW: Assistent-Probleme

  Alt 15. Feb 2011, 17:53
Ich hätte folgenden Vorschlag:
Öffne den Quelltext des Projektes: Projekt->Quelltext anzeigen

Jetzt trage vor dem CreateForm -Aufruf deines Hauptformulares folgendes ein:
Delphi-Quellcode:
  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;
Dann gehst du in die OnClick-Methode des "Fortsetzen-Buttons".
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;

Geändert von WM_CLOSE (15. Feb 2011 um 17:56 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Dunkelbunt27
Dunkelbunt27

Registriert seit: 10. Aug 2010
232 Beiträge
 
Delphi XE Professional
 
#3

AW: Assistent-Probleme

  Alt 15. Feb 2011, 18:03
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;

Geändert von Dunkelbunt27 (15. Feb 2011 um 18:08 Uhr)
  Mit Zitat antworten Zitat
WM_CLOSE

Registriert seit: 12. Mai 2010
Ort: königsbronn
398 Beiträge
 
RAD-Studio 2009 Pro
 
#4

AW: Assistent-Probleme

  Alt 15. Feb 2011, 18:07
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 MSDN-Library durchsuchenShellExecute oder MSDN-Library durchsuchenCreateProcess an

Geändert von WM_CLOSE (15. Feb 2011 um 18:09 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Dunkelbunt27
Dunkelbunt27

Registriert seit: 10. Aug 2010
232 Beiträge
 
Delphi XE Professional
 
#5

AW: Assistent-Probleme

  Alt 15. Feb 2011, 18:08
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...

Geändert von Dunkelbunt27 (15. Feb 2011 um 18:20 Uhr)
  Mit Zitat antworten Zitat
WM_CLOSE

Registriert seit: 12. Mai 2010
Ort: königsbronn
398 Beiträge
 
RAD-Studio 2009 Pro
 
#6

AW: Assistent-Probleme

  Alt 15. Feb 2011, 18:12
[ot]
Das mit dem Bearbeiten hat offensichtlich keinen Sinn
[/ot]

Zitat:
Assistent:=TAssistent.Create(Application); // muss ich Application ersetzen?
try
TAssistent.ShowModal;
finally
TAssistent.Free;
end;
Du solltest

TAssistent.ShowModal; durch Assistent.ShowModal ersetzen, denn du willst ja die Instanz (Assistent)und nicht die Klasse (TAssistent)
  Mit Zitat antworten Zitat
Benutzerbild von Dunkelbunt27
Dunkelbunt27

Registriert seit: 10. Aug 2010
232 Beiträge
 
Delphi XE Professional
 
#7

AW: Assistent-Probleme

  Alt 15. Feb 2011, 18:40
Okay, momentan sieht es so aus:

Projekt-Quelltext
Delphi-Quellcode:
  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;
Fortsetzen Button
Delphi-Quellcode:
 self.ModalResult:=mrOk;
  self.Close;

Abbrechen-Button
ModalResult:=mrCancel Es startet ohne Fehler, aber wnen ich auf Fortsetzen klicke, dann schließt sich der Assistent und öffnet sich erneut...
wie kann ich statt 2x dem Assistenten das Hauptprogramm starten?

Geändert von Dunkelbunt27 (15. Feb 2011 um 19:03 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.163 Beiträge
 
Delphi 12 Athens
 
#8

AW: Assistent-Probleme

  Alt 15. Feb 2011, 18:49
aber wnen ich auf Fortsetzen klicke, dann schließt sich der Assistent und öffnet sich erneut...
wie kann ich statt 2x dem Assistenten das Hauptprogramm starten?
Zitat:
Application.CreateForm(TAssistent, Assistent);
Du startest den Zweiten doch selber. Also beschwer dich blos nicht darüber.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Dunkelbunt27
Dunkelbunt27

Registriert seit: 10. Aug 2010
232 Beiträge
 
Delphi XE Professional
 
#9

AW: Assistent-Probleme

  Alt 15. Feb 2011, 18:59
Ihr seid genial!


für alle dies interessiert:
Delphi-Quellcode:
  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;
Danke!

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 Application.CreateForm(THauptprogramm, Hauptprogramm); erst nach dem Weiterklicken aus?
Das:
Delphi-Quellcode:
  self.ModalResult:= mrOk;
  self.Close;
bewirkt was?
ModalResult:=mrCancel; und was das?

Wäre nett wenn jemand das kurz erläutern könnte =D Danke

Geändert von Dunkelbunt27 (15. Feb 2011 um 19:07 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Assistent-Probleme

  Alt 16. Feb 2011, 07:36
Die Hilfe kann das ja wohl am Besten: http://docwiki.embarcadero.com/VCL/d...Form.ShowModal. Da siehst Du auch, dass das Close nach der Zuweisung von mrCancel nichts bringt, da das Formular sowieso geschlossen wird.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz