Autor |
Beitrag |
Morpheus1572
      
Beiträge: 157
Win XP
Delphi 7
|
Verfasst: 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 Narses: Topic aus Sonstiges (Delphi) verschoben am So 15.03.2009 um 13:34
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 15.03.09 14:19
|
|
freak4fun
      
Beiträge: 604
Erhaltene Danke: 4
Win 7 Pro
VS 2013 Express, Delphi, C#, PHP, Java
|
Verfasst: 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
      
Beiträge: 573
WIN XP/2000 & 7Prof (Familie:Win95,Win98)
|
Verfasst: 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
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 15.03.09 15:27
ffgorcky hat folgendes geschrieben : | 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 
      
Beiträge: 157
Win XP
Delphi 7
|
Verfasst: 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
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 15.03.09 16:56
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 
      
Beiträge: 157
Win XP
Delphi 7
|
Verfasst: 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
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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 
      
Beiträge: 157
Win XP
Delphi 7
|
Verfasst: So 15.03.09 18:12
oki.
hiermit:
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:
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:
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 
      
Beiträge: 157
Win XP
Delphi 7
|
Verfasst: 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...
...bleibt nur noch das andere problem jaenicke.... 
|
|