Arkadaşlar merhaba,
Form1 ve Form2 isminde iki form var. Form1 ana form durumunda ve Form2 auto create edilmiyor.
Form1'de bir butona aşağıdaki kodu yazarak form2'yi create ediyorum.
if Form2 = Nil then
Form2 := TForm2.create(self) ;
ShowMessage('1');
Form2'nin onshow olayınada aşağıdaki kodu yazıyorum.
ShowMessage('2') ;
Form1 de butona bastığımda form2 create edildiğinde "form2.show" ifadesini yazmamış olmama rağmen Form2 görünüyor ve Form2'nin onshow olayı çalışıyor.
Yani önce "2" mesajı sonrada '1' mesajı görünüyor. Oysaki ben önce butonda yazdığım tüm komutların çalışmasını sonra da form2'nin onshow olayındaki komutların çalışmasını istiyorum.
Bu sorunu nasıl çözebilirim? Nerede yanlış yapıyorum acaba?
Hocam teşekkür ederim. Ancak sorun formu Create veya Nil etmekte değil. Sorun form create edilince otomatik show olması. Yani ben Form2'yi Create edince "Form2.Show" yazmadan Form2 show oluyor ve Form2'nin OnShow olayı çalışıyor.
(03-12-2021, Saat: 10:43)Bay_Y Adlı Kullanıcıdan Alıntı: [ -> ]Geçici bir çözümdür ama şimdilik aklıma gelen
ormun visible özeliğini false yapabilirsiniz veya Show yerine formu başlangıçta "Form2.Hide" edebilirsiniz.
https://stackoverflow.com/questions/8598...ng-them-to
Evet işte tam olarak sorun bu ama tam olarak çözüm bulunamamış. MDI form yapısında formun visible özelliği false yapılamıyor.
Sadece bir öneri:
"Butona yazdığınız tüm kodlar" Form2 ile alakalı değilse (mesajınızdan bu husus anlaşılmıyor) şu şekilde basit bir kullanım düşünülebilir.
if Form2 = Nil then
begin
ShowMessage('1'); // <<---
// diğer yapılacak işlemler
Form2 := TForm2.create(self) ;
end;
Form2'yi create ettiğim satırdan sonra form2 ile alakalı kod satırları var. Form2'nin onshow olayında da yine Form2 ile ilgili kodlar var. Çalışmasını istediğim kod sırası şu şekilde.
1- Form2'nin create edildiği satır
2- Create satırından sonraki kod satırları
3- Form2'nin onshow olayındaki kodlar
Ancak işlemler bu sıra ile yürümüyor.
Gerçekleşen sıra ;
1- Form2'nin create edildiği satır
2- Form2'nin onshow olayındaki kodlar
3- Create satırından sonraki kod satırları
Bu çalışma sırası da sorun çıkmasına neden oluyor.
(03-12-2021, Saat: 22:24)sunbeki Adlı Kullanıcıdan Alıntı: [ -> ]Form2'yi create ettiğim satırdan sonra form2 ile alakalı kod satırları var. Form2'nin onshow olayında da yine Form2 ile ilgili kodlar var. Çalışmasını istediğim kod sırası şu şekilde.
1- Form2'nin create edildiği satır
2- Create satırından sonraki kod satırları
3- Form2'nin onshow olayındaki kodlar
Ancak işlemler bu sıra ile yürümüyor.
Gerçekleşen sıra ;
1- Form2'nin create edildiği satır
2- Form2'nin onshow olayındaki kodlar
3- Create satırından sonraki kod satırları
Bu çalışma sırası da sorun çıkmasına neden oluyor.
Merhaba,
Eğer sadece mesaj göstermekle ilgili ise, Form1 üzerinden 1.nci mesaha parametre vermeyeceksen, ShowMessage('1') satırını Form2 nin OnCreate olayına ShowMessage('2'); satırını da Form2 nin OnShow olayına yaz sorun çözülür. Diğer şekilde Form2 yi create ettiğin an gösterim olayıda hemen akabinde gerçekleşmekte olacağından sıralama bozulur.
Form2'nin Visible property'si True'dur. False yaparsanız istediğiniz şekilde olur. Form2'yi Mdi child yapmayı denediyseniz bu özelliği otomatik true yapar.
Merhaba,
Alternatif olarak aşağıdaki yöntem işinizi çözebilir duruyor. Formu ilk create edildikten sonra bir kez Form2 onshow komutlarını atlamasını sağlamalısınız.
var Form2CreateEdildimi : Boolean;
Gerçekleşen sıra ;
1- Form2'nin create edildiği satır
Form2CreateEdildimi := False;
2- Form2'nin onshow olayındaki kodlar
if Form2CreateEdildimi = True then begin .... end;
3- Create satırından sonraki kod satırları
Form2CreateEdildimi := True;