1

Konu: image obj.de keypress

selam arkadaslar,

image objesinde keypress metedu bulamadim. mouse image objesi üzerindeyken (basit bir tasarım ara yüzü hazırlıyorum)  klavyade hangi tuşa basıldığını bulmam gerekiyor. bunun için bir yöntem var mı?

şimdiden teşekkürler.

2

Re: image obj.de keypress

formun keypress ini kullanıp koordinatları tesbit edebilirsin.

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com

3 Son düzenleyen, aydinufuk (26.08.2009 16:11:24)

Re: image obj.de keypress

formda başka obje olmayınca problem yok da . pageframe vb. objeler de olunca problem oluyor. örneğin yön tuşları pageframede de tetiklenmeye neden oluyor. özetle başka bir yöntem gerek sanırım. yada  formdaki diğer tüm objelerin keypress yada yön tuşları tetiklemelerini kaldırmak gerek ama onu da bulamadım.

4 Son düzenleyen, aydinufuk (26.08.2009 17:13:06)

Re: image obj.de keypress

kendi soruma söyle bir çözüm buldum. belki başka arkadaşların da işine yarar.
form1.KeyPreview=.t. ayarı keypress tetiklemelerini önce formun keypress metoduna gönderiyor. sanırım koordinatlara bakarak keypressi yönetebilirim.

5

Re: image obj.de keypress

Metin'in soyledigi de oydu. Sys(1270) ile image uzerinde olup olmadigina bakabilirsin. Ornek:

Visual Fox Pro
loControl = sys(1270)

if type('loControl') = 'O' and !isnull(loControl) and loCOntrol = thisform.imgResim
* ...
endif

6 Son düzenleyen, aydinufuk (28.08.2009 12:21:58)

Re: image obj.de keypress

metin ve cetinin önerilererinden hareketle bir deneme yaptim.  şimdide yeni problem şu.  form1.KeyPreview=.t.    yaptığımda keypress tetiklemesi önce bu metoda gidiyor.  sonra aktif obje de de aynı keypress tetiklemesine devam ediyor.  ben bunu istemiyorum. keypreview metodunda return koduda koydum ama bir işe yaramadı. tetikleme hem formda hemde aktif objede devam ediyor.  ben duruma göre aktif objede devam etmesini istemiyorum . lakin beceremedim smile  örneğin aktivobje pageframe ise keypressi kontrol edemiyorum. image aktiv eden bir yöntemde yok bildiğim kadarı ile.

bir öneriniz var mı?

7

Re: image obj.de keypress

Problemi tam anlayamadım ama, image yerine button kullanıp resmi ona giydirsen olurmu  acaba. Butonun keypresi var.

8

Re: image obj.de keypress

aydinufuk yazdı:

metin ve cetinin önerilererinden hareketle bir deneme yaptim.  şimdide yeni problem şu.  form1.KeyPreview=.t.    yaptığımda keypress tetiklemesi önce bu metoda gidiyor.  sonra aktif obje de de aynı keypress tetiklemesine devam ediyor.  ben bunu istemiyorum. keypreview metodunda return koduda koydum ama bir işe yaramadı. tetikleme hem formda hemde aktif objede devam ediyor.  ben duruma göre aktif objede devam etmesini istemiyorum . lakin beceremedim smile  örneğin aktivobje pageframe ise keypressi kontrol edemiyorum. image aktiv eden bir yöntemde yok bildiğim kadarı ile.

bir öneriniz var mı?

dont_run diye bir property koy foruma

formun keypressin ne
dont_run=.t. dersin istediğin zaman

kontorlün keypressinde de
if thisform.dont_run
   thisform.dont_run=.f.
   retu
endif

dersin...

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com

9

Re: image obj.de keypress

aydinufuk yazdı:

metin ve cetinin önerilererinden hareketle bir deneme yaptim.  şimdide yeni problem şu.  form1.KeyPreview=.t.    yaptığımda keypress tetiklemesi önce bu metoda gidiyor.  sonra aktif obje de de aynı keypress tetiklemesine devam ediyor.  ben bunu istemiyorum. keypreview metodunda return koduda koydum ama bir işe yaramadı. tetikleme hem formda hemde aktif objede devam ediyor.  ben duruma göre aktif objede devam etmesini istemiyorum . lakin beceremedim smile  örneğin aktivobje pageframe ise keypressi kontrol edemiyorum. image aktiv eden bir yöntemde yok bildiğim kadarı ile.

bir öneriniz var mı?

Eger keypress'in o noktada o tusu "yutmasini" istiyorsan:

NODEFAULT

ornek:

*form.Keypress
lparameters nKeyCode, nSAC
if ( m.nKeyCode = asc('a') ) && a yi basmayan klavye gibi
   NODEFAULT
  * ne yapacaksan
endif

10

Re: image obj.de keypress

ÜStad, hazır NODEFAULT demişken, Bir çok fonksiyon ve PEM de  DODEFAULT ve NODEFAULT görüyorum. Mümkünse biraz açabilirmisin?

Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

11

Re: image obj.de keypress

event'ların default event'ı çalışmasın diye nodefault yazarsın, methodların default method'u çalışsın diye de dodefault() yazarsın.

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com

12

Re: image obj.de keypress

Metin bu özet ve açıklayıcı bilgi için  teşekkür ederim.

Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

13 Son düzenleyen, aydinufuk (29.08.2009 13:48:39)

Re: image obj.de keypress

metinin form.keypress ve cetinin keypress yutan NODEFAULT çözümü ve obje bulan Sys(1270) foksiyonları işimi gördü.  güzel bir uygulama olacak sonuc görüntüsünü size de gönderirim.

birolun button önerisi de belki olabilirdi ama GDIPLUS ın hazır classlarının kullanıyorum ve classlar image obje üzerinde geliştirilmiş.

teşekkürler arkadaşlar.

14

Re: image obj.de keypress

NODEFAULT ile DODEFAULT arasinda isim benzerligi var ama biribirinin tersi seyler degiller tam olarak.

VFP'nun uzerinde hazir gelen event kodlari (bu kodlari hic gormuyorsun ama var) daima calisir. O eventlere kod yazman onlarin calismasini engellemez. Ornek olarak:
MouseDown, MouseOver, Click, Keypress, Gotfocus, Lostfocus ... Mesela bir tusa bastiginda Keypress kodu sayesinde o controlde birsey yapiliyor. Tipik orneklerden birisi Lostfocus. Herhangi bir textbox'in Lostfocus'una:

Visual Fox Pro
this.SetFocus()

yazip dene.  Hicbir etkisinin olmadigini gorursun. Nedeni VFP'nin kendi kodu senin kodundan sonra calisip yapmasi gereken "Lost focus" isini yapiyor ve focusu kaybediyor. Onu calistirmak icin NODEFAULT diyerek VFP kodunu engellemen lazim:

Visual Fox Pro
NoDefault

this.SetFocus()

DoDefault() ise, biraz yanlis verilmis bir isim, parent class kodu varsa ve her neyse, kullandigin yere sanki copy&paste ile koymussun gibi calistirmak.

Yani DoDefault() uzun suredir kullanicilarin unuttugu :: (scope resolution) operatorunun kisitli bir versiyonunu yapiyor.

Visual Fox Pro
clear

o = CREATEOBJECT('c3')
? 'o.TestProcedure1()'
o.TestProcedure1()
?
? '----------------------'
? 'o.TestProcedure2()'
o.TestProcedure2()
?
? '----------------------'
? 'o.TestProcedure3()'
o.TestProcedure3()
 
 
Define Class c1 As Custom
Procedure TestProcedure1
  ? "C1 TestProcedure1"
Endproc
Procedure TestProcedure2
  ? "C1 TestProcedure2"
Endproc
Procedure TestProcedure3
  ? "C1 TestProcedure3"
Endproc
ENDDEFINE
 
 
Define Class c2 As c1
Procedure TestProcedure1
  ? "C2 TestProcedure1"
Endproc
Procedure TestProcedure2
  ? "C2 TestProcedure2"
Endproc
Procedure TestProcedure3
  ? "C2 TestProcedure3"
Endproc
ENDDEFINE
 
Define Class c3 As c2
Procedure TestProcedure1
  ? "C3 TestProcedure1"
  * NODEFAULT gereksiz - VFP built-in event degil
  * Burada en ufak kod oncekileri baskilar - 'override'
Endproc
Procedure TestProcedure2
  DODEFAULT() && ParentClass::TestProcedure2
  ? "C3 TestProcedure2"
  DODEFAULT()
Endproc
Procedure TestProcedure3
  C1::TestProcedure1()
  C1::TestProcedure3() && dodefault()'a benzer
  C2::TestProcedure3() && dodefault()
  ? "C3 TestProcedure3"
  Custom::Application.DoCmd("? 'Custom'") && base class Custom
Endproc
ENDDEFINE

15 Son düzenleyen, ugurlu2001 (30.08.2009 12:11:31)

Re: image obj.de keypress

Üstad, Çok kolay gibi görünüyor ama hayli karışık. Üstünde biraz çalışmadan anlaşılıcak gibi gelmedi bana. Kodun başına SET STEP ON deyip adım adım kodu çalıştırınca daha iyi anlaşıldı. Kullanılıcak yerlerde hiç az değil. Neredeyse hemen her yer. Üstünde bol örnek yapmadan çok iyi kavrayacağımı sanmıyorum.

Detaylar ve açıklamalar için çok ama çok teşekkürler.

Haneye bir çentik daha eklendi smile

Hep dediğim gibi, aklına, sağlığına  ve parmaklarına sağlık.

Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

16

Re: image obj.de keypress

cetin hocam farkındamısın bilmiyorum ama beni bir dertten daha kurtardın.  Çok teşşekürler. big_smile

Bilmediğin Neyse Yanıldığındır.