Tüm Platformlar için Hızlı Uygulama Geliştirme --->    Kitabımız...      Delphi

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
  Bir Login Screen Tasarımı hyperxman 15 627 05-02-2018, Saat: 12:13
Son Yorum: Fesih ARSLAN
  Form create h.k (Çözüldü ) cinarbil 12 265 25-01-2018, Saat: 12:09
Son Yorum: cinarbil
  thread form donma sorunsalı seci20 3 136 22-01-2018, Saat: 09:42
Son Yorum: edo
  Webbrowser form element item adları bkantur 3 108 16-12-2017, Saat: 22:30
Son Yorum: SimaWB
  FastReport Form'dan tarih bilgisi almak yhackup 2 141 20-11-2017, Saat: 10:42
Son Yorum: yhackup



Konuyu Okuyanlar: 1 Ziyaretçi