Otwórz NOWY ?

0

Witam.
Mam dzisiaj pytanko jak zdefiniować w MainMenu tak aby po naciśnięciu na NOWY otwierało sie nowe okienko, a po ponownym kliknięciu otworzyło by sie następne i tak dalej...aż zapełnił bym sie cały pulpit okienkami tego samego programu.

Dzieki.</b>

0

tablica z formami - potem zobacz sobie co masz w View->View Project (czy cos takiego) i tam jest tworzenie formy - usun stamtad i daj to do zdarzenia tego obiektu. potem przypisujesz do tablicy do kolejnego elementu i masz tablice z tymi formami. No chyba ze nie musisz nic robic potem z tymi formami to mozesz dac po prostu samo tworzenie.

0

nie wiem zabardzo co masz na mysli :-|

0

Masz sobie Formę klasy np: TForm2 (jakże orginalnie :P) i masz

var 
  Forma:array of TForm2;
  Ile:byte=0;

Procedure TworzForm;
begin
  SetLength(Forma,Ile+1);
  Inc(ile);
  Forma[ile]:=TForm2.Create;
end;

I w OnClick'u (w tym MainMenu) daj sobie tą procedurkę ale głowy co do tego czy to działa nie dam bo mi sie nie che sprawdzać :]

[do postu poniżej] może może, nie wiem bo jeszcze nigdy (dynamicznie) nie tworzyłem formy :D:D tak jakoś sie nie złożyło :)

0

W tej ostatniej linijce chyba powinno być Application.CreateForm(TForm2, Forma[ile]); jak już...

0

Napisałem:

var
Forma:array of TForm1;
Ile:byte=0;

procedure TForm1.nowy(sender: TObject);
begin
SetLength(Forma,Ile+1);
Inc(ile);
Application.CreateForm(TForm1, Forma[ile]);
end;

dodałem na początku : Form3.show;

begin
Form3.show;
SetLength(Forma,Ile+1);
Inc(ile);
Application.CreateForm(TForm1, Forma[ile]);
end;

po kliknięciu drugi raz na Nowy wyskoczył mi błąd.

0

var
Forma:array of TForm2;
Ile:byte=0;

Procedure TworzForm;
begin
SetLength(Forma,Ile+1);
Inc(ile);
Forma[ile]:=TForm2.Create;
end;

Ja bym dał raczej:

var 
Forma:array of TForm2;

SetLength(Forma, Length(Forma)+1);
Forma[High(Forma)]:=TForm2.Create;

Po co wprowadzać dodatkową zmienną? :)

0

sorki za OT ale jak ma być w końcu??

Application.CreateForm(TForm1, Forma[High(forma)]); 

czy

Forma[High(forma)]:=TForm2.Create;

???

0

Application.CreateForm(TForm1, Forma[High(forma)]); zadziała na pewno (wiele razy tak robiłem). Czy to drugie zadziała, to nie wiem, może tak, może nie... Przy tym drugim brak mi coś Ownera przy konstruktorze... I z nim mógłby być problem...

1 użytkowników online, w tym zalogowanych: 0, gości: 1