Bir form create edilmiş mi edilmemişmi
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Bir form create edilmiş mi edilmemişmi
Bir form create edilmiş mi edilmemişmi
Siz hayal edin...Biz yapalım TuannaSoft...
-
- Kıdemli Üye
- Mesajlar: 395
- Kayıt: 22 Tem 2004 09:15
- Konum: İzmir
- İletişim:
Test alanına yazayım derken, buraya yazdığınızı düşünüyorum. Eğer yanılıyorsam soru sorarken bu kadar ekonomik olmayın lütfen. Cevap olarak benzer bir cevap alabilirsiniz;
"Bir form create edilmemiş."
"Bir form create edilmemiş."
En son doganzorlu tarafından 18 Eyl 2005 01:35 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Doğan Zorlu, İzmir
------------------------
"Bu Kitap'ı sana yalnız şunun için indirdik: Hakkında ayrılığa düştükleri şeyi onlara iyice açıklayasın ve Kitap, iman eden bir topluluk için kılavuz ve rahmet olsun." (NAHL 64)
------------------------
"Bu Kitap'ı sana yalnız şunun için indirdik: Hakkında ayrılığa düştükleri şeyi onlara iyice açıklayasın ve Kitap, iman eden bir topluluk için kılavuz ve rahmet olsun." (NAHL 64)
-
- Kıdemli Üye
- Mesajlar: 395
- Kayıt: 22 Tem 2004 09:15
- Konum: İzmir
- İletişim:
Selam,
Değişik birkaç durum olabilir o nedenle söyledim. Misal bir form için 4 tane handle tanımlarsınız. Handle ın nil olup olmadığına bakarsınız ama aynı handle ın iki kez kullanılmasını engellemiş olursunuz. Ya da global bir handle tutarsınız nil mi bakarsınız o zaman bir form create i kontrol altında tutarsınız. Ya da formun çağırıldığı her formda bir local değişkenle referans ediliyorsa, bir döngü ile açık pencereleri dolaşır bakarsınız. Açıksa açmazsınız. Sizin senaryonuz nasıl birşey ?
Değişik birkaç durum olabilir o nedenle söyledim. Misal bir form için 4 tane handle tanımlarsınız. Handle ın nil olup olmadığına bakarsınız ama aynı handle ın iki kez kullanılmasını engellemiş olursunuz. Ya da global bir handle tutarsınız nil mi bakarsınız o zaman bir form create i kontrol altında tutarsınız. Ya da formun çağırıldığı her formda bir local değişkenle referans ediliyorsa, bir döngü ile açık pencereleri dolaşır bakarsınız. Açıksa açmazsınız. Sizin senaryonuz nasıl birşey ?
Doğan Zorlu, İzmir
------------------------
"Bu Kitap'ı sana yalnız şunun için indirdik: Hakkında ayrılığa düştükleri şeyi onlara iyice açıklayasın ve Kitap, iman eden bir topluluk için kılavuz ve rahmet olsun." (NAHL 64)
------------------------
"Bu Kitap'ı sana yalnız şunun için indirdik: Hakkında ayrılığa düştükleri şeyi onlara iyice açıklayasın ve Kitap, iman eden bir topluluk için kılavuz ve rahmet olsun." (NAHL 64)
-
- Kıdemli Üye
- Mesajlar: 1026
- Kayıt: 11 Şub 2005 02:12
- Konum: İstanbul
-
- Kıdemli Üye
- Mesajlar: 395
- Kayıt: 22 Tem 2004 09:15
- Konum: İzmir
- İletişim:
Selam,
assigned olmaz, zira referansın bir yer gösterip göstermediğini kontrol ediyorsunuz. Nil kontrolünden farklı değil. Mesela birkaç değişik formdan aynı formu çağırıyorsunuz. Herbirinin içinde de bir forma ait referans (handle) tanımlı.
Birinci formda butona bastınız ve bahse konu ortak formu local referansa atadınız. Artık o form içinde bir daha ortak formu açmamak adına assigned kullanabilirsiniz. Fakat ikinci formdaki local referans henüz bir obje göstermediğinden onu kontrol ettiğinizde ortak form açık olarak görünmeyecektir.
assigned olmaz, zira referansın bir yer gösterip göstermediğini kontrol ediyorsunuz. Nil kontrolünden farklı değil. Mesela birkaç değişik formdan aynı formu çağırıyorsunuz. Herbirinin içinde de bir forma ait referans (handle) tanımlı.
Birinci formda butona bastınız ve bahse konu ortak formu local referansa atadınız. Artık o form içinde bir daha ortak formu açmamak adına assigned kullanabilirsiniz. Fakat ikinci formdaki local referans henüz bir obje göstermediğinden onu kontrol ettiğinizde ortak form açık olarak görünmeyecektir.
Doğan Zorlu, İzmir
------------------------
"Bu Kitap'ı sana yalnız şunun için indirdik: Hakkında ayrılığa düştükleri şeyi onlara iyice açıklayasın ve Kitap, iman eden bir topluluk için kılavuz ve rahmet olsun." (NAHL 64)
------------------------
"Bu Kitap'ı sana yalnız şunun için indirdik: Hakkında ayrılığa düştükleri şeyi onlara iyice açıklayasın ve Kitap, iman eden bir topluluk için kılavuz ve rahmet olsun." (NAHL 64)
- ender_arslanturk
- Kıdemli Üye
- Mesajlar: 709
- Kayıt: 18 Şub 2005 03:38
- Konum: İstanbul
Evet doğru...doganzorlu yazdı:Selam,
assigned olmaz, zira referansın bir yer gösterip göstermediğini kontrol ediyorsunuz. Nil kontrolünden farklı değil. Mesela birkaç değişik formdan aynı formu çağırıyorsunuz. Herbirinin içinde de bir forma ait referans (handle) tanımlı.
Birinci formda butona bastınız ve bahse konu ortak formu local referansa atadınız. Artık o form içinde bir daha ortak formu açmamak adına assigned kullanabilirsiniz. Fakat ikinci formdaki local referans henüz bir obje göstermediğinden onu kontrol ettiğinizde ortak form açık olarak görünmeyecektir.
-
- Kıdemli Üye
- Mesajlar: 1026
- Kayıt: 11 Şub 2005 02:12
- Konum: İstanbul
3 tane form oluşturdum.doganzorlu yazdı:Selam,
assigned olmaz, zira referansın bir yer gösterip göstermediğini kontrol ediyorsunuz. Nil kontrolünden farklı değil. Mesela birkaç değişik formdan aynı formu çağırıyorsunuz. Herbirinin içinde de bir forma ait referans (handle) tanımlı.
Birinci formda butona bastınız ve bahse konu ortak formu local referansa atadınız. Artık o form içinde bir daha ortak formu açmamak adına assigned kullanabilirsiniz. Fakat ikinci formdaki local referans henüz bir obje göstermediğinden onu kontrol ettiğinizde ortak form açık olarak görünmeyecektir.
1. form diğer iki formda ortak olarak kullanılıyor.
2.formda butona tıklandığı zaman 1. form create ediliyor.
3.formda butona tıklatığım zaman assigned kontrolü yapıyorum.
3.formda bulunan butona tıkladığımda assigned değeri false dönüyor.
2. formdaki butona tıklıyorum ve form oluşturuluyor.
3. formda assigned komutunu kullandığımda form oluşturulmuş olarak gözüküyor
Şimdi sorun nerede?
- ender_arslanturk
- Kıdemli Üye
- Mesajlar: 709
- Kayıt: 18 Şub 2005 03:38
- Konum: İstanbul
Pekii 1. Forma bir adet label atıp diğer her iki formdan bu labele değer gönder ... Diğer formlara ayrıca butonlar koyup Labelin Captionunu sorgularmısın... Mesela showmessage ile... Fakat Labele diğer formlardan ayrı ayrı değer ver mesela Label1.Caption:='Deneme1'; diğerinden de deneme2 olarak sonra diğer formlar açıkken bu değerleri kontrol ettir... Bakalım ne olucak...Ali Erdoğan yazdı: 3 tane form oluşturdum.
1. form diğer iki formda ortak olarak kullanılıyor.
2.formda butona tıklandığı zaman 1. form create ediliyor.
3.formda butona tıklatığım zaman assigned kontrolü yapıyorum.
3.formda bulunan butona tıkladığımda assigned değeri false dönüyor.
2. formdaki butona tıklıyorum ve form oluşturuluyor.
3. formda assigned komutunu kullandığımda form oluşturulmuş olarak gözüküyor
Şimdi sorun nerede?

-
- Kıdemli Üye
- Mesajlar: 1026
- Kayıt: 11 Şub 2005 02:12
- Konum: İstanbul
1. forma bir label koydum
2. forma iki tane buton koydum
label yaz : tıklandığında merhaba ben ikiyim yazıyor
label oku : tıklandığında 1.formdaki label in değerini gösteriyor
3.forma bi tane buton koydum
label yaz : tıklandığında merhaba ben form üçüm yazıyor.
Sonra uygulamayı çalıştırdım.
2. formu açıp label yaz tuşuna bastım.
label oku tuşuna bastım "merhaba ben ikiyim"
3. formu açtım
label yaz tuşuna bastım
sonra 2. forma dönüp label oku tuşuna bastım:"merhaba ben üçüm"
bunda sorunlu olan ne var şimdi.
formları açarken
if not assigned(form) then
deyip create ediyorum.
2. forma iki tane buton koydum
label yaz : tıklandığında merhaba ben ikiyim yazıyor
label oku : tıklandığında 1.formdaki label in değerini gösteriyor
3.forma bi tane buton koydum
label yaz : tıklandığında merhaba ben form üçüm yazıyor.
Sonra uygulamayı çalıştırdım.
2. formu açıp label yaz tuşuna bastım.
label oku tuşuna bastım "merhaba ben ikiyim"
3. formu açtım
label yaz tuşuna bastım
sonra 2. forma dönüp label oku tuşuna bastım:"merhaba ben üçüm"
bunda sorunlu olan ne var şimdi.
formları açarken
if not assigned(form) then
deyip create ediyorum.
-
- Kıdemli Üye
- Mesajlar: 395
- Kayıt: 22 Tem 2004 09:15
- Konum: İzmir
- İletişim:
Selam,
var
frmmain: Tfrmmain;
frmmain1: Tfrmmain;
frmmain3: Tfrmmain;
Begin
if not asigned(frmmain) then frmMain := Tfrmmain.create(self);
if not asigned(frmmain1) then frmMain := Tfrmmain.create(self);
if not asigned(frmmain3) then frmMain := Tfrmmain.create(self);
End.
Burada kaç tane pencere açılır ? 3 tane açılır.
var
frmmain: Tfrmmain;
Begin
if not asigned(frmmain) then frmMain := Tfrmmain.create(self);
if not asigned(frmmain) then frmMain := Tfrmmain.create(self);
if not asigned(frmmain) then frmMain := Tfrmmain.create(self);
End.
Burada kaç pencere açılır ? 1 tane.
Deneyemedim zira ben delphi ile program yazmadığımdan işyerinde ve kendi makinamda delphi yok. Ancak kızımın makinasında kurulu delphi 7 yi kullanmama izin verdiğinde deneyebiliyorum. Denedikten sonra durumun bu şekilde olduğunu göreceksiniz.
var
frmmain: Tfrmmain;
frmmain1: Tfrmmain;
frmmain3: Tfrmmain;
Begin
if not asigned(frmmain) then frmMain := Tfrmmain.create(self);
if not asigned(frmmain1) then frmMain := Tfrmmain.create(self);
if not asigned(frmmain3) then frmMain := Tfrmmain.create(self);
End.
Burada kaç tane pencere açılır ? 3 tane açılır.
var
frmmain: Tfrmmain;
Begin
if not asigned(frmmain) then frmMain := Tfrmmain.create(self);
if not asigned(frmmain) then frmMain := Tfrmmain.create(self);
if not asigned(frmmain) then frmMain := Tfrmmain.create(self);
End.
Burada kaç pencere açılır ? 1 tane.
Deneyemedim zira ben delphi ile program yazmadığımdan işyerinde ve kendi makinamda delphi yok. Ancak kızımın makinasında kurulu delphi 7 yi kullanmama izin verdiğinde deneyebiliyorum. Denedikten sonra durumun bu şekilde olduğunu göreceksiniz.
Doğan Zorlu, İzmir
------------------------
"Bu Kitap'ı sana yalnız şunun için indirdik: Hakkında ayrılığa düştükleri şeyi onlara iyice açıklayasın ve Kitap, iman eden bir topluluk için kılavuz ve rahmet olsun." (NAHL 64)
------------------------
"Bu Kitap'ı sana yalnız şunun için indirdik: Hakkında ayrılığa düştükleri şeyi onlara iyice açıklayasın ve Kitap, iman eden bir topluluk için kılavuz ve rahmet olsun." (NAHL 64)
-
- Kıdemli Üye
- Mesajlar: 1026
- Kayıt: 11 Şub 2005 02:12
- Konum: İstanbul
Aynı formu neden üç farklı değişkene referanse ettiniz anlamadım.
Ben:
Kullanıyorum.Hiçbir sorun olmuyor.Form yinilenmiyor.
Ben:
Kod: Tümünü seç
if not assigned(form) then
application.createform(tform,form);
form.show();
Bahsedilmek istenen sorun aslında şu olmalı !:
Bu şekilde formu yarattıktan sonra Assigned(Form1) kontrolü yaptığımızda True sonucu dönecektir. Ancak Formu free ettikten sonra Form1 değerini nil yapmazsak Assigned kontrolünde tekrar True dönecektir.
Yani.
Yaptığımızda Form1 in içi halen pointer referansı ile dolu olacak, o halde Free den sonra Form1:= nil yapmalıyız ki kontrolden sonra doğru sonuç alalım.
Ben genelde FreeAndNil proc. unu kullanırım. Bu proc. Form'u free ettikten sonra değere nil ataması yapar.
Bu şekildeki kullanım ile Form yaratılmış mı yaratılmamış mı düzgün biçimde anlayabiliriz.
@dogansimsek ya bu formun 3 kopyası olsaydı üzerinden giderek yanıt vermiş. O zaman da Form pointer'larını tutan değişkenlerin Assigned kontrolünü yapmamız yetecektir veya Form pointer'larını bir TList'te tutarak işlemleri gerçekleştirebiliriz. Ben bir problem göremiyorum.
Kod: Tümünü seç
Form1:= TForm1.Create(nil);
Yani.
Kod: Tümünü seç
Form1.Free;
Ben genelde FreeAndNil proc. unu kullanırım. Bu proc. Form'u free ettikten sonra değere nil ataması yapar.
Kod: Tümünü seç
FreeAndNil(Form1);
@dogansimsek ya bu formun 3 kopyası olsaydı üzerinden giderek yanıt vermiş. O zaman da Form pointer'larını tutan değişkenlerin Assigned kontrolünü yapmamız yetecektir veya Form pointer'larını bir TList'te tutarak işlemleri gerçekleştirebiliriz. Ben bir problem göremiyorum.