background img
Mar 22, 2017
534 Views
0 0

Delphide Editleri Renklendirme

Yazar :

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;

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

The maximum upload file size: 50 MB. You can upload: image, audio, video, document, text, other. Links to YouTube, Facebook, Twitter and other services inserted in the comment text will be automatically embedded. Drop file here