ERLEDIGT
NEIN
NEIN
ANTWORTEN
6
6
ZUGRIFFE
547
547
EMPFEHLEN
-
04.12.06 22:54 #1
- Registriert seit
- Jan 2005
- Beiträge
- 60
Hab ma wieder ein Riesen-Problem.
Nun bin ich fix und fertig mit den Nerven.
Also ich habe ein Button der sitzt im Form1.
Wenn man nun den Button betätigt öffnet sich ein 2tes Fenster,
in diesem 2ten Fenster befindet sich wiederum ein Button,
dieser soll das Fenster wieder schliessen.
Und genau da weiß ich nix weiter.
Wäre schön wenn jemand weiß wie man das 2te über den Button "Close" wieder schliest, und man dann ganz normal weiterarbeiten kann.
Hier ma der Code:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
__fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner) { TButton* Button; Button=new TButton(this); Button->Parent=(this); Button->Caption=AnsiString("OPEN"); Button->Name= "BTN"; Button->Top= 15; Button->Left=20; Button->Width=50; Button->OnClick = Zeige_Fenster2; } void __fastcall TForm1::Zeige_Fenster2(TObject *Sender) //Declaration in der Klasse TForm1 { TForm *Fenster; Fenster = new TForm(this); Fenster->Caption = "sss"; Fenster->Name = "MEIN_FESNTER"; Fenster->Width = 345; Fenster->Position = poMainFormCenter; Fenster->BorderStyle = bsNone; Fenster->Color = clRed; TButton* Button; Button=new TButton(this); Button->Parent=Fenster; Button->Caption=AnsiString("Close"); Button->Name= "BTN_2"; Button->Top= 10; Button->Left=10; Button->Width=50; Fenster->ShowModal(); ShowMessage("Alles Pallett"); delete Button; delete Fenster; }
-
05.12.06 01:03 #2
- Registriert seit
- Jan 2005
- Beiträge
- 60
Ok, So gehts !
Bin natürlich noch an weiteren Lösungen interessiert.Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
__fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner) { TButton* Button; Button=new TButton(this); Button->Parent=(this); Button->Caption=AnsiString("OPEN"); Button->Name= "BTN"; Button->Top= 15; Button->Left=20; Button->Width=50; Button->OnClick = Zeige_Fenster2; } void __fastcall TForm1::Zeige_Fenster2(TObject *Sender) //Declaration in der Klasse TForm1 { TForm *Fenster; Fenster = new TForm(this); Fenster->Caption = "Info"; Fenster->Name = "MEIN_FESNTER"; Fenster->Width = 345; Fenster->Position = poMainFormCenter; Fenster->BorderStyle = bsNone; Fenster->Color = clRed; TButton* Button; Button=new TButton(this); Button->Parent=Fenster; Button->Caption=AnsiString("Close"); Button->Name= "BTN_2"; Button->Top= 10; Button->Left=10; Button->Width=50; Button->OnClick = ENDE; Fenster->ShowModal(); delete Button; delete Fenster; } void __fastcall TForm1::ENDE(TObject *Sender) { HWND W; W = GetActiveWindow(); PostMessage(W, WM_CLOSE, 0,0); }
-
Hallo,
Wäre es nicht einfacher beide Forms gleich zu Beginn zu erstellen und nicht während der Laufzeit?
Da kannst du auf Form2 auch Buttons und Edit-Felder plazieren ohne alles mit new erstellen zu müssen.
Ist meiner Meinung nach geringerer Aufwand.
Während der Laufzeit schaltest du nur die Sichtbarkeiten um...
Dein Schliessen Button im Form2 sieht dann einfach so aus.
Hat meiner meinung nach den selben Effekt, ist aber einfacher.Code :1
Form2->Visible = false;
MfG Turri
-
05.12.06 11:47 #4
- Registriert seit
- Jan 2005
- Beiträge
- 60
Wichtig war mit das ich zur Laufzeit das Fenster erstelle und auch in dem Fenster der Button zur Laufzeit erstellt wird. Dieses dann irgendwie über diesen Button wieder schliesse.
Was ich wirklich will ist folgendes:
- Ein TPanel in den Vordergrund bringen
- Dieses TPanel soll dann wie ein Fenster wirken
- Schwierigkeit: TPanel soll ShowModal() sein
So und genau deswegen brauche ich dafür ein Fenster.
Oder es gibt jemanden der weiß wie es ohne Fenster geht.
Nach meiner Methode:
Bei meinem Beispiel kommt also ein TPanel in das Fenster2,
Das TPanel wird vor Laufzeit komplett erstellt.
Das TPanel wird erst zur Laufzeit auf dieses Fenster2 gesetzt.
Das TPanel wirkt dabei wie ein Fenster, und das wollte ich haben.
Klar kann man das auch alles vor Laufzeit erstellen, aber genau das wollte ich nicht haben. Noch ein Formular und Noch eins und Noch eins, Neeee will ich nicht.
Sind mir dann zu viele Formulare wobei dieses ja nur den Zweck
hat alle meine TPanels anzuzeigen.
Jedenfals funktioniert es nun wunderbar habe die Halbe Nacht dran gesessen.
Es gab ja noch andere Probleme die man bewältigen musste, mit denen man ja wie immer nicht rechnen konnte.
Bis denne
-
Naja wenn du eine unbestimmte Anzahl an Formularen ist deine Variante schon besser.
Du wolltest ja nur andere Ideen wissen
Darfst nur die Zeiger auf deine Formulare nicht verlieren...
Wenn du 2x oder öfter deinen Button drückst dann kommst du an die vorher erstellten Formulare nicht mehr ran, da jaüberschrieben wird und die anderen Fenster ja auch nicht mehr als "ActiveWindow" gelten sondern nur das aller neuste...Code :1
TForm *Fenster;
Aber dies nur als Anmerkung
Mal ne Frage....
Das hat jetzt nicht wirklich viel mit dem Button auf dem 2ten Form zu tun oder?
Der hier sitzt ja auf dem "TForm1"...
Deinen Zeiger zum Button auf dem 2ten Form löschst du ja gleich nach Erstellung und anzeigen des Forms wiederCode :1 2 3 4 5 6
void __fastcall TForm1::ENDE(TObject *Sender) { HWND W; W = GetActiveWindow(); PostMessage(W, WM_CLOSE, 0,0); }Ist mir irgendwie etwas unklar.... aber wenn dein Kram funktioniertCode :1
delete Button;

MfG Turri
-
05.12.06 15:38 #6
- Registriert seit
- Jan 2005
- Beiträge
- 60
Durch ShowModal() ist nur das allerneueste Fenster Activ, soweit ich das nicht besser weiß, alle anderen Fenster sind nicht erreichbar.
Den Button zum öffnen des Formulars kann man nur jeweils einmal betätigen,
denn dann ist dieser ja nicht mehr erreichbar, weil das geöffnete Fenster im Vordergrund steht.
Erst nachdem man das Fenster wieder schliesst kann der Button wieder gedrückt werden.
Zum:
Eigentlich dachte ich es wird beim 2ten Aufruf des FenstersCode :1
delete Button;
eine Exception ausgelöst, da der Button noch vorhanden ist, deswegen delete Button.
Beim Fenster ist (ohne delete Fenster) wird eine Exception ausgelöst, da es dieses Fenster schon gibt.
Aber in meinem C++ Buch steht (für Anfänger) das ich alle Elemente die mit NEW initilisiert werden wieder aus dem Speicher gelöscht werden müssen. Dieses muss der Programmierer selber übernehmen. Also benutze auch für den Button delete.
Ob es hier noch nötig ist weiß ich leider auch nicht.
Da beim Schliessen des Fensters irgendwie alles verloren geht, was sich in dem Fenster befand.
Vielleicht hat hier ja einer ne Ahnung wie sich das verhält.
-
05.12.06 16:48 #7
- Registriert seit
- Jan 2005
- Beiträge
- 60
Achso und nix durcheinander bringen, der erste Button der als caption "OPEN" hat,
muss natürlich auch mit delete gelöscht werden, sobald das Programm beendet wird.
Der erste Button hat NIX mit dem 2ten Button zu tun, nur mal so falsch einer was falsch verstanden hat.
bis denne
Ähnliche Themen
-
popup fenster auto. schliessen && neue seite in anderem fenster öffnen
Von Sebastian im Forum Javascript & AjaxAntworten: 6Letzter Beitrag: 24.04.06, 11:47 -
Fenster schliessen?
Von axel2 im Forum JavaAntworten: 7Letzter Beitrag: 22.09.05, 13:39 -
FL MX fenster schliessen bei swf
Von Seediver im Forum Flash PlattformAntworten: 2Letzter Beitrag: 07.10.03, 17:32 -
Fenster schliessen !
Von derwuschel im Forum HTML-EditorenAntworten: 2Letzter Beitrag: 05.06.03, 21:50 -
Fenster schliessen
Von egreis im Forum HTML & XHTMLAntworten: 1Letzter Beitrag: 15.05.03, 19:16





Zitieren
Login






