DropDownMenu ve Popup point ile ilgili bir soru...

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Glen
Üye
Mesajlar: 277
Kayıt: 12 Eki 2005 11:58

DropDownMenu ve Popup point ile ilgili bir soru...

Mesaj gönderen Glen »

Selam, yazabiecek baska bir baslik bulamadim :)

Herneyse soruma gecmek istiyorum, simdi
CxButton ekledim ve DropDownMenu propertysini PopupMenu1 olarak sectim..

Yani Buttondaki kücük ok tusuna basinca PopupMenu aciliyor.. Herneyse ben istiyorum ki buttona normal tikladigimda yani illa o kücük okuna tiklanilmasina gerek kalmasin normal butona tikladigimda da acilsin..

Bu popup menuler bildiginiz üzere ekranin yerlesimine göre kendine bir alan belirliyor ve orda popup oluyor, ve bu alan buttonun hemen üstünde veya altinda yani dibinde oluyor .. Simdi ben butona tikladigimda asagidaki gibi bir kod denedim:

Kod: Tümünü seç

cxButton1.DropDownMenu.Popup(cxButton1.DropDownMenu.PopupPoint.X, cxButton1.DropDownMenu.PopupPoint.Y);
Güzel çalışıyor ancak sorun şu, eğer daha önce popup hic acilmadiysa ilk eger direk kücük oka degil de yani butona tiklanilirsa alakasiz bir yerde cikiyor cünkü menunun popup pointi belirlenmedigi icin.. Ben istiyorum ki ilk de tiklansa son da tiklansa popup nerde acilcaksa kendi belirlesin ..

Umarim anlatabilmisimdir.. Kolay gelsin, simdiden tesekkür ederim.
serkan
Üye
Mesajlar: 666
Kayıt: 10 Tem 2003 12:08
Konum: bursa

Mesaj gönderen serkan »

selam..
aşağıdaki kodları denermisin..

Kod: Tümünü seç

procedure TForm1.cxButton1Click(Sender: TObject);
begin
PopupMenu1.Popup(cxButton1.Left+form1.Left,cxButton1.Top+form1.Top+75);
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.
popuppoint yerine farenin kordinatlarını yaz.
kolay gelsn.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Glen
Üye
Mesajlar: 277
Kayıt: 12 Eki 2005 11:58

Mesaj gönderen Glen »

serkan bey sizin verdiginiz kodu denedim.. Cok alakasiz bir yerde popup oluyor maalesef :(

Aslangeri sizin verdginiz kod ise, yakin bir yerde aciyor ancak oka tikladigim yerle ayni yerde acmiyor yani yine gözle görünecek kadar farkli bir yerde aciyor :(
t-hex
Kıdemli Üye
Mesajlar: 531
Kayıt: 18 Mar 2005 02:45
Konum: İstanbul/Antalya
İletişim:

Mesaj gönderen t-hex »

Kod: Tümünü seç

var
 P:TPoint;
begin
  P := ClientToScreen(Point(cxButton1.BoundsRect.Left,cxButton1.BoundsRect.Bottom));
  popupmenu1.Popup(P.X,P.Y);
serkan
Üye
Mesajlar: 666
Kayıt: 10 Tem 2003 12:08
Konum: bursa

Mesaj gönderen serkan »

verdiğim kodda form1 yerine sizin projenizde cxbutton hangi formun üzerindeyse o formun adını yazacaksınız.o şekilde düzgün çıkması lazım.ayrıca buttonun yüksekliğini siz değiştirdiyseniz 75 yazan değerlede biraz oynamalısınız..
Glen
Üye
Mesajlar: 277
Kayıt: 12 Eki 2005 11:58

Mesaj gönderen Glen »

t-hex yazdı:

Kod: Tümünü seç

var
 P:TPoint;
begin
  P := ClientToScreen(Point(cxButton1.BoundsRect.Left,cxButton1.BoundsRect.Bottom));
  popupmenu1.Popup(P.X,P.Y);
Maalesef yine alakasiz bir yerde aciliyor :(
Glen
Üye
Mesajlar: 277
Kayıt: 12 Eki 2005 11:58

Mesaj gönderen Glen »

serkan yazdı:verdiğim kodda form1 yerine sizin projenizde cxbutton hangi formun üzerindeyse o formun adını yazacaksınız.o şekilde düzgün çıkması lazım.ayrıca buttonun yüksekliğini siz değiştirdiyseniz 75 yazan değerlede biraz oynamalısınız..
Evet tabiki onlari baz alarak kodunuzda oynma yaptim yani form1 yazan yeri vs degistirdim ama maalesef istedigim sonucu alamadim..
t-hex
Kıdemli Üye
Mesajlar: 531
Kayıt: 18 Mar 2005 02:45
Konum: İstanbul/Antalya
İletişim:

Mesaj gönderen t-hex »

Glen yazdı: Maalesef yine alakasiz bir yerde aciliyor :(
Eğer buton form üzerinde değil de panel, groupbox gibi bir bileşenin üstündeyse onun ClientToScreen metodunu çağırmanız lazım.

Örneğin Panel üstündeyse

Kod: Tümünü seç

var
 P:TPoint;
begin
  P := Panel1.ClientToScreen(Point(cxButton1.BoundsRect.Left,cxButton1.BoundsRect.Bottom));
  popupmenu1.Popup(P.X,P.Y); 
Glen
Üye
Mesajlar: 277
Kayıt: 12 Eki 2005 11:58

Mesaj gönderen Glen »

T-Hex:
Eger butona tiklarsam ve eger popup normalde butonun altinda acilacak sekilde bir durumdaysa formun genisligi, konumu vs. ayni yerde aciyor yani ok ile butona tkladigimda ayni yerde aciliyor ama eger üstte acilacak konumdaysa normal popup oka tiklayinca yani butonun yukarisinda aciliyor ama butona tiklarsam tam üstünde aciliyor yani farkli bir yerde..

Yine de cok cok teşekkür ederim ilgilendiginiz icin yani ukalalık yapmak istemiyorum ancak cok şey mi istiyorum bilmiyorum ama bunun sebebi nedir acaba yani bunu düzeltmenin bir yolu var mi?
serkan
Üye
Mesajlar: 666
Kayıt: 10 Tem 2003 12:08
Konum: bursa

Mesaj gönderen serkan »

bence başka yerde problem var ben kendimde denediğimde tam istediğim noktada açılıyor.yeni bir proje açıp orda denesen hem benim gönderdiğim kodu hemde diğer arkadaşlarınkini..
t-hex
Kıdemli Üye
Mesajlar: 531
Kayıt: 18 Mar 2005 02:45
Konum: İstanbul/Antalya
İletişim:

Mesaj gönderen t-hex »

Kod: Tümünü seç

  cxButton1.Perform(CM_DROPDOWNPOPUPMENU,0,0);
@Glen, bu olsun artık! :)
Glen
Üye
Mesajlar: 277
Kayıt: 12 Eki 2005 11:58

Mesaj gönderen Glen »

t-hex yazdı:

Kod: Tümünü seç

  cxButton1.Perform(CM_DROPDOWNPOPUPMENU,0,0);
@Glen, bu olsun artık! :)

Yine bir sorun var Maalesef bu sefer mükemmel oldu bu kadar mükemmel olmasini istemiyodum :P :D :D :D
İşin şakası bir yana çok çok teşekür ederim ilgilendiğiniz için hepinize tam tamına istediğim şey buydu tekrar tekrar teşekkür ederim uğraştığınız için..

Oh be sonunda :) Tekrar teşekkürler, herkese kolay gelsin..
Cevapla