popupmenuyü kim açtı

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
FXERKAN
Üye
Mesajlar: 178
Kayıt: 26 Tem 2003 11:06
Konum: Sivas - Konya
İletişim:

popupmenuyü kim açtı

Mesaj gönderen FXERKAN »

oluşturduğum her butonun popupmenusu popfx adlı popupmenu

bunun içerisinde yeniden adlandır diye bir seçenek var
bu yeniden adlandır seçeneğini seçince

butonrename(Sender : Tobject) şeklindeki procedürü çalıştırmaya çalışıyorum

yalnız hangi butondayken popupmenun açıldığını nasıl anlayacağımı bilmiyorum.

çünkü butonrename procedure üne o butonun bilgilerini göndermeme gerekiyorda
[ F X E R K A N © - E r k a n Ç İ F T Ç İ ]
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7602
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

bu tip durumlar için Tag özelliğini kullanabilirsin. Tag özelliğine integer bir sayı verip, ona göre test edip hangi buton olduğunu bulabilirsin. Ben genelde bu yöntemi uyguluyorum.

Kolay gelsin.
Kullanıcı avatarı
tolgaozb
Üye
Mesajlar: 70
Kayıt: 26 Ara 2003 12:22
Konum: Karşıyaka
İletişim:

Mesaj gönderen tolgaozb »

unit'in public'nde tutcağın bir değişkende en son tıklanan butonun ismini veya atayacağın tag numarasını tutabilirsin...

popup in ilgili seçeneği tıklandığında publicdeki değişkenden hangi butonun kullanıldığını öğrenip ona göre işlemini yapabilirsin...
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2380
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

Ek olarak Sender olarak sana TMenuItem Gelicektir. Bununda Name'inde Buttonun adını bulabirlirsin.(Sender.Name) hatta buradanda Yani TMenuItem danda PopupMenu yü bulabilirsin.Eğer birden fazla popmenu kullanıp,Itemların clicklerine aynı yere yönlendirdiysen
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ı
FXERKAN
Üye
Mesajlar: 178
Kayıt: 26 Tem 2003 11:06
Konum: Sivas - Konya
İletişim:

Mesaj gönderen FXERKAN »

abicim benim bir tane popup menum var
ama birden çok fazla butonum var.

popupmenüde yeniden adlandır diye bir seçenek var

butona sağ tıklanıp yeniden adlandır dediğim zaman bana sağ tıklana butonun adı lazım.

bunun için popup menunun onpopupda o yeniden adlandırma ile ilgili procedure çağırayım dedim ama olmadı çünkü. onpopup olayında sender olarak Tpopupmenu veriyor bana. ben ise sağ tıklanılan butonu yani Tbutton ı almak istiyorum çünkü procedurümde

(sender as Tbutton).name diye bir özelliğe ihtiyacım var

işte kod da şu şekilde



procedure tform1.sagtiklayan(sender : tobject);
var
butonname : string;
begin

if (sender is tfxbutton) then butonname := (sender as tfxbutton).Name;
showmessage(butonname + ' e sağ tıklandı');

end;

butonların kod ile oluşturulduğu için
buts : array[1..20] of TfxButton;

buts.OnMouseDown := sagtiklayan;
buts.PopupMenu := popbuton;

popbuton popupmenun adı

işte butona SAĞ tıklayınca yada SAĞ TIKLADIKTAN SONRA -> YENİDEN ADLANDIR itemi seçildikten sonra sagtıklayan procedurenün çalışmasını sağlamak istiyorum
[ F X E R K A N © - E r k a n Ç İ F T Ç İ ]
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

ewt dedigin sekilde sender a buttonu gecirmek olmuyor
ama aklıma soyle bir sey geldi
mousun tıkladıgın yerdeki koordinatlarını biliyorsun
herhangi bir buton uzerinde sag tıkladıgın zaman
sırayla butonların left-top degerlerini karsılastırarak
hangi buton oldugunu bulabilirsin gibime geliyor
koaly gelsin
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

Ufak bir deneme yaptim ve calisiyor. Saniyorum isinizi gorur. Bos bir forma 2 tane button koyun. bir de Popupmenu . Buttonların popup menusu olarak ta koydugunuz popup menuyu secin.

1. Button'un mousedown eventine su kodu yazin :

Kod: Tümünü seç

procedure TFRM_MAIN.Button1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if Button=mbRight then
    MenuItem1.Hint:=TButton(Sender).Name;
end;

Popup menunun de onpopup eventine su kodu yazin.

Kod: Tümünü seç

procedure TFRM_MAIN.PopupMenu1Popup(Sender: TObject);
begin
  ShowMessage(MenuItem1.Hint);
end;
Kolay gelsin....
Cevapla