Na formie mam kilka editów i chciałem żeby aktualnie zafocusowany edit robił się żółty a reszta ma być biała. Takie wizualne zaznaczanie aktywnego edita.
Chciałem zrobić to sobie na wątku - tak dla nauki.
Robię coś takiego:
Type
TKolorAktywny = class(TThread)
protected
procedure Execute; override;
end;
var
KolorAktywny : TKolorAktywny;
procedure TKolorAktywny.Execute;
var i : integer;
begin
FreeOnTerminate := True;
while not (Application.Terminated) or (Terminated) do
begin
for i := 0 to Forma1.ComponentCount - 1 do
begin
if Forma1.Components[i] is TEdit then
begin
if TEdit(Forma1.Components[i]).Focused then
TEdit(Forma1.Components[i]).Color := clYellow
else
TEdit(Forma1.Components[i]).Color := clWhite;
end;
begin
sleep(200);
end;
end;
initialization
KolorAktywny := TKolorAktywny.Create(true);
Dla OnShow formy daję :
KolorAktywny.Resume
a dla OnClose daję:
KolorAktywny.Suspend
No i kiszka bo to nic nie daje.
Czego nie wiem o wątkach?
Czy w wątku sprawdzanie Focused komponentu nie działa ?
Bo zauważyłem że znajdują mi się te komponenty typu TEdit ale już mi nie sprawdza czy akurat jest w nich kursor.
Gdybym dał taką procedurkę w powiedzmy Timerze to to będzie chodziło, a w wątku nie chce.
[???] [glowa]