Hangi bileşen tıklandı

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Aktolgali
Üye
Mesajlar: 4
Kayıt: 02 Eki 2007 03:22

Hangi bileşen tıklandı

Mesaj gönderen Aktolgali »

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.
Kullanıcı avatarı
loaded
Üye
Mesajlar: 122
Kayıt: 12 Eki 2010 09:45
Konum: Konya
İletişim:

Re: Hangi bileşen tıklandı

Mesaj gönderen loaded »

Merhaba,
Tüm panellerin metodlarını işlemek, tek bir panelin metodlarını işlemek ile aynıdır. Burada kullanmanız gereken TPanel(sender)...
İlk olarak işlemek istediğiniz bir panelin metodunu ele alıp gereken kodları yazdıktan sonra diğer panellerin metodunu yazdığınız bu metoda bağlamalısınız.

Olayın basitçe anlaşılması adına, şöyle basit bir örnek verebilirim ;
- Forma bir adet panel ekleyin, ardından panelin onmousedown metodunu aşağıdaki şekilde düzenleyin.

Kod: Tümünü seç

procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if Button=mbRight then
  begin
      showmessage(TPanel(sender).Caption);
  end;
end; 
-Ardından Tasarım ekranında, paneli kopyala yapıştır yaparak istediğiniz sayıda çoğaltın. Ve Projeyi Çalıştırın.
Kalk ve işe yarar bir şey yap! Çünkü Allah (c.c.) yeniden başlayanların yardımcısıdır.
Aktolgali
Üye
Mesajlar: 4
Kayıt: 02 Eki 2007 03:22

Re: Hangi bileşen tıklandı

Mesaj gönderen Aktolgali »

Teşekkür ederim
Önce panelTag diye bir değişken tanımladım.

Kod: Tümünü seç

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.

Kod: Tümünü seç

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ü.
Teşekkür ederim.
Cevapla