problem z showmodal

0

Witam.

Stworzyłem sobie 4 formy.

Na 2 formie przy tworzeniu jej mam kod:

showmodal; 

Wtedy pojawia się 2 forma na 1 formie.

Na 2 formie umieściłem 2 buttony. Jeśli kliknę w pierwszy button to przenosi mnie do formy trzeciej a jeżeli na drugi to przenosi mnie do formy czwartej.

Kod na buttonach jest taki:

1 button:

modalresult := mrOk;
form3.showmodal;

2 button:

modalresult := mrOk;
form4.showmodal;

Gdy kliknę w pierwszy button wszystko działa jak należy. a jeżeli kliknę w button 2 wyskakuje mi błąd.

access violation at address 004C1519 in module 'Project1.exe'. Read of address 00000000

Po tym wyłącza się forma druga i pozostaje tylko pierwsza lecz niestety 4 forma się nie pokazuje.

Nie wiem od czego to może zależeć. Już trochę z tym kombinuje i dalej nie mam pomysłu. Może jakieś komendy na tych formach mogą blokować to. Staram się usuwać wszystkie komendy z tych form żeby sprawdzić gdzie leży błąd ale nic to nie daje. Błąd niby leży po stronie formy 4 ale nawet gdy forma jest pusta to i tak wyskakuje ten sam błąd więc chyba raczej chodzi o coś innego.
Byłbym bardzo wdzięczny za nawet jakieś małe wskazówki który pomogłyby mi rozwiązać problem.

Pozdrawiam

0

form4 - maże po pamięci.

2

access violation at address 004C1519 in module 'Project1.exe'. Read of address 00000000
Błąd o takiej treści otrzymuje się, gdy próbuje się wywołać formularz, który nie jest utworzony; Sprawdź, czy Form4 jest tworzona automatycznie podczas startu aplikacji (wciśnij Ctrl+Shift+F11 i zakładka Auto-create forms);

0

tak. wszystkie formy sa tworzone podczas startu.

Dragon co to oznacza ?

0

To oznacza, że maże po pamięci, a konkretniej odwołuje się do niezarezerwowanej dla obiektu przestrzeni (możliwe, że też co innego); Napisałem Ci, że problem leży w formularzu czwartym (podobnie jak kolega wyżej), więc sprawdź instrukcje odwołujące się do niej - najlepiej debagerem (nie umiesz? Czytaj);

I wklej kod Form4 i instrukcje odwołujące się do tego formularza, to będzie można dokładnie wskazać błąd; Bez kodu można jedynie zgadywać;

0

Znalazłem błąd. W auto create form przesunąłem form4 i form3 wyżej niż form2 i wszystko działa jak należy. Czyli tak jakby form2 blokowało powstanie form3 i form4.

0

zamień formX.ShowModal gdzie za x podstaw od 2 do 4 na

with TFormX.Create(nil) do
begin
  try
    ShowModal;
  finally
    Free;
  end;
end;

i wywal wszystkie formy poza form1 (główną) z autocreate

0
froderambro napisał(a)

form4.showmodal;

Ja wiem że Delphi to przepuści...
ale na litość boską, pisz ShowModal.

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