Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Çalışma anında form tasarımı
#1
Arkadaşlar, yazdığım uygulamada kullanıcının form tasarlaması gerekiyor. Çalışma anında obje yerleştirmede sıkıntı yok.  Seçim işleminide mouseup olayında seçilen objenin enable'ını false ederek yapıyorum. (Diğer türlü kulanıcı butona basıyor gibi gözüküyor) Ama bazı obelerde scroll bar gibi bu tür eventler yok ve yerleştirip kullanıcı seçim yaparken aslında scroll barın oklarına basmış oluyor. Yani esas ihtiyacım obelerin onclick / onmouseup gibi olayları çalışırken fiziksel olarak hiçbir tepki vermemesi gerekiyor. 

Konu ile ilgili fikirlerinizi paylaşırsanız sevinirim.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
WWW
Cevapla
#2
Örneğin TScrollBar'ın OnMouseDown / Up gibi bulunmayan olaylarını tespit edip kullanmak istersen ilgili Windows mesajlarını (WM_......) yakalaman gerekir. Bunun için, yine TScrollBar üzerinden gidersek, TScrollBar'dan yeni bir sınıf türetmek gerekir. Bu yeni sınıf içerisinde, bize gerekli olan Windows mesajlarını yakalayıp istediğimiz gibi kullanabiliriz:
type
  TDelphicanBar = class(Vcl.StdCtrls.TScrollBar)
  private
    procedure WMLButtonUp(var Message: TWMLButtonUp); message WM_LBUTTONUP;
    procedure WMLButtonDown(var Message: TWMLButtonDown); message WM_LBUTTONDOWN;
  end;

implementation

procedure TDelphicanBar.WMLButtonDown(var Message: TWMLButtonDown);
begin
  // Burada mouse'un basıldığını anladık. İstersek yeni sınıfımıza bir event ekleyip burada tetikletebiliriz
end;

procedure TDelphicanBar.WMLButtonUp(var Message: TWMLButtonUp);
begin
  // 
end;

Artık formumuzda TScrollBar yerine TDelphicanBar'ı kullanırsak mouse down/up olaylarını yakalayabiliriz.

procedure TForm1.FormCreate(Sender: TObject);
begin
  with TDelphicanBar.Create(Self) do
  begin
    Parent := Self;
    Left := 30;
    Top := 30;
    Width := 100;
  end;
end;
There's no place like 127.0.0.1
WWW
Cevapla
#3
Farklı olaylarını kullanarak işi epey ilerlettim. Artık aşmam gereken tek sorun tasarlanan formu raspberry aktarmak kaldı :-)
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
WWW
Cevapla
#4
Siz probleminizi çözmüşsünüz ama daha sonra okuyanlar için;
Yukarıda verdiğim kod örneğinde yeni bir sınıf tanımlamak yerine TScrollBar sınıfını kullanmaya devam etmek işleri daha da kolaylaştırır:

type
 TScrollBar = class(Vcl.StdCtrls.TScrollBar)
 private
   procedure WMLButtonUp(var Message: TWMLButtonUp); message WM_LBUTTONUP;
   procedure WMLButtonDown(var Message: TWMLButtonDown); message WM_LBUTTONDOWN;
 end;

Böylece çalışma zamanında bileşen oluşturmanıza (Yukarıdaki kodlarda FormCreate içerisinde yapılanlar) gerek kalmaz.
There's no place like 127.0.0.1
WWW
Cevapla
#5
Ben cevaplarınızı takip ediyorum. Elinize sağlık çok teşekkür ederim.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
WWW
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Form Print gonulali 2 154 03-04-2018, Saat: 23:30
Son Yorum: gonulali
  MDI FORM narkotik 1 145 18-03-2018, Saat: 13:28
Son Yorum: mcuyan
  Bir Login Screen Tasarımı hyperxman 15 806 05-02-2018, Saat: 12:13
Son Yorum: Fesih ARSLAN
  Form create h.k (Çözüldü ) cinarbil 12 400 25-01-2018, Saat: 12:09
Son Yorum: cinarbil
  thread form donma sorunsalı seci20 3 199 22-01-2018, Saat: 09:42
Son Yorum: edo



Konuyu Okuyanlar: 1 Ziyaretçi