Autor Beitrag
Morpheus1572
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 157

Win XP
Delphi 7
BeitragVerfasst: So 15.03.09 14:04 
Moin,

ich möchte mittels eines Buttons das aktive Form schließen und ein anderes Form öffnen.

ich dachte mir, ich "verknüpfe" den Button mit der Procedure FormClose(Sender: TObject; var Action: TCloseAction), daran scheitere ich jedoch schon, weil mir nicht klar ist, wie ich diese Procedure anspreche.

und wie kann ich dann das andere form öffnen?

Gruß Morph.


Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am So 15.03.2009 um 13:34
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 15.03.09 14:19 
user profile iconMorpheus1572 hat folgendes geschrieben Zum zitierten Posting springen:
ich dachte mir, ich "verknüpfe" den Button mit der Procedure FormClose(Sender: TObject; var Action: TCloseAction), daran scheitere ich jedoch schon, weil mir nicht klar ist, wie ich diese Procedure anspreche.
ausblenden Delphi-Quelltext
1:
Close;					
Dein FormClose ist die Ereignisbehandlungsroutine, in der du Aktionen durchführen kannst als Reaktion auf das Schließen des Fensters.

Wenn es sich um das Hauptfenster handelt, schließt du damit das gesamte Programm.

Es gibt auch Hide und Show / ShowModal.

user profile iconMorpheus1572 hat folgendes geschrieben Zum zitierten Posting springen:
und wie kann ich dann das andere form öffnen?
ausblenden Delphi-Quelltext
1:
2:
3:
4:
FormX.Show;
//oder 
FormX.ShowModal;
// je nachdem was du möchtest
freak4fun
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 604
Erhaltene Danke: 4

Win 7 Pro
VS 2013 Express, Delphi, C#, PHP, Java
BeitragVerfasst: So 15.03.09 14:21 
Genau. Kannst du kurz darlegen, warum du das Hauptformular scjließen willst?

_________________
"Ich werde auf GAR KEINEN Fall…!" - "Keks?" - "Okay, ich tu's."
i++; // zaehler i um 1 erhoehen
ffgorcky
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 573

WIN XP/2000 & 7Prof (Familie:Win95,Win98)

BeitragVerfasst: So 15.03.09 15:25 
Hallo Morpheus,

also erst mal würde ich auf den Button auf dem Formular doppelklicken,
dadurch erscheint dann die Prozedur ButtonOnClick(Sender: TObject).
Dort brauchst Du dann nur noch "Form1.Close();"(ohne die Hochkommas) eingeben um das Fenster - also in dem Fall sogar das Programm - in der Laufzeit zu schließen/beenden.

Aber - wie schon von den anderen aufgeführt - wenn Du das Hauptfenster schließt, beendest Du die ganze Anwendung!
Also würde ich empfehlen, dass Du dann lieber zwei Panels übereinander anlegst (worauf Du Deine Komponenten platzierst) und dann das obere je nach Anforderung (un-)sichtbar machst.


Zuletzt bearbeitet von ffgorcky am So 15.03.09 16:05, insgesamt 2-mal bearbeitet
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 15.03.09 15:27 
user profile iconffgorcky hat folgendes geschrieben Zum zitierten Posting springen:
Dort brauchst Du dann nur noch "Form1.Close(Sender);" (ohne die Hochkommas) eingeben
Close hat keine Parameter und im Formular selbst Form1. zu benutzen ist keine gute Idee, weil sich das dann auf die Instanz in der Variable statt immer auf die eigene Instanz bezieht...
Morpheus1572 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 157

Win XP
Delphi 7
BeitragVerfasst: So 15.03.09 16:28 
okay. ich habe mich wohl falsch ausgedrückt.

ich will nicht das form1 schließen!!!!!

ich möchte mittels eines buttons (aus dem aktuellen kindfensterder) mich automatisch in ein anderes kindfenster hineinbeamen. das aktuelle kindfenster (form2) soll sich also ersatzlos schließen und das andere Kindfenster (form3) öffnen..

Morph.

@jaenicke: darf ich dich speziell noch mal bitten auf folgenden link zu sehen? www.delphi-forum.de/....php?p=553901#553901
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 15.03.09 16:56 
ausblenden Delphi-Quelltext
1:
2:
3:
Form2.Close;
Form3 := TForm3.Create(Application.MainForm);
Form3.Show;
Und in OnClose kannst du mit Action := caFree; das Fenster auch freigeben beim Schließen.
Morpheus1572 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 157

Win XP
Delphi 7
BeitragVerfasst: So 15.03.09 17:15 
funzt soweit nur...

wenn ich das so umsetze geht er auch in das neue form. er macht das form.create korrekt und auch geht auch in das form.show. dort rufe ich eine procedure zum füllen von dbgrids auf. davor habe ich zur kontrolle - wie weit er geht - ein showmessage. das zeigt er mir noch an. aber sobald ich ok drücke bekomme ich nen abstrakten fehler.

was mache ich falsch?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 15.03.09 17:49 
Dann erstellst du eine Instanz einer Klasse, die abstrakte (nicht implementierte) Teile (Prozeduren, Funktionen) enthält. Ein Beispiel wäre, wenn du TStrings direkt benutzt statt TStringList.

Ohne mehr Code kann ich aber natürlich nichts genaueres sagen.
Morpheus1572 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 157

Win XP
Delphi 7
BeitragVerfasst: So 15.03.09 18:12 
oki.

hiermit:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure THauptformular.Tourenplanung(Sender: TObject);
begin
  Panel1.Visible:=false;       <--- ausblenden weil teilweise sichtbar wenn child drüber liegt, warum weis ich nicht
  bearbeiten1.Enabled:=true;   <--- Menüeintrag wird wieder sichtbar gemacht (noch alte version)
  Tourenplan.Enabled:=false;   <--- Menüeintrag wird ausgegraut (noch alte verion)
  TForm8.Create(Self);         <--- ich rufe das KindFenster Form8 auf
end;

rufe ich vom Form8 auf.

in Form8 existiert ein button3, der wie gesagt das Form8 schließen soll und Form3 öffnen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm8.Button3Click(Sender: TObject);
begin
  Close;                       <--- schließt wohl das Form8
Form3 := TForm3.Create(Application.MainForm);    <--- ist von dir übernommen
Form3.Show;                                      <--- ist von dir übernommen
end;


in der OnClose-Geschichte von Form8 steht folgendes:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm8.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;            <--- Schließt das Form und gibt es wieder frei
  Hauptformular.Panel1.Visible:=true;        <--- macht mir das Panel1 des Hauptformulares wider sichtbar
  Hauptformular.Tourenplan.Enabled:=True;    <--- aktiviert wieder den Menüpunkt für das Form8
end;


wenn ich das genau so lasse bekomme ich mittlerweile keine fehlermeldung mehr (nachdem ich das ShowMessage entfernt habe) ABER:
ich sehe mein Haupformular und sonst nichts. darüber hinaus habe ich nun noch in der grauen leiste unter der eigentlichen Menüleiste auch wieder die zeichen "Minimieren" "Maximieren" und das x. demnach gehe ich davon aus, dass ein kindfenster aufgebaut ist. aber ich sehe es nicht...
Morpheus1572 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 157

Win XP
Delphi 7
BeitragVerfasst: So 15.03.09 18:18 
okay okay okay.

je öfter ich meinen text von eben durchgelesen habe, hat es bei mir geleuchtet!!!

es lag an der art und weise, wann ich mein panel1 ausblende. ich habe es immer nur beim verlassen vom Hauptformular unsichtbar gemacht.

den befehl einfach ins formcreat des nächsten forms verschoben und schon wird alles sichtbar... :oops: :roll: :roll: :oops:


...bleibt nur noch das andere problem jaenicke.... :lol: