Delphi Can
Hangi bileşen tıklandı - Baskı Önizleme

+- Delphi Can (https://www.delphican.com)
+-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3)
+--- Forum: Genel Programlama (https://www.delphican.com/forumdisplay.php?fid=6)
+--- Konu Başlığı: Hangi bileşen tıklandı (/showthread.php?tid=6877)



Hangi bileşen tıklandı - Aktolgali - 07-08-2022

Merhaba;
Arkadaşlar, ajanda ve randevu içeren bir program yapmaya çalışıyorum. Saatleri temsil eden 30adet panelim var. Bu panellere ters tıklayarak çıkacak menüden işlem yaptırmak istiyorum fakat hangi panele ters tıkladığımı bulamıyorum. Yardımcı olursanız sevinirim.
İyi akşamlar.


Hangi bileşen tıklandı - mcuyan - 07-08-2022

Yerinizde olsam her panele bir TAG değeri atarım. Sonrası çok kolay:

Gönderen nesneyi bulmak için:
TPAnel(Sender) Sizin çözüm noktanız.


Cvp: Hangi bileşen tıklandı - Aktolgali - 07-08-2022

(07-08-2022, Saat: 23:49)mcuyan Adlı Kullanıcıdan Alıntı: Yerinizde olsam her panele bir TAG değeri atarım. Sonrası çok kolay:

Gönderen nesneyi bulmak için:
TPAnel(Sender) Sizin çözüm noktanız.

@mcuyan hocam
case tpanel(FindComponent('panel'+inttostr(a))).tag of
     1:ShowMessage('1inci panel');
     2:ShowMessage('2inci panel');
     3:ShowMessage('3üncü panel');
   end;

sizin dediğiniz ve yukarıdaki kod da dahil dahil birçok yol denedim. Eksik yaptığım birşey var ama ne?


Hangi bileşen tıklandı - mcuyan - 08-08-2022

Hocam panelin tıklama olayından yola çıkmanız gerekiyor. Algoritmayı şöyle canlandırın:
Panele tıklandığında (OnClick) Bir prosedür çalışacak ve orada senderi kullanacaksınız.. Sizin FindComponent ile bi işiniz yokki?

Benim uygulamam da hızlı satış ekranım var; Tab menüm de 11 sayfa ve her sayfa da 24 buton mevcut; Form her create edildiğinde o butonların TAG değerlerini, ilgili tablodan id bilgisini yüklüyorum. Ve her butonun Onclick olayında:

procedure TFormSat.b101Click(Sender: TObject);
begin
GonderenID := TcxButton(Sender).TAG;
HizliEkranIslem;
end;

İşlemini yaptırıyorum. GonderenID de Butonda ki ID bilgisi var. HizliEkranIslem Prosedüründe ise yapmak istediğim işleri GonderenID bilgisine göre yaptırıyorum.

Yaptığım iş belki uzun yöntem olabilir, Hatta sitedeki üstadların illaki daha iyi&Stabil bir yöntemi dahi vardır ama benim o zaman ilk yaptığım ve başarıya ulaşan yöntemim böyleydi Smile

TAG işinize yaramaz ise ShowHint'i False yapıp; Hint degeriyle de işleminizi yaptırabilirsiniz.. Smile


Hangi bileşen tıklandı - ugorkem - 08-08-2022

DBCtrlGrid kullanmayı bir deneyin. Panel ile uğraşmak zorunda kalmadan, ürün verilerini Db üzerinde tutuyorsan table ile kullanabilirsin yada virtualTable a istediğim kadar ekleme yaparak panelin otomatik oluşturulmasını sağlayabilirsin.
Not: ColCount ile sütün sayısını ayarlayabilirsiniz. Üzerine VCL bileşenler koyabilirsin


Cvp: Hangi bileşen tıklandı - cinarbil - 08-08-2022

(07-08-2022, Saat: 23:57)Aktolgali Adlı Kullanıcıdan Alıntı:
(07-08-2022, Saat: 23:49)mcuyan Adlı Kullanıcıdan Alıntı: Yerinizde olsam her panele bir TAG değeri atarım. Sonrası çok kolay:

Gönderen nesneyi bulmak için:
TPAnel(Sender) Sizin çözüm noktanız.

@mcuyan hocam
case tpanel(FindComponent('panel'+inttostr(a))).tag of
     1:ShowMessage('1inci panel');
     2:ShowMessage('2inci panel');
     3:ShowMessage('3üncü panel');
   end;

sizin dediğiniz ve yukarıdaki kod da dahil dahil birçok yol denedim. Eksik yaptığım birşey var ama ne?

İyi günler;
Panel kullanmak zorun iseniz her panelin Onenter olayına ihtiyacınız olan kodları yazın


Cvp: Hangi bileşen tıklandı - QuAdR - 08-08-2022

Anladığım kadarı ile bir popup menün var hangi panel üzerinden bu menü açılıyor bulmak istiyorsun.
Ekli dosyada iki panel bir popupmenu var. Popup ı form çağırıyor, hangi panelde tıklandı ise menü iteme o panel ismim atanıyor.


Hangi bileşen tıklandı - SimaWB - 08-08-2022

https://stackoverflow.com/questions/2505831/what-is-the-component-a-popup-menu-click-originated-from/2505960#2505960


Cvp: Hangi bileşen tıklandı - Aktolgali - 10-08-2022

(08-08-2022, Saat: 21:14)SimaWB Adlı Kullanıcıdan Alıntı: https://stackoverflow.com/questions/2505831/what-is-the-component-a-popup-menu-click-originated-from/2505960#2505960

@SimaWB hocam aslında tam olarak aradığım kodun bu olduğuna eminim ama ispatlayamıyorum  Big Grin

Mesela 't monframe' nedir bilmiyorum.

(08-08-2022, Saat: 11:54)QuAdR Adlı Kullanıcıdan Alıntı: Anladığım kadarı ile bir popup menün var hangi panel üzerinden bu menü açılıyor bulmak istiyorsun.
Ekli dosyada iki panel bir popupmenu var. Popup ı form çağırıyor, hangi panelde tıklandı ise menü iteme o panel ismim atanıyor.

@QuAdR hocam, tam olarak aradığım bu değil ama bu kod çok işime yaradı. Sizin gönderdiğiniz kodla @mcuyan hocamın önerdiği yolu birleştirip sonuç aldım. istediğim şeyi tam olarak yaptım. teşekkür ederim ikinize de.

Önce panelTag diye bir değişken tanımladım.
procedure TfMainForm.Panel23MouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 case Button of
   mbRight: panelTag := TPanel(Sender).Tag;
 end;
end;

bu kod ile ters tıkladığım panelin tag'ını alıp o tag'a göre popupmenu de kullandım.
case panelTag of
       1:Showmessage('1 nolu panel');
       2:Showmessage('2 nolu panel');
       3:Showmessage('3 nolu panel');
     end;
Biraz dolambaçlı oldu ama işimi gördü.
Hepinize teşekkür ederim.