hangi formun active olduğnu öğrenmek
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
hangi formun active olduğnu öğrenmek
S.a. Arkadaşlar...Toolbarın üstünde kayıt sil ilk kayıt son kayıt gibi butonlarımız var...Ben bunları tüm dll içindeki formlar için ortak kullanmak istiyorum...Yani yeni kayıt butonuna tıklandığı zaman hangi formun active olduğunu anlamam lazım...böyle bir delphi üzerinde activewindow gibi vb. öğrenebileceğim bir durum var mı...veya nasıl öğrenebilirim...Teşekkürler...şimdiden cevabınız için...
Re: hangi formun active olduğnu öğrenmek
Form inheritance kullandıysan daha kolayı var;delphist yazdı:S.a. Arkadaşlar...Toolbarın üstünde kayıt sil ilk kayıt son kayıt gibi butonlarımız var...Ben bunları tüm dll içindeki formlar için ortak kullanmak istiyorum...Yani yeni kayıt butonuna tıklandığı zaman hangi formun active olduğunu anlamam lazım...böyle bir delphi üzerinde activewindow gibi vb. öğrenebileceğim bir durum var mı...veya nasıl öğrenebilirim...Teşekkürler...şimdiden cevabınız için...
Öncelikle formu hazırla.; ilk kayıt butonunada kodunu jenerik yaz ...
mesela
dbedit1.datasource.dataset.first gibi. böyle ce bağlı datasource hangisi ise o çalışır.
sonra fu formu object repository e ekle.
yeni form dediğin zaman obje reporsitoryden bu formu sec ve inheritance de. datasource bağladığın anda tüm kodları hazır bulacaksın.
Selam.
- Açık söyleyim çözüm önersini anlamadım. Soruyu yanlış anlamış da olabilirim. Belki birbirine bağlantı kuramadığımdan kafam karışmıştır.
Şöyle bulabilirsin....
veya ComponentCount kadar bir döngü kurup
şekilinde Active olanı öğrenebilirsin...
- Ek olarak....Başka bir yaklaşım sunayım belki kullanışlıı gelir...
- Kullanım alanımı bildireyim. Bir formum olsa, showmodal şeklinde değil de show ile çağrılır halde olsa ve birden fazla form tarafından çağrılabiliyor olsa, hangi formdan çağrıldığını anlamam ve o çağrıldığım formu kilitlemem lazım gelirdi.
- Bu noktadan yola çıkarak, çağrılacak ortak forma bir tane global değişken eklerdim...
- Sonra da yapacağım şey şu olurdu. Her nereden bu form çağrılıp show edilecekse bir satır önce;
şeklinde yazıp çağrı yapan formun benliğini takip altına alırdım. Çağrılan formda da
dediğimde kim cagri yaptıysa o formu kilitler, iş bittiğinde de
- Deyip yanlışlık yapma ihtimalimi 0'a indirgerdim.
- Yaklaşım fikir vermek adına kurgulanmıştır, gerçek hayattaki kişi ve /veya kişilerle ilgili bağlantısı yoktur. Hayal ürünüdür...
- Açık söyleyim çözüm önersini anlamadım. Soruyu yanlış anlamış da olabilirim. Belki birbirine bağlantı kuramadığımdan kafam karışmıştır.
Şöyle bulabilirsin....
Kod: Tümünü seç
ShowMessage(ActiveControl.Owner.Name);
Kod: Tümünü seç
If (Components[sayac] is TForm) AND (TForm(Components[sayac]).Active) then bla...bla..
- Ek olarak....Başka bir yaklaşım sunayım belki kullanışlıı gelir...
- Kullanım alanımı bildireyim. Bir formum olsa, showmodal şeklinde değil de show ile çağrılır halde olsa ve birden fazla form tarafından çağrılabiliyor olsa, hangi formdan çağrıldığını anlamam ve o çağrıldığım formu kilitlemem lazım gelirdi.
- Bu noktadan yola çıkarak, çağrılacak ortak forma bir tane global değişken eklerdim...
Kod: Tümünü seç
Var
xCagriSahibi : TForm;
Kod: Tümünü seç
xCagriSahibi := Self;
Kod: Tümünü seç
If Assigned(xCagriSahibi) then xCagriSahibi.Enabled := false;
Kod: Tümünü seç
xCagriSahibi.Enabled := True;
xCagriSahibi := Nil;
- Yaklaşım fikir vermek adına kurgulanmıştır, gerçek hayattaki kişi ve /veya kişilerle ilgili bağlantısı yoktur. Hayal ürünüdür...

Aslında gerçek hayatttan pek farksız olmamış.MDIChild formlar kullandığım bir projede belirli bir form açıkken bazı formlara ulaşılmaması gerekiyordu.Söylediğiniz yöntemi kullanıyordum.- Yaklaşım fikir vermek adına kurgulanmıştır, gerçek hayattaki kişi ve /veya kişilerle ilgili bağlantısı yoktur. Hayal ürünüdür...
Ama artık ShowModal açılan fsNormal formlar kullanmayı tercih ediyorum.



Ben olayı biraz daha açıklarsam heralde tam olarak istediğim olayı tam anlatamadım...Ayrıca sizin active olan formu bulduğunuz code işimi görebilir ama belki başka önerileriniz de olabilir diyerekten ben olayı açıklıyorum tekrar.
Ben projemde dll'ler içinde mdi main form kullanıyorum ana exe uygulamamdan mdi main form çağırıyorum...Ve mdimain formun üzerinde toolbar kullanarak kayıt sil gibi butonları bu toolbarın üzerinde kullanıyorum dll içindeki diğer mdi child formlarıda bu açtığım mdi main formun içinde kullandığım zaman mdi main formun üzerinde bulunan toolbarın içindeki kayıt veya sil butonu gibi butonların hangi form active ise o formun dataset ve querylerini çalıştırmasını istiyorum...Yani toolbarı üzerindeki butonlar tek ama bütün mdichild formların kontrolünü bu toolbar üzerindeki butonlar sayesinde çalışmasını istiyorum...Burda önemil olan sağlıklı olarak hangi formun active olduğunu bilmek...Gerisini zaten halledebilirim...
Yardımlarınız için teşekkürler...
Ben projemde dll'ler içinde mdi main form kullanıyorum ana exe uygulamamdan mdi main form çağırıyorum...Ve mdimain formun üzerinde toolbar kullanarak kayıt sil gibi butonları bu toolbarın üzerinde kullanıyorum dll içindeki diğer mdi child formlarıda bu açtığım mdi main formun içinde kullandığım zaman mdi main formun üzerinde bulunan toolbarın içindeki kayıt veya sil butonu gibi butonların hangi form active ise o formun dataset ve querylerini çalıştırmasını istiyorum...Yani toolbarı üzerindeki butonlar tek ama bütün mdichild formların kontrolünü bu toolbar üzerindeki butonlar sayesinde çalışmasını istiyorum...Burda önemil olan sağlıklı olarak hangi formun active olduğunu bilmek...Gerisini zaten halledebilirim...
Yardımlarınız için teşekkürler...
Benim sana naçizane tavsiyem bu toolbarı main form üzerine yapmaktan vazgeçip, ikut arkadaşımızın söylediği gibi inherit form kullanmandır.Bu sana kolaylık, hız, olası hataları çabuk düzeltme, tsasrım değişikliklerinde kolaylık vs........konularında avantaj sağlayacaktır.Ayrıca sıfır koda yazarak yeni bir form create edip sadece adını değiştirerek projeye dahil etmenin dayanılmaz keyfi de cabası...
-
- Kıdemli Üye
- Mesajlar: 1223
- Kayıt: 26 Nis 2005 04:08