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.
Topluluk mopluluk yok :/
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ı :-)
Topluluk mopluluk yok :/
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.
Topluluk mopluluk yok :/
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  yazıcı için form tasarımı yapmak. Bay_Y 4 269 17-07-2018, Saat: 16:01
Son Yorum: engerex
  form içindekiler arsl01 2 161 16-07-2018, Saat: 14:40
Son Yorum: arsl01
  Form.create arsl01 12 455 03-07-2018, Saat: 14:27
Son Yorum: arsl01
  [ÇÖZÜLDÜ]-Başka Uygulamadaki MDIChild Form Handle Alma hi_selamlar 9 381 29-06-2018, Saat: 09:52
Son Yorum: hi_selamlar
  İki Application Clasından iki Farklı Form Create Etme witalihakko 2 240 01-06-2018, Saat: 12:17
Son Yorum: Tuğrul HELVACI



Konuyu Okuyanlar: 1 Ziyaretçi