Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi klick auf button -> mehrere fenster öffnen sich - WIE ? (https://www.delphipraxis.net/11463-klick-auf-button-mehrere-fenster-oeffnen-sich-wie.html)

eni 7. Nov 2003 09:51


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!

Tyrael Y. 7. Nov 2003 10:04

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:
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;
du musst natürlich noch irgendwo die erzeugten Formulare wieder freigeben.


Gruß

Tyrael

Minz 7. Nov 2003 13:57

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:

var 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;
gruß Minz

Tyrael Y. 7. Nov 2003 14:01

Re: klick auf button -> mehrere fenster öffnen sich - WIE
 
deswegen habe ich ja geschrieben irgendwo muss er das wieder freigeben ;)

Tyrael Y. 7. Nov 2003 14:03

Re: klick auf button -> mehrere fenster öffnen sich - WIE
 
deine variante ist auch besser

hab es halt aus dem stehgreif geschrieben gehabt


Gruß

Tyrael

choose 7. Nov 2003 14:12

Re: klick auf button -> mehrere fenster öffnen sich - WIE
 
Zitat:

Zitat von Minz
wird das nicht problematisch wenn du du versuchst

aForm immer wieder neu zu erstellen, obwohls schon existiert?

Hallo Minz,

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:
for i := 0 to StrToInt(Edit1.Text) - 1 do
  TForm.Create(nil).Show;
bzw
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;

Minz 7. Nov 2003 14:16

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:

Phoenix 7. Nov 2003 14:18

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 :)

Minz 7. Nov 2003 14:22

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)

choose 7. Nov 2003 14:40

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:
//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;
In diesem Fall kann das eben erklärte verwendet werden, ohne dass ich mich um das Freigeben der Buttons kümmern muss, weil sie
  1. die ganze Zeit zu sehen sein sollen und
  2. die Freigabe der Destruktor des Formular übernimmt (so wie jedes TWinControl)


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:45 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz