ďťż

Ładny brzuch

Pierwszą formą która pokazuje mi sie po uruchomieniu programu jest form1, ma ona pare zadań do spełnienia, ale jak juz skończy robić co do niej należy, powinna pokazac form2 a samą siebie zniszczyć. Próbowałem w form1 wpisac to

Application.CreateForm(TForm, Form2); Form1.Destroy;

ale wywala błąd i nie wiem co z tym fantem zrobić.
Użytkownik Private edytował ten post 19 lipiec 2006, 18:17


Zamiast form.destroy uruchamiaj timera, w ktorego wsadzisz ta proce.

Że tak spytam: Chcesz zrobić splash screena?

Co do problemu: zamykaj i do OnClose:
Action := CaFree; Form1 := NIL;

PS. lepiej uruchamiaj automatycznie forme główną tylko ją ukrywaj przez pewnien czas (sleep), a czas trwania formy która się pierwza pokazuje ustaw w Timerze (czass taki sam jak przy sleep w formie głównej). Aha, tę formę "pierwszą" możesz tworzyć dynamicznie w dpr :)
Użytkownik Coldpeer edytował ten post 19 lipiec 2006, 18:39

Że tak spytam: Chcesz zrobić splash screena?

Co do problemu: zamykaj i do OnClose:
Action := CaFree; Form1 := NIL;

PS. lepiej uruchamiaj automatycznie forme główną tylko ją ukrywaj przez pewnien czas (sleep), a czas trwania formy która się pierwza pokazuje ustaw w Timerze (czass taki sam jak przy sleep w formie głównej). Aha, tę formę "pierwszą" możesz tworzyć dynamicznie w dpr :)


Nie chce robić splasha, a w Timerku nie moge sobie ustawić czasu jej trwania bo nie wiem z góry ile sie będzie funkcja wykonywać to jest zależne od paru czynników.

Zrobiłem tak

Form1.Close; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := CaFree; Form1 := NIL; end;

tylko jak pokazac tą form2 ? Jak dopisze do OnClose form2.show to dostaje ten sam błąd co poprzednio



A może:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin Form2.ShowModal; Action := CaFree; Form1 := NIL; end;

// edit, lol, nie pomyślałem, przecież jak wywołam Form2 to ona stanie się aktywna jak więc mam wykonywać na Form1 wtedy jakieś operacje. Lepiej "form2.showModal" daj w zdarzeniu OnCloseQuery Form1?
Użytkownik Coldpeer edytował ten post 19 lipiec 2006, 19:30
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin Form2.Show; Action := CaFree; Form1 := NIL; end;To co wyżej, ale zamiast ShowModal dajesz Show. ;)

Action := CaFree;

?


[Error] bla.pas(82): Incompatible types: 'TBasicAction' and 'TCloseAction'
Użytkownik Private edytował ten post 19 lipiec 2006, 21:02

Action := CaFree;

?
Spróbuj:Action:=Forms.caFree;

To samo co przedtem

A próbowałeś mój sposób z OnCloseQuery? :D

PS. w najgorszym wypadku po prostu wywal Action := caFree - a co tam :P

procedure TForm2.FormCreate(Sender: TObject); begin form1.destroy; end;
;)
Użytkownik krajew4 edytował ten post 19 lipiec 2006, 22:27
Action wywalić musze bo mnie kompilator do tego zmusza :) A od CloseQuery dostałem Access violation...


procedure TForm2.FormCreate(Sender: TObject); begin form1.destroy; end;
;)
Na pewno nie zadziała, bo OnCreate jest wywoływane jeszcze przed zakończeniem wywoływania Form2:=TForm2.Create... ^_^

Za każdym razem jak chce pokazać drugą forme to dostaje accessa :huh:

Zadziała bo sprawdzałem :lol:
Stwórz sobie dwie formy i daj ten kod w FormCreate drugiej :)
Użytkownik krajew4 edytował ten post 19 lipiec 2006, 22:32
Dobra może zacznijmy od tego jak ma być poprawnie sformułowane tworzenie tej drugiej formy, bo chyba od tego dostaje accessa. form2.create(??)

Dobra, już rozumiem ;)
program Project1; uses Forms, Unit1 in 'Unit1.pas' {Form1}, Unit2 in 'Unit2.pas' {Form2}; {$R *.res} begin Application.Initialize; Application.CreateForm(TForm2, Form2); form2.hide; application.ShowMainForm:=false; Application.CreateForm(TForm1, Form1); form1.show; form1.destroy; form2.show; Application.Run; end.
Zrób tak i ustaw jako formę główną form2.

Wszystko byłoby pięknie i ładnie gdyby nie to, że form2 na której mam dużo komponentów, wisi po form2.show. Jest tylko ramka niebieska reszta jest biała. Już nie mówiąc jak system zaczyna kisić od tego, myszką ledwo co ruszam, bo mi przycina

28MB zajętej pamięci podczas gdy przedtem były ledwo 4 ;) I sie teraz tego programu zamknąć nie da ...
O sory, najwięcej było 32MB :D Nie no super xD Dobrze, że mi sie udało mu priorytet obniżyc to przynajmniej jakoś idzie sie kompem posługiwac :D Nawet z Menadzera sie go nie da wyłączyć :super:

Łiii! Wyłączył sie :D
Użytkownik Private edytował ten post 19 lipiec 2006, 22:59
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •