Formun OnKeyDown Olayı Devre dışı Kalıyor

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
akuyumcu63
Üye
Mesajlar: 386
Kayıt: 02 Tem 2007 09:43

Formun OnKeyDown Olayı Devre dışı Kalıyor

Mesaj gönderen akuyumcu63 »

merhaba;
Formun OnKeyDown Olayına

Kod: Tümünü seç

  if Key=VK_F2 then btnYeniClick( Sender );
  if Key=VK_F3 then btnKaydetClick( Sender );
yukarıdakine benzer kodlar yazıyorum. bu kodlar devre dışı kalıyor. bazen derleme kesintiye uğruyor hata mesajı vermiyor. derlemeye devam ettiriyorum program çalıyor ancak formun OnKeyDown olayındaki kodlar devredışı kalıyor. tekrar düzeltiyorum. program derleme sırasında kesintiye uğradığı zaman onkeydown devredışı,
problemin sebebi ne olabilir.

teşekkür ederim.
İsteyen, yapabildiğinden daha fazlasını yapar.
Kullanıcı avatarı
xozcanx
Üye
Mesajlar: 362
Kayıt: 05 Oca 2012 12:55

Re: Formun OnKeyDown Olayı Devre dışı Kalıyor

Mesaj gönderen xozcanx »

Merhaba;
Uygulamayı adım adım çalıştırmayı deneyin bence hatanın nereden kaynaklandığını bulmak için. bugün başıma gelen bir olay, giriş formumda font yüklemesi yapıyordum fakat buradaki bir satırdan dolayı uygulama derlemeyi yapıyor fakat uygulama açılmıyordu. Görev yöneticisinde çalışır durumdaydı.
Windows 8.1 Pro kullanırken Windows 10 güncellemesini yapayım dedikten sonra başıma gelen bir olay. XE8 ile yapılan bir çalışma.

Kod: Tümünü seç

  AddFontResource(PWideChar( ExtractFilePath(Application.EXEName) +'Tahoma.TTF')) ;
  SendMessage(application.handle, wm_fontchange, 0, 0); // düzenlenmiş hali
  //SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0) ; uygulamanın beklemeye aldığı kısım
siz de buna benzer bir değişiklik yaptıysanız böyle bir durum söz konusu olabilir.

İyi çalışmalar.
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
akuyumcu63
Üye
Mesajlar: 386
Kayıt: 02 Tem 2007 09:43

Re: Formun OnKeyDown Olayı Devre dışı Kalıyor

Mesaj gönderen akuyumcu63 »

programı XE2 de yazmıştım daha sonra XE6 ya geçtim. aynı programı XE6 la geliştirmeye devam ettim ondan sonra oldu. düzelir diye çalışmaya devam ettim. sıfırdan XE6 da program yazdım aynı sorunları onda da yaşadım.
şimdilik bulduğum çözüm şu; programın bütün formlarını açıyorum. bütün formların OnKeyDonwn olaylarını tekrar aktive ediyorum. takıntısız bir derleme yapıyorum. derlenen exe programda problem olmuyor. ancak aynı projeyi geliştirmeye devam ettiğin zaman illaki derlemede takılma oluyor o zaman Formun OnKeyDown olayları ucuyor.
İsteyen, yapabildiğinden daha fazlasını yapar.
ikra
Üye
Mesajlar: 900
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Re: Formun OnKeyDown Olayı Devre dışı Kalıyor

Mesaj gönderen ikra »

program yüklenirken (gelistirme esnasinda) ilk okunan pas dosyasi OnKeyDown prosedürünün tanimlandigi pas dosyasi olsun.
pojectmanager üzerinde projeye sag klik ve view source yap. orada siralamalari görürsün. düzenlemeyi yaptiktan sonra projeyi kayit et ve kapatip tekrardan ac. projectmanager'de siralamanin degistigini göreceksin.
kolay gelsin!
kıdemsiz üye
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: Formun OnKeyDown Olayı Devre dışı Kalıyor

Mesaj gönderen SimaWB »

xozcanx yazdı:

Kod: Tümünü seç

  AddFontResource(PWideChar( ExtractFilePath(Application.EXEName) +'Tahoma.TTF')) ;
  SendMessage(application.handle, wm_fontchange, 0, 0); // düzenlenmiş hali
  //SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0) ; uygulamanın beklemeye aldığı kısım
Bu başlık altında sorulan soru ile alakalı değil ama sizin gönderdiğiniz bu kodla ilgili birşey paylaşmak istiyorum:
SendMessage ile broadcast mesaj gönderdiğinizde tüm uygulamalar bu mesajı işlemeden sizin programınız bir sonraki satıra geçmeyecektir. Application.handle olarak değiştirdiğinizde; sadece kendi programınıza mesaj gönderdiğiniz için ve programınız bu mesajı hemen işlediği için işler sorunsuz devam ediyor.

İşletim sistemi ile alakası nedir bilmiyorum ama diğer çalışan uygulamaların bu font değişikliğiyle bir ilgisi yoksa siz zaten broadcast mesaj göndermemelisiniz. Yada SendMessage yerine PostMessage kullanmalısınız.

Siz probleminizi zaten çözmüşsünüz ama belki okuyan birisinin işine yarar diye yazma ihtiyacı duydum, Kusura bakmayın...
There's no place like 127.0.0.1
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: Formun OnKeyDown Olayı Devre dışı Kalıyor

Mesaj gönderen ertank »

Sender yerine Self yazarak deneyebilir misiniz? Emin değilim tabi.

if Key=VK_F2 then btnYeniClick( Self );
if Key=VK_F3 then btnKaydetClick( Self );
Kullanıcı avatarı
xozcanx
Üye
Mesajlar: 362
Kayıt: 05 Oca 2012 12:55

Re: Formun OnKeyDown Olayı Devre dışı Kalıyor

Mesaj gönderen xozcanx »

SimaWB yazdı:
xozcanx yazdı:

Kod: Tümünü seç

  AddFontResource(PWideChar( ExtractFilePath(Application.EXEName) +'Tahoma.TTF')) ;
  SendMessage(application.handle, wm_fontchange, 0, 0); // düzenlenmiş hali
  //SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0) ; uygulamanın beklemeye aldığı kısım
Bu başlık altında sorulan soru ile alakalı değil ama sizin gönderdiğiniz bu kodla ilgili birşey paylaşmak istiyorum:
SendMessage ile broadcast mesaj gönderdiğinizde tüm uygulamalar bu mesajı işlemeden sizin programınız bir sonraki satıra geçmeyecektir. Application.handle olarak değiştirdiğinizde; sadece kendi programınıza mesaj gönderdiğiniz için ve programınız bu mesajı hemen işlediği için işler sorunsuz devam ediyor.

İşletim sistemi ile alakası nedir bilmiyorum ama diğer çalışan uygulamaların bu font değişikliğiyle bir ilgisi yoksa siz zaten broadcast mesaj göndermemelisiniz. Yada SendMessage yerine PostMessage kullanmalısınız.

Siz probleminizi zaten çözmüşsünüz ama belki okuyan birisinin işine yarar diye yazma ihtiyacı duydum, Kusura bakmayın...

Hocam ne demek, neden kusura bakayım ben bu alanda yeni ve acemiyim, sizlerin sayesinde birşeyler öğreniyorum.iki kod arasındaki farklılığı farketmiştim fakat yorumlayamamıştım, onu da siz açıkladınız ve öğrenmiş oldum.Rabbim sizlerden razı olsun.
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
akuyumcu63
Üye
Mesajlar: 386
Kayıt: 02 Tem 2007 09:43

Re: Formun OnKeyDown Olayı Devre dışı Kalıyor

Mesaj gönderen akuyumcu63 »

merhaba;
if Key=VK_F2 then btnYeniClick( Self );
if Key=VK_F3 then btnKaydetClick( Self );
bu işlem sonuç vermedi. yine onkeydown uçuyor.
ikra arkadaşımın dediğinden bir sonuç çıkaramadım. view source da bu işlemle alakalı bir şey göremedim.
İsteyen, yapabildiğinden daha fazlasını yapar.
ikra
Üye
Mesajlar: 900
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Re: Formun OnKeyDown Olayı Devre dışı Kalıyor

Mesaj gönderen ikra »

aklim property'lere gitmis. eventler ile alakasi yok. pardon!
bahsettigim sey properties icin gecerli.
kıdemsiz üye
akuyumcu63
Üye
Mesajlar: 386
Kayıt: 02 Tem 2007 09:43

Re: Formun OnKeyDown Olayı Devre dışı Kalıyor

Mesaj gönderen akuyumcu63 »

formdaki companentlarda Enter tuşu ile gezinme işlemi için DOSMOVE componentini kullanıyorum. her forma bundan bir tane ekliyorum.
bundan olabilir mi
İsteyen, yapabildiğinden daha fazlasını yapar.
akuyumcu63
Üye
Mesajlar: 386
Kayıt: 02 Tem 2007 09:43

Re: Formun OnKeyDown Olayı Devre dışı Kalıyor

Mesaj gönderen akuyumcu63 »

merhaba;
değerli arkadaşlar onkeydown daki kodları OnKeyUp olayına yazdım problem bu şekilde çözüldü. herkese teşekkür ederim.
İsteyen, yapabildiğinden daha fazlasını yapar.
Cevapla