Tasarım anındaki gibi seçili bileşeni belirtme nasıl yapılır

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
cfyasar
Üye
Mesajlar: 169
Kayıt: 31 Oca 2005 05:18
Konum: izmir

Tasarım anındaki gibi seçili bileşeni belirtme nasıl yapılır

Mesaj gönderen cfyasar »

Tasarım anında seçili bileşenin etrafında küçük karaler çıkıyor. Çalışma anında da kullanıcı bir editbox a veya başka bir bileşene tıkladığında etrafında küçük kareler çizerek seçileni belirtiyorum. Ama çizdiğim küçük kareler formun canvasında olduğu için üstüne başka bir form veya bileşen açtığımda bu kareler siliniyor. Bu kareleri kalıcı olarak çizebilmek için ( form simge durumuna küçültülüp büyütülse bile) ne yapmam lazım?
öğrenmek, zorlukları yenmektir.
Kullanıcı avatarı
TRSoft
Kıdemli Üye
Mesajlar: 636
Kayıt: 13 Şub 2004 11:39
Konum: Konya
İletişim:

Mesaj gönderen TRSoft »

Benim farklı bir önerim olacak.

Ben böyle durumlarda etrafına kareler çizmektense iki tane ayrı labele '>' ve '<' yazıyorum ve seçilen bileşenin sağına ve soluna yerleştiriyorum hepsi bu kadar.. Tabi senin işini görürmü bilmiyorum ben sadece fikir olsun diye belirttim..
İlimle geçen bir gece,
ibadetle geçen bin geceden hayırlıdır.
HZ. MUHAMMED (S.A.)
bukentay
Üye
Mesajlar: 44
Kayıt: 16 Şub 2004 07:21

Mesaj gönderen bukentay »

oncelikle forma ActiveControlChanged olayini ekliyoruz.ama bu olay Object Inspector'de gozukmediginden kendimiz ekliyoruz

procedure ActiveControlChanged(Sender: TObject);

bu da olayin kodu:

Kod: Tümünü seç

procedure TForm1.ActiveControlChanged(Sender: TObject);
var
  AC:TWinControl;
begin
  AC:=Form1.ActiveControl;
  Form1.Refresh;
  Form1.Canvas.Rectangle(AC.Left-3 , AC.Top-3 , AC.Left+3 , AC.Top+3);
  Form1.Canvas.Rectangle(AC.Left-3+AC.Width , AC.Top-3 , AC.Left+3+AC.Width , AC.Top+3);
  Form1.Canvas.Rectangle(AC.Left-3 , AC.Top-3+AC.Height , AC.Left+3 , AC.Top+3+AC.Height);
  Form1.Canvas.Rectangle(AC.Left-3+AC.Width , AC.Top-3+AC.Height , AC.Left+3+AC.Width , AC.Top+3+AC.Height);
end;
formun OnCreate olayina da;

Kod: Tümünü seç

  Form1.Canvas.Brush.Color:=clBlack;
  Screen.OnActiveControlChange := ActiveControlChanged;
formun OnDestroy olayinda da

Kod: Tümünü seç

  Screen.OnActiveControlChange := nil;
bu sekilde yapinca oldu.gerci kareler biraz buyuk oldu ve sadece koseler icin yaptim orta noktalarida isterseniz kendiniz eklersiniz.
Ali Erdoğan
Kıdemli Üye
Mesajlar: 1026
Kayıt: 11 Şub 2005 02:12
Konum: İstanbul

Mesaj gönderen Ali Erdoğan »

Edit in border özelliklerini değiştirerek de buna benzer birşey yapabilirsin sanırım.Ya da background rengini de değiştirebilirsin bileşeni belirtmek için.
Cevapla