![]() |
Form vermehrfachen !
moin
ich hab ein Problem: ich schreibe gerade ein relativ kleines Programm, wo ich jetzt aber ein kleine Hilfe brauche und zwar sieht es so aus. Ich hab ein Unit/Form1 mit normaler Programm-Oberfläche. Dort drückt man auf einen Button, wobei EINE zweite Form sichtbar wird.
Delphi-Quellcode:
Ich möchte aber , dass diese Form "b" mal geöffnet wird, bis jetzt wird sie ja nur einmal geöffnet, ist das i-wie möglich ? wenn ich jetzt zum beispiel hinter der Schleife showmessage('ssss') schreibe wird sie ja auch sooft geöffnet, aber mit der Form bekomme ich das nicht ganz hinif b<10 then showmessage('Die Zahl ist zu klein gewählt'); if b>10 then begin Form2.Visible:=true; timer1.enabled:=true; for c:=1 to b do danke mfg counter |
Re: Form vermehrfachen !
Hallo!
Das geht mit einem Array. Du erzeugst eben mehrere Instanzen derselben Form-Klasse.
Delphi-Quellcode:
Die Formular-Objekte werden in diesem Beispiel bei Beendigung freigegeben (Self sollte dein Hauptformular sein, daß diese dann freigibt). Ansonsten kannst du natürlich auch manuell freigeben, indem du den Array verfügbar hälst (also global definierst) und zu gegebener Zeit den Destruktor aufrufst (Forms[c].Free).
var Forms:array of TForm2;
... begin ... Setlength(Forms,b) for c:=0 to b-1 do begin Forms[c]:=TForm2.Create(Self); Forms[c].Show; end; Cu, Udontknow |
Re: Form vermehrfachen !
ah vielen dank das funktioniert schonmal :-)
der tipp mit der array war eine gute idee.... jetzt aber zum schluss noch eine Frage: jetzt werden die ja auch alle auf einen Haufen gesetzt, kann ich in der array jetzt versuchen die positionen zu verändern ? mfg counter |
Re: Form vermehrfachen !
Natürlich.
Delphi-Quellcode:
Cu,
Forms[c].Left:=100+c*30;
Forms[c].Top:=100+c*30; Forms[c].Caption:='Formular '+IntToStr(c); Udontknow |
Re: Form vermehrfachen !
jopp...vielen dank, mein ziel
ist sogut wie erreicht. jetzt muss ich noch die verschiedenen Positionen rausfinden und dann gehts mfg counter |
Re: Form vermehrfachen !
Hallo
Jetzt muss ich doch nochmal so kleine fragen stellen ... tut mir leid. Also: 1) ist es möglich, dass es nicht so ist, wenn man auf Form 1 auf das Kreuz oben rechts klickt, dass sich die anderen aus Form2 dann auch alle beenden ??? 2)
Delphi-Quellcode:
ich hab das jetzt angewendet,... dass die Form 2 sich alle von oben nach unten öffnen auf dem Desktop, wie man auch erkennen kann, nun möchte ich gerne, dass sich so eine Reihe nochmal von oben nach unten erstellt, aber natürlich an einer anderen stelle..sodass sich der desktop zu virtel damit füllt ?...... oder wie wird eigentlich die Position der Form1 berechnet ? wo ist der Null-Punkt ?
for c:=0 to b-1 do
begin forms[c]:=Tform2.Create(self); forms[c].show ; Forms[c].top:=100+c*50; Forms[c].Caption:='Formular '+IntToStr(c); end; soll ein prog im Zusammenhang mit Ftp und so werden... das sind jetzt so zwei kleine sachen, die mich noch bisschen nerven. vl counter |
Re: Form vermehrfachen !
zu 1) Du musst im OnCloseQuery von Form1 die Variable CanClose auf false setzen, dann passiert garnix wenn man auf schließen klickt.
zu 2) 0 Punkt ist die obere linke Ecke des Monitors. Für ne 2te Reihe mach also einfach des selbe nochmal nur setzte für Left einen höheren Wert |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz