Tasarım anındaki gibi seçili bileşeni belirtme nasıl yapılır
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Tasarım anındaki gibi seçili bileşeni belirtme nasıl yapılır
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.
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..
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.)
ibadetle geçen bin geceden hayırlıdır. HZ. MUHAMMED (S.A.)
oncelikle forma ActiveControlChanged olayini ekliyoruz.ama bu olay Object Inspector'de gozukmediginden kendimiz ekliyoruz
procedure ActiveControlChanged(Sender: TObject);
bu da olayin kodu:
formun OnCreate olayina da;
formun OnDestroy olayinda da
bu sekilde yapinca oldu.gerci kareler biraz buyuk oldu ve sadece koseler icin yaptim orta noktalarida isterseniz kendiniz eklersiniz.
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;
Kod: Tümünü seç
Form1.Canvas.Brush.Color:=clBlack;
Screen.OnActiveControlChange := ActiveControlChanged;
Kod: Tümünü seç
Screen.OnActiveControlChange := nil;
-
- Kıdemli Üye
- Mesajlar: 1026
- Kayıt: 11 Şub 2005 02:12
- Konum: İstanbul