Delphide Editleri Renklendirme

Yazar 16 Eylül 2020 Çarşamba

Delphide Editleri Renklendirme

Delphide nesneleri renklendirmek istiyorsunuz. editler içine girilince kırmızı olsun çıkınca yeşil olsun aktif combobox lacivert olsun. ama memoların içi portakal turuncusu ile havuç turuncusu arasında bir renk olsun… İnternette biraz araştırdım, delphi form nesneleri nasıl renklendirilir diye. biçok yerde, o edite tıkla, on enter olayında rengini değiştir, on exit olayında eski rengine çevir, işte bu kadar. delphi edit renklendirme bitti. Soruyorlar e 100 tane edit var benim programda napcaz, cevap: üzgünüm çözümü yok tek tek yapacaksın. Uzun lafın kısası, tek tek yazmadan, tek bir defada, formunuzdaki bütün nesnelerin program akışında nasıl renklendirileceğini aşağıda anlatacağım. Konunun kaynağı burasıdır. Ama orası çok uzun ve ingilizce, ben kısa ve hızlı halini anlattım. uses satırına eğer ekli değilse ekleyiniz: System.TypInfo; eğer formu olmayan bir fonksiyon dosyasında vs tutmak istiyorsanız, Vcl.StdCtrls class’ını da uses bloğuna dahil edin. Sadece otomatik olarak oluşturulan ve ilk açılan ekranınızda { Private declarations } bölümüne Kod:

procedure ScreenActiveControlChange (Sender : TObject); procedure EnterColor(Sender : TWinControl); procedure ExitColor(Sender : TWinControl); implementation bölümünün üzerine ekleyin Kod: const focusColor = clSkyBlue; var lastFocused : TWinControl; originalColor : TColor;

İşlem yaptığımız formda program kodlarını yazdığınız bölümde, son end’den önce olabilir. Aşağıdaki kodları ekleyin.

 

Kod:

procedure TMainForm.ScreenActiveControlChange(Sender: TObject); var doEnter, doExit : boolean; previousActiveControl : TWinControl; begin if Screen.ActiveControl = nil then begin lastFocused := nil; Exit; end; doEnter := true; doExit := true; //CheckBox if Screen.ActiveControl is TButtonControl then doEnter := false; previousActiveControl := lastFocused; if previousActiveControl <> nil then begin //CheckBox if previousActiveControl is TButtonControl then doExit := false; end; lastFocused := Screen.ActiveControl; if doExit then ExitColor(previousActiveControl); if doEnter then EnterColor(lastFocused); end; procedure TMainForm.EnterColor(Sender: TWinControl); begin if Sender <> nil then begin if IsPublishedProp(Sender,’Color’) then begin originalColor := GetOrdProp(Sender,’Color’); SetOrdProp(Sender,’Color’, focusColor); end; end; end; procedure TMainForm.ExitColor(Sender: TWinControl); begin if Sender <> nil then begin if IsPublishedProp(Sender,’Color’) then begin SetOrdProp(Sender,’Color’,originalColor); end; end; end;

Form Create Olayına

Screen.OnActiveControlChange := ScreenActiveControlChange; Form Destroy Olayına Kod: Screen.OnActiveControlChange := nil;
 

Topma 53 Defa Okundu Eklenme Tarihi : 16 Eylül 2020 Çarşamba 00:00
Erkan ÇAĞLAR

Tasarımcı Programcı, Kendi çapında herşey işte .

www.erkancaglar.com.tr
Üste Git