global procedure kullanımı

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
hatice_sevim
Üye
Mesajlar: 50
Kayıt: 17 Haz 2003 09:00
Konum: İstanbul

global procedure kullanımı

Mesaj gönderen hatice_sevim »

Merhaba arkadaşlar;

Formda gezerken bir yerde değişkenlerin global kullanılmasından bahsediliyordu. Ben değişkenleri kullanabiliyorum fakat ortak kullandığım bir procedure için de bunu yapmak istiyorum olması gerekiyor fakat ben başaramadım.

Kod: Tümünü seç

procedure Tform_gelen.enter_al(Sender: TObject; var Key: Char);
begin
 if (Key=#13) then
   begin
   key:=#0;
   Perform(WM_NEXTDLGCTL,0,0);
   end;
if (Key=#27) then halt;

end;

şeklin de enter tuşu ile nesneler arasında gezinmemi sağlayan procedure' ü bütün form larımda kullanmak istiyorum tabiki bir defa yazarak. Çok uğraştım ama malesef olmuyor. Bunu public' te tanımlıyorum, kullanacağım unit' in uses satırında bulunduğu unit' i yazıyorum. Çağırmak istediğim formun onkeypress' inde bunu görmem gerekiyor diye düşünüyorum ama olmuyor.( başka ne yapmam gerekiyor?)

Sanırım anlatabilmişimdir....
Bu bir örnek tabiki bunun gibi procedure'leri global olarak tanımlamak ve ortak kullanabilmek için başka ne yapmam veya nasıl yapmam gerekiyor.
Çok teşekkürler
Hatice SEVİM / BEDAŞ
mavsar

Mesaj gönderen mavsar »

Belirtilen olay için formun keypress eventına belirttiğiniz kodu yazmalısınız ayrıca formun keypreview özelliğinin true olmasını sağlamalısınız. Ardından istediğiniz kod çalışır.

Kolay gelsin

Mehmet

P.S. Eğer fonksiyon tuşlarınıda kontrol edecekseniz Formun KeyDown eventına yazmalısınız. Key değerlerini almayı bildiğinizi farz ediyorum
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7586
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

sanırım benim yazdığım mesajdan bahsediyorsunuz. Ben birden fazla unitte kullandığım değişken, fonksiyon ve procedure'leri bir unitte topluyorum. Mesela Kullanıcı ismini tuttuğum değişken. Bazı formlarda kayıt yaparken, kimin kaydettiğinide veritabanına saklamak gerekiyor, hemen bu değişkenden alıyorum. veya yetki tanımlaması yaptım, kullanıcının o formda silme yetkisi var mı? diye bir fonksiyonum var. Bunu hemen her formda kullandığım için bu unitimin içine koyuyorum. Büyük kolaylık sağlıyor.

Ancak sizin istediğiniz biraz daha farklı birşey. Aklıma gelen hemen kullandığınız bileşenden bu özelliği kapsayan yeni bir bileşen türetebilirsiniz. Mesela TEdit kullanıyorsanız, TEnterEdit isimli bir bileşen türetip, Enter'a basıldığında diğer bileşene geçmesini sağlayabilirsiniz.

Ya da her formda bir Edit'in OnKeyPress olayına yazıp, diğerlerine yazmadan hepsi için bu olayı seçersiniz. Yani her Edit'e birer defa yazmak yerine, her formda sadece bir sefer yazarsanız.

Aklıma ilk etapta gelenler bunlar. Belki daha değişik tecrübeleri olanlar vardır.

Kolay gelsin.
hatice_sevim
Üye
Mesajlar: 50
Kayıt: 17 Haz 2003 09:00
Konum: İstanbul

Mesaj gönderen hatice_sevim »

Merhaba Arkadaşlar;

Çok teşekkürler...

Bu procedure ü ben bulunduğum form üzerinde kodlayıp kullanabiliyorum. İkinci formumda da bu procedure çağırabilmem gerekiyor diye düşünüyorum ama olmuyor.

Bahsettiğim örnekteki procedure ü enter_al(parametre1,parametre2) şeklinde çalıştırabilmem için hangi değerleri göndermem gerekiyor peki arkadaşlar.

Kod: Tümünü seç

procedure Tform_giden.FormKeyPress(Sender: TObject; var Key: Char);
begin
    enter_al(parametre1,parametre2)
end;
Yani şeklinde entar_al() ' ı görebiliyorum ama parametre değerlerim ne olmalı ki çalışabilsin....

Teşekkürler.
Hatice SEVİM / BEDAŞ
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2356
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

enter_al(parametre1 : TObject; var parametre2: Char)
parametreleri sen seçiceksin, yani ne istersen gönderebilirsin, sadece eğer geri dönmesini istediğin bir parametre varsa başına var eklemen gerek, bunun anlamı şu "Enter_al" procedure üne dışarıdan gelen parametrelerden "Parametre1" TObject tipinde bunu bir pointer gibi kullanabilirsin, yani "Sender is TEdit" gibi, buda sana hangi class ın senin event'ini tetiklediğini belirlemeni sağlar,yada gelen class ın bazı propertylerini değiştirebilmene yarar.
örnek :

Kod: Tümünü seç

TEdit(Sender).Text := 'Deneme';
gibi

Var ifadesinin faydası bir değer geldi diyelim, #13. İşlem yaptıktan sonra bunu sıfırlamak istiyorsun, "Key := #0" dersen içerik sıfırlanır. Var ın vazifesi bu değeri procedure dışına çıkartmaktır

Kod: Tümünü seç

procedure Tform_giden.FormKeyPress(Sender: TObject; var Key: Char); 
begin 
    enter_al(Sender, Key);
end; 
şeklinde kullanabilirsin.

Kolay Gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Arkadaşlar bence bu konu çok önemli ben biraz uğraştım Perform metodu problem veriyor.

Benim projem bitmek üzere Ön Muhasebe programı yazıyorum yalnız bu projem demo versiyonu olduğu için Ticari sürümünü ADMIN arkadaşımızın anlattığı gibi bir yöntemle değiştirmek ve o yöntemle geliştirmek istiyorum fakat bende bu yöntemle hiç program geliştirmedim ve tahminime göre bizim gibi bu konuda bilgisi olmayan arkadaşlarımızın da sayısı çok gibi geliyor gercekten önemli neyin nasıl yapılacağını bilmeden bir programı geliştirmek gercekten zor bir tarafını düzeltiyorsunuz bir tarafında problem çıkıyor. Ama biraz bilinç düzeyimiz yükselirse inanıyorum çorap ipliği gibi sökülecek. Benim ricam bu konuda bir ders sayfası hazırlanıp siteye eklenmesi.

Umarım Kafanızı şişirmemişimdir.

İyi Çalışmalar.

Bilmemek Ayıp Değil Öğrenmemek ise Gercekten Çok Ayıp
Ne de olsa Bilgi Teknolojisindeyiz.
Cevapla