Wyswietlanie dynamicznego formularza

0

Witam
Problem jest następujący: Tworzę dynamicznie formularz i chce go wyświetlić, ale w taki sposób abym mógł się przełączyć na inne formularze, dlatego showmodal odpada. Wykorzystując metodę 'Show' formularz jest wyświetlany i zaraz niszczony.

0

jasnowidzów tu nie ma,napisz w jaki sposób ją wywołujesz

0

procedure Form1.OnClick;
var Form2:TForm;

begin

Form2:=TForm2.Create(self);
try
{jakies malo wazne procedurki}

 Form2.Show 

finally
Form2.Free;
end;
end;

Klikajac na Form1 wywoluje Form2, no i nie chce uzywac procedury ShowModal, ponieważ chciałbym miec mozliwosc przelaczenia sie na Form1.

0

Delphi nie jest moją domeną, ale blok finally jest wywoływany chyba zawsze.
W związku z tym wyrzucenie tego bloku powinno pomóc.

0

Dzięki za dobre chęci, ale to nie pomoże. To jest tylko obsluga wyjatku, ona tu nie ma nic do rzeczy.

0

w tym przypadku mogłoby zostać pod jednym warunkiem - użyjesz showmodal, gdyż zwolnienie drugiej fromy następuje za wcześnie. W OI drugiej formatki do OnClose() daj self. destroy, żebyś pryzpadkiem potem nie tworzył jej, kiedy jeszcze będzie w pamięci

0
procedure Form1.OnClick;
var Form2:TForm;
begin
  try
    Form2:=TForm2.Create(self);
     (...)
     Form2.Show;
  except    
    Showmessage('Lipa...");
    Form2.Free;
  end;
end;

??

// Krzycho - Jakiego ku**a Zoltana ? [sciana] [sciana] [sciana] [rotfl]

0

Do Milka, moglbys swoj pomysl przedstawic troche jasniej.

Do Zoltana, a czy jak zamkne form2 to pamiec zwolni sie automatycznie?

0

Do Zoltana, a czy jak zamkne form2 to pamiec zwolni sie automatycznie?

Nie, w zdarzeniu OnClose daj:

Action := caFree;

Dzięki za dobre chęci, ale to nie pomoże. To jest tylko obsluga wyjatku, ona tu nie ma nic do rzeczy.

G**** prawda, widać, że o tym nie czytałeś.

0

G**** prawda, widać, że o tym nie czytałeś.

G**** prawda, widać, że sie na tym nie znasz.

0

try
{jakies malo wazne procedurki}

 Form2.Show 

finally
Form2.Free;
end;
end;

Toć to jest bez sensu - radze poczytać o try, except, finally.

0

Dziękuje wszystkim za pomoc.

Oj wiem, ze to bylo bez sensu, dlatego prosiłem was o pomoc.

// to po co dyskutujesz wyskakując z takimi tekstami [sciana] - deti

0

G**** prawda, widać, że o tym nie czytałeś.

G**** prawda, widać, że sie na tym nie znasz.

I kto to mówi. Obsługa wyjątku - except. Finally - instrukcje wykonywane ZAWSZE, niezależnie od tego, czy po słowie try wystąpi wyjątek, czy nie.

In a try..finally statement, the application always executes any statements in the finally part, even if an exception occurs in the try block. When any code in the try block (or any routine called by code in the try block) raises an exception, execution halts at that point. Once an exception handler is found, execution jumps to the finally part, which is called the cleanup code. After the finally part executes, the exception handler is called. If no exception occurs, the cleanup code is executed in the normal order, after all the statements in the try block.

  • Delphi Help
0

Dzieki Brodny, widze, ze sie znasz na temacie. Pozdrawiam

0

Dzieki Brodny, widze, ze sie znasz na temacie. Pozdrawiam

Przy okazji sorki, że tak wyskoczyłem :/ Wybaczysz mi kiedyś? :)

0

No dobra, poczytałem co tu piszecie, przeniosłem to do D5ent, Form2 nie tworzona automatycznie, robie podgląd pamięci...

Po uruchomieniu: 2 612K
Po otwarciu Form2 (button1.click): 2 640K
Po zamknięciu Form2 (z wszelkimi opisanymi szykanami): 2 660K (czyli więcej!!!)
I dalej przy otwieraniu/zamykaniu już trzyma na tym poziomie :)

Czemu pamięć po zamknięciu Form2 nie jest zwalniana?

.:.

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