![]() |
klick auf button -> mehrere fenster öffnen sich - WIE ?
hallo alle zusammen. :hi:
ich bräuchte mal ganz dringend hilfe. und zwar möchte ich bei klick auf einen button das soviele fenster erscheinen wie im edit-text eingegeben wurden. man kann bis zur zahl 100 eingeben. und wenn man 22 eingibt und auf den ok-button klickt, sollen 22 fenster aufspringen. wie kann ich das programmieren? wäre euch sehr dankbar wenn ihr mir helfen könntet! |
Re: klick auf button -> mehrere fenster öffnen sich - WIE
Wilkommen erst einmal im Forum.
Ich weiss ja nicht ob du die Formulare, die du öffnen möchtest schon hast. Aber hier mal so aus dem stehgreif, wenn die Formulare zur Laufzeit erstelt werden sollen.
Delphi-Quellcode:
du musst natürlich noch irgendwo die erzeugten Formulare wieder freigeben.
procedure TForm1.Button1Click(Sender: TObject);
var aForm:TForm; i:integer; begin for i := 0 to StrToInt(Edit1.Text) - 1 do begin aForm := TForm.Create(nil); aForm.Show; end; end; Gruß Tyrael |
Re: klick auf button -> mehrere fenster öffnen sich - WIE
wird das nicht problematisch wenn du du versuchst
aForm immer wieder neu zu erstellen, obwohls schon existiert? :gruebel:
Delphi-Quellcode:
gruß Minzvar myform:array of TForm; begin setlength(myform,strtoint(edit1.text)); for i := 0 to StrToInt(Edit1.Text) - 1 do begin myform[i] := TForm.Create(nil); myform[i] := aForm.Show; end; end; end; |
Re: klick auf button -> mehrere fenster öffnen sich - WIE
deswegen habe ich ja geschrieben irgendwo muss er das wieder freigeben ;)
|
Re: klick auf button -> mehrere fenster öffnen sich - WIE
deine variante ist auch besser
hab es halt aus dem stehgreif geschrieben gehabt Gruß Tyrael |
Re: klick auf button -> mehrere fenster öffnen sich - WIE
Zitat:
Abgesehen von der Tatsache, dass Du die direkten Referenzen verlierst (notfalls über Screen.Forms[] erreichbar, siehe OH), um sie ggf wieder freizugeben (was aber auch in OnClose mit caFree realisiert werden könnte), ist es absolut unproblematisch, weil lediglich die bisherige Referenz durch die jeweils vom Konstruktor-Aufruf zurückgegebene Referenz überschrieben wird. Von diesem Vorgang "bekommnt das Fenster nichts mit". Es wäre auch denkbar, die Referenz gar nicht zu speichern:
Delphi-Quellcode:
bzw
for i := 0 to StrToInt(Edit1.Text) - 1 do
TForm.Create(nil).Show;
Delphi-Quellcode:
for i := 0 to StrToInt(Edit1.Text) - 1 do
with TForm.Create(nil) do begin Caption:= IntToStr(i); Left:= i*10; Show; end; |
Re: klick auf button -> mehrere fenster öffnen sich - WIE
öhm, aber wenn du auf die Fenster nicht mehr zugreifen kannst, finde ich das problematisch, es sei denn du verfolgst einzig und allein den Zweck den Bildschirm von jemanden vollzumüllen :mrgreen:
oder liegen die alle übereinander :gruebel: |
Re: klick auf button -> mehrere fenster öffnen sich - WIE
wie er sagte: Man kommt wieder an die Fenster. Ist zwar etwas umständlich, geht aber :)
|
Re: klick auf button -> mehrere fenster öffnen sich - WIE
naja mag ja sein, aber ich sehe nicht den Sinn den Bezug zu den Fenstern zu verlieren und sie später mühsam aus dem Speicher zu kramen *wurschtel*
ist einfach nur umständlich oder net? (->problematisch? ist ein subjektiver Begriff hier: Frage der Machbarkeit vs. Frage des Handlings) |
Re: klick auf button -> mehrere fenster öffnen sich - WIE
Hallo Minz,
mir ging es eher um die generelle Möglichkeit, mehrer visuelle VCL-Objekte zu erzeugen. Ein anderes Szenario wäre zB mehrere Buttons zu platzieren (ungetestet):
Delphi-Quellcode:
In diesem Fall kann das eben erklärte verwendet werden, ohne dass ich mich um das Freigeben der Buttons kümmern muss, weil sie
//Methode im Formular
for i:=0 to 10 do with TButton.Create(Self) do begin Top:= i*(Height+GapKonstante); Caption:= IntToStr(i); OnClick:= Button1Click; Parent:= Self; end;
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:08 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 by Thomas Breitkreuz