Pop-Up Menu soru ..

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
s1lv3r
Üye
Mesajlar: 91
Kayıt: 09 Nis 2006 03:03

Pop-Up Menu soru ..

Mesaj gönderen s1lv3r »

Memoya bir popmenu yarattım fakat pop-up menü sağ tıklayınca açılıyor ben sol tıklayıncada açılmasını istiyorum nasıl yapabilrim _ ?
ulu coder
Üye
Mesajlar: 838
Kayıt: 01 Nis 2006 06:46
Konum: Ankara

Mesaj gönderen ulu coder »

Kod: Tümünü seç

procedure TForm1.Memo1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
if Button=mbLeft Then begin
 mouse_event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0);
 mouse_event(MOUSEEVENTF_RIGHTUP,0,0,0,0);
end;


end;
Yalnız şu sorun var; sağ tıklayınca da popup açılıyor :oops:
Kullanıcı avatarı
tuanna
Üye
Mesajlar: 582
Kayıt: 06 Ara 2004 05:01
Konum: Ankara
İletişim:

Mesaj gönderen tuanna »

tbutton parametresinin durumu sağ tuş ise memoyu visible etmek veya işlemi iptal etmek lazım değilmi...
Siz hayal edin...Biz yapalım TuannaSoft...
ulu coder
Üye
Mesajlar: 838
Kayıt: 01 Nis 2006 06:46
Konum: Ankara

Mesaj gönderen ulu coder »

Gönderdiğim kodlar, sağ tıklandığında sol tıklattırıyor.
Bu nedenle sağ tıklandığında yaptırılacak işlemler sol tıklandığında da işleyecek.
Başka bi çözüm bulmak lazım.
Kullanıcı avatarı
Murat DİCLE
Kıdemli Üye
Mesajlar: 702
Kayıt: 19 Nis 2006 04:12
Konum: İstanbul
İletişim:

Mesaj gönderen Murat DİCLE »

merhaba.

(ezbere yazıyorum..)

memo1 onclick olayına popup bileşenindeki POPUP diye bir şeyi var onu kullanacaksın. ve ayrıca memo1 için bir popup tanımlamayacaksın. çünkü bunu zaten memonun onlick olayında sen manuel olarak yapacaksın.

TPopupmenu.popup diye bişi vardı...

saygılar...
ulu coder
Üye
Mesajlar: 838
Kayıt: 01 Nis 2006 06:46
Konum: Ankara

Mesaj gönderen ulu coder »

muratdicle'nin yazdıklarından yola çıkarak şunu buldum;

Kod: Tümünü seç

procedure TForm1.Memo1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
if Button=mbLeft Then PopupMenu1.Popup(Form1.Left+Memo1.Left+x+7,Form1.Top+Memo1.Top+y+32);
end;
Memo'nun Popup'ını Object Ins.'den seçmene gerek yok.
Yalnız sağ tıklanınca kopyala, yapıştır filan çıkıyo.
mrtblt
Üye
Mesajlar: 222
Kayıt: 02 Tem 2007 05:13

Mesaj gönderen mrtblt »

Bende grid uzerinde sag tiklama yapildiginda popup menuyu acacak sekilde asagidaki gibi kod yazdim ama mousun hangi tusuna tiklarsam tiklayayim menu acilmiyor

Kod: Tümünü seç

procedure Tfrm_sprs.DBGrid1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);

begin
  if button = mbright then
  popupmenu1.Popup(x,y);
end;
Bunu nasil cozebiliriz?
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
onmousedown değil onclick olayını kullanman lazım.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
mrtblt
Üye
Mesajlar: 222
Kayıt: 02 Tem 2007 05:13

Mesaj gönderen mrtblt »

Kodu su sekilde degistirdim ama genede acilmiyor popup menu

Kod: Tümünü seç

procedure Tfrm_sprs.DBGrid1CellClick(Column: TColumn);
var
  Coord   : TGridCoord;
  X,Y     : Integer;
  button  : Tmousebutton;
begin
  Coord := dbGrid1.MouseCoord(X, Y);
  if button = mbleft then
  popupmenu.Popup(coord.x,coord.y);
end;
Sonra birde su sekilde degistirdim

Kod: Tümünü seç

procedure Tfrm_sprs.DBGrid1DblClick(Sender: TObject);
var
  Coord   : TGridCoord;
  X,Y     : Integer;
  button  : Tmousebutton;
begin
  Coord := dbGrid1.MouseCoord(X, Y);
  popupmenu.Popup(coord.x,coord.y);

end;
ondada address violation hatasi verdi.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
av vermesininsebei popupmenu.popup yazman.
popupmenu nun adını yazman lazımdı.
sen formun popupmenu ozelliğine atanan popupmenu yu göstermeye çalışmışsın. onada birşey atamadığın için hata vermiş.
popupmenu1.popup (veya popupmenuye ne isim verdiysen onu)yazmayı dene.
birde dbgrid in onclick özelliği :wink
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
mrtblt
Üye
Mesajlar: 222
Kayıt: 02 Tem 2007 05:13

Mesaj gönderen mrtblt »

Tesekkur ederim, dedigin sey gozumden kacmis ama ben koordinat degerlerini degiskenklerle kodla vermeme ragmen hala menu default pozisyonda cikiyor
Bu arada object inspectorda events tabina birkac kez baktim dalginliktan atlamamak icin ama dbgrid icin onclick diye bir event goremedim.
Ben Turbo Delphi kullaniyorum, bundan dolayiu bu ozelligin olmama ihtimali var mi?
akdatilla
Üye
Mesajlar: 292
Kayıt: 02 Nis 2006 06:04
Konum: Antalya

Re: Pop-Up Menu soru ..

Mesaj gönderen akdatilla »

s1lv3r yazdı:Memoya bir popmenu yarattım fakat pop-up menü sağ tıklayınca açılıyor ben sol tıklayıncada açılmasını istiyorum nasıl yapabilrim _ ?

Kod: Tümünü seç

procedure TForm1.Memo1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
     if Button=mbLeft then
     PopupMenu1.Popup(Memo1.ClientOrigin.X+x,Memo1.ClientOrigin.y+y);
end;
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
evet şimdi baktım dbgrid in onclick diye bir olayı yokmuş. onCellclik işinizi görebilir.
sizin cellclick deki kodunuzun çalışmamasının sebebi if button=mbleft karşılaştırması. button parameteresi sizin tanımladığınız local bir değişken. ve bu değişkene herhangi bir değer atanmamış.
bu durumda @akdatilla gönderdiği kodu dbgirid in mouseup olayına yazarsanız olacaktır.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Cevapla