Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Hangi bileşen tıklandı
#1
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.
Dosyalarınızı kendi bulutunuza yedekleyin. Yandex Disk

Eyvallah..
Cevapla
#2
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.
// Bilgi paylaştıkça çoğalır.. 

Cevapla
#3
(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?
Dosyalarınızı kendi bulutunuza yedekleyin. Yandex Disk

Eyvallah..
Cevapla
#4
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
// Bilgi paylaştıkça çoğalır.. 

Cevapla
#5
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
Cevapla
#6
(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
"…De ki: "Hiç bilenlerle bilmeyenler bir olur mu? Şüphesiz, temiz akıl sahipleri öğüt alıp-düşünürler" (Zümer Suresi, 9)
Cevapla
#7
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.


Ek Dosyalar
.zip   popup.zip (Dosya Boyutu: 24,47 KB / İndirme Sayısı: 15)
Ayakkabıyı sefaletten
Çok sonraları tanıdım
Öyle ufuklarda mı olurmuş Allah'ım
Giyer giyer koşardım
Toprağın dostluğundan
Oyuncaklar yaptım çamurdan
Tenimin rengini aldım topraktan
Sen bakma esmerliğim sonradan...





Cevapla
#8
https://stackoverflow.com/questions/2505...60#2505960
There's no place like 127.0.0.1
WWW
Cevapla
#9
(08-08-2022, Saat: 21:14)SimaWB Adlı Kullanıcıdan Alıntı: https://stackoverflow.com/questions/2505...60#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.
Dosyalarınızı kendi bulutunuza yedekleyin. Yandex Disk

Eyvallah..
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  timeLine bileşen bydelphi 3 584 07-10-2024, Saat: 11:10
Son Yorum: bydelphi
  Hangi Delphi Sürümünü Kullanıyorsunuz? RAD Coder 1 1.040 03-07-2024, Saat: 19:22
Son Yorum: gbg
  80 adet combobok hangisine tiklandi eventi. sadikacar60 8 2.392 06-02-2024, Saat: 20:09
Son Yorum: sadikacar60
  Görsel Bileşen konusunda uzman arkadaşlar... baloglurecep 1 889 14-01-2023, Saat: 08:49
Son Yorum: cinarbil
  Databasede hangi satırda değişiklik yapıldı. HakanY 3 1.685 13-09-2021, Saat: 14:13
Son Yorum: forumcuali



Konuyu Okuyanlar: 1 Ziyaretçi