Autor |
Beitrag |
Leuchtturm
      
Beiträge: 1087
Win Vista, Knoppix, Ubuntu
Delphi 7 Pe, Turbo Delphi, C#(VS 2005 Express), (X)HTML + CSS, bald Assembler
|
Verfasst: Sa 27.05.06 15:38
Hi,
ich öffne durch einen Button Klick ein Fenster und schließe das 1. Fenster.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| procedure TForm1.Button1Click(Sender: TObject); var frmHilfe: Tform2; begin frmHilfe := TForm2.Create(nil); frmHilfe.ShowModal(); close; end; |
Das zweite Fenster geht auch auf, das andere schließt sich aber nicht.
Wie kann man das so ändern dass das eine Fenster auf und das andere zu geht
Leuchtturm
_________________ Ich bin dafür verantwortlich was ich sage - nicht dafür was du verstehst.
|
|
0xCC
      
Beiträge: 150
|
Verfasst: Sa 27.05.06 15:49
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TForm1.Button1Click(Sender: TObject); var frmHilfe: Tform2; begin self.hide ; frmHilfe := TForm2.Create(nil); frmHilfe.ShowModal(); frmHilfe.close; frmhilfe.free; self.show; end; |
|
|
Leuchtturm 
      
Beiträge: 1087
Win Vista, Knoppix, Ubuntu
Delphi 7 Pe, Turbo Delphi, C#(VS 2005 Express), (X)HTML + CSS, bald Assembler
|
Verfasst: Sa 27.05.06 15:52
Danke
_________________ Ich bin dafür verantwortlich was ich sage - nicht dafür was du verstehst.
|
|
Ironhead
      
Beiträge: 57
Win XP,Kanotix 5
|
Verfasst: Mo 29.05.06 09:18
Ich weiß nich warum ihr euch die sache mit so viel Text erschwert
ich schreibe nur:
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| 1:procedure TForm1.Button1Click(Sender: TObject); 2:begin 3:Form2.Show; 4:Form1.Hide 5:end; |
|
|
jasocul
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Mo 29.05.06 09:23
Ironhead hat folgendes geschrieben: | Ich weiß nich warum ihr euch die sache mit so viel Text erschwert |
Gnz einfach: weil (dein Beispiel zu Grunde gelegt) Form2 erst zur Laufzeit erzeugt wird. So, wie du programmierst, ist die Form schon erzeugt. Dann geht natürlich auch deine Methode.
Sobald du größere Anwendungen schreibst, wirst du das aber vermeiden und die Forms erst zur Laufzeit erzeugen. Daher ist der Aufwand mit Form2.Create;... leider erforderlich.
Abgesehen davon, handelt es sich auch noch um eine modale Anzeige (ShowModal). Danach muss die alte Form wieder angezeigt werden und die Form, die nicht mehr erforderlich ist, wird wieder zerstört (Free).
|
|
Ironhead
      
Beiträge: 57
Win XP,Kanotix 5
|
Verfasst: Mo 29.05.06 09:27
Ah so kann natürlich sein, bin ein wenig neu bei dem ganzen.
vielleicht hab ich damit verwirrung gestiftet, dachte es geht nur darum
|
|
jasocul
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Mo 29.05.06 09:35
Ironhead hat folgendes geschrieben: | Ah so kann natürlich sein, bin ein wenig neu bei dem ganzen. |
Waren wir alle mal.
Ironhead hat folgendes geschrieben: | vielleicht hab ich damit verwirrung gestiftet |
Glaube ich nicht. Vermutlich haben schon mehrere Anfänger sich gewundert. Daher wird es denen (und dir) nur geholfen haben. Und der Fragesteller hat schon seine Lösung bekommen und verstanden (vermute ich).
|
|
Leuchtturm 
      
Beiträge: 1087
Win Vista, Knoppix, Ubuntu
Delphi 7 Pe, Turbo Delphi, C#(VS 2005 Express), (X)HTML + CSS, bald Assembler
|
Verfasst: Mo 29.05.06 15:22
Zitat: | Und der Fragesteller hat schon seine Lösung bekommen und verstanden (vermute ich) |
Richtig vermutet
_________________ Ich bin dafür verantwortlich was ich sage - nicht dafür was du verstehst.
|
|
Hans Dieter
      
Beiträge: 18
|
Verfasst: Di 30.05.06 20:27
hi,
ich habe ein ähnliches problem, ich habe eine form1, da gibt es ein label.
wenn ich aufs label klicke, dann öffnet sich eine andere form (form2).
diese form2 soll nur eine art ladebalken sein (was auch super funktioniert) und dort soll nach 10 sek. (im einem timer steht das) die form3 geöffnet werden.
(am besten sollen natürlich die forms die inaktiv sind zu sein)
ich bekomme nur leider immer wieder diese fehlermeldung:
www.onlinepictures.d...nannt47a060b2JPG.jpg
Form1:
Delphi-Quelltext 1: 2: 3: 4: 5:
| procedure TForm1.Label3Click(Sender: TObject); begin form2.show; form1.hide; end; |
Form2:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm6.LadetimerTimer(Sender: TObject); begin progressbar1.max:=10; progressbar1.position:=progressbar1.position+1; if progressbar1.position=progressbar1.max then begin form7.show; ladetimer.Enabled:=false; form6.hide; end; end; |
was mache ich falsch?
|
|
jasocul
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Di 30.05.06 20:54
Der Fehler ist nicht in diesen beiden Routinen. Die Fehlermeldung sagt doch genau, wo das Problem steckt. Auch der Tipp schrittweise zu debuggen, steht in der Meldung.
|
|
Paradox
Hält's aus hier
Beiträge: 8
|
Verfasst: Fr 23.06.06 16:51
Hi Leute!! Ich hab das selbe Problem wie der Threadersteller
-> Button-klick ->Form 1 schließt sich, neues geht auf
ich hab auch die Prozedur hier gesehen und denke, dass sie mir helfen kann.
0xCC hat folgendes geschrieben: | Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TForm1.Button1Click(Sender: TObject); var frmHilfe: Tform2; begin self.hide ; frmHilfe := TForm2.Create(nil); frmHilfe.ShowModal(); frmHilfe.close; frmhilfe.free; self.show; end; | |
Nur leider weiß ich nicht, was die Befehle bedeuten!!
warum steht da
":= TForm2.Create(nil);" und nicht "Form2.show"?
Was heißt das "Show modal" und was bringt das "free"?
Bitte helft mir schnell^^
Vielen viele Dank
|
|
Marc.
      
Beiträge: 1876
Erhaltene Danke: 129
Win 8.1, Xubuntu 15.10
|
Verfasst: Fr 23.06.06 17:24
Wird eine Form mit ShowModal aufgerufen, so kann das Mainprogramm erst dann wieder benutzt werden, nachdem diese Form geschlossen wurde.
Free gibt den durch eine Objektinstanz belegten Speicher wieder frei.
Du initialisiert Objekte mit create, um auf ihre Elemente zugreifen zu können.
|
|