mouse kontrol-forma değil masaüstündeki simgeye sağ tıklıyor

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
must_sargin
Üye
Mesajlar: 216
Kayıt: 14 Şub 2004 03:13
Konum: Gebze
İletişim:

mouse kontrol-forma değil masaüstündeki simgeye sağ tıklıyor

Mesaj gönderen must_sargin »

iyi çalışmalar arkadaşlar,
formun on show'una

var
Pt: TPoint;
begin

Pt.X := 190;
Pt.Y := 190;
SetCursorPos(Pt.X, Pt.Y);
Mouse_event( MOUSEEVENTF_RIGHTdown, 0, 0, 0, 0 );
Mouse_event( MOUSEEVENTF_RIGHTup, 0, 0, 0, 0 );

kodlarını yazdım.sorunum form açılınca deaktif görünüyor formurun.activate komutunuda denedim ama olmadı ve mouse formun üstüne bıraktığım dbgride tıklaması gerekirken masaüstündeki dosyaya sağ tıklıyor.acaba nerede hata yapıyorum?
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Mesaj gönderen unicorn64 »

belirttiğiniz 190x190 konumu sanırım dbgridin formun üzerindeki kordinatları. ancak mouse 0x0 noktasını ekranın sol üst köşesi olarak algılıyor. onun için sanırım formun sol üst değerini de kullanmanız lazım.

yani

Kod: Tümünü seç


Pt.X := 190+form1.left;
Pt.Y := 190+form1.top;

 
gibi bi kullanım olması gerekiyor galiba...
must_sargin
Üye
Mesajlar: 216
Kayıt: 14 Şub 2004 03:13
Konum: Gebze
İletişim:

Mesaj gönderen must_sargin »

dediğiniz kodla dbgridin içine tıklanıyor ama rakamları değiştirip dbgridin başlığına tıklamak istediğimde yine masaüstündeki dosyaya sağ tıklıyor.
must_sargin
Üye
Mesajlar: 216
Kayıt: 14 Şub 2004 03:13
Konum: Gebze
İletişim:

Mesaj gönderen must_sargin »

arkadaşlar bu sorunu yaşayan arkadaşlar buldukları çözüm yolunu söylerse çok sevinirim.projemde gerçekten çok gerekli bir kısım.
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

Mesaj gönderen White Rose »

bu olayla sizin yapmanız gereken nedir, yani ne yapmak isyorsunuz
dbgridin başlığı üreinde sağ mı tıklamak istiyorsunuz biraz daha açık yazarsanız iyi olur.
must_sargin
Üye
Mesajlar: 216
Kayıt: 14 Şub 2004 03:13
Konum: Gebze
İletişim:

Mesaj gönderen must_sargin »

s.a.
ben tmsdbgrid kullanıyorum.onun gruplama özelliği var.ancak bu özelliği kullanmak için gruplanacak kolonun başlığına sağ tıklamak gerekiyor.veriler gruplanınca tıpkı dbtreeview gibi görünüyor ve kullanıcı açısından çok kullanışlı oluyor.fakat yazdığım kodlarla gridin başlığına sağ tıklamıyor.nedense masaüstündeki dosyaya sağ tıklıyor.ama rakamlarla oynadığımda gridin içine sağ tıklıyor.
Glen
Üye
Mesajlar: 277
Kayıt: 12 Eki 2005 11:58

Mesaj gönderen Glen »

must_sargin yazdı:s.a.
ben tmsdbgrid kullanıyorum.onun gruplama özelliği var.ancak bu özelliği kullanmak için gruplanacak kolonun başlığına sağ tıklamak gerekiyor.veriler gruplanınca tıpkı dbtreeview gibi görünüyor ve kullanıcı açısından çok kullanışlı oluyor.fakat yazdığım kodlarla gridin başlığına sağ tıklamıyor.nedense masaüstündeki dosyaya sağ tıklıyor.ama rakamlarla oynadığımda gridin içine sağ tıklıyor.
TMS grid dediginiz bilesen buglarla dolu bir bilesen. Bir an once bileseninizi degistirin DevExpress Grid kullanin. Satin almak icin bana basvurun.. Saka saka :) Reklam gibi oldu da o bakimdan :) Ama yok cidden bu tip sacma sapan hatalarla ugrasmaniz yerine programiniza odaklanmaniz icin cxGrid i oneririm.

Kolay gelsin.
Kullanıcı avatarı
pasa_yasar
Üye
Mesajlar: 570
Kayıt: 07 Haz 2004 12:35

Mesaj gönderen pasa_yasar »

pixel olarak algıladığı için farkedemediğin birşeyler olabilir. formun üstüne iki edit koy button onclik olayına

Pt.X := strtoint(edit1.text);
Pt.X := strtoint(edit2.text);

ve kalan kodları yazarak mouse olaylarını dene. hangi pixelde nerelere gidiyor. Böylece tam emin olabilirsin. Hataları görebilirsin. Tms kullanmıyorum ama gruplama işleminı yanlış hatırlamıyorsan kod ile yapıyorlardı. ben bir kere öyle yapmıştım galiba. yardımına bakarsan gruplamayı bulabilirsin. bu şekilde gruplandırma yapmaya çalışmak seni yorar. sonuçta nesnelerdeki bütün özellikler kodlarla çalışıyor.
must_sargin
Üye
Mesajlar: 216
Kayıt: 14 Şub 2004 03:13
Konum: Gebze
İletişim:

Mesaj gönderen must_sargin »

s.a.
bir başka konuda verdiğiniz cevabı kullandığımda oldu.

Pt := ClientToScreen(Pt);
Pt.x := Round(Pt.x * (65535 / Screen.Width));
Pt.y := Round(Pt.y * (65535 / Screen.Height));
Mouse_Event(MouseEVENTF_ABSOLUTE or
MouseEVENTF_MOVE,
Pt.x,
Pt.y,
0,
0);

bu kodları ekleyince gridin başlığına sağ tıkladı ve gruplama oldu.teşekkürler.
Cevapla