Jak spowodować, aby co kilka sekund, albo na żadanie program odświeżył procerue Listbox.OnListBox1DrawItem?
Timer? :)
W zdarzeniu OnTimer wpisujesz po prostu
OnListBoxDrawItem(Sender);
That's all ;]
Niestety tego probowałem w różnych komponentach i procedura, tak jak wcześnie nie działało tak i teraz nie działa, dlatego wylądowałem na forum
Zapomniałem, pojawia się błąd ( jeśli jest możliwoś tego mprzekształcenia to słucham ) " Incompatible types: 'TWinControl' and 'TObject' "
No jasne.. bo to nie ma sensu: czy procedura która jest Handlerem dla tego zdarzenia nazywa się OnListBox1DrawItem ? .. pewnie nie ..
Wpisuje coś takiego do clocka
Listbox1.OnDrawItem(Sender);
i ten sam błąd
ListBoxDrawItem(Sender);
ListBoxDrawItem(Sender);
tak też nie, wyskakuje ten sam błąd i co zrobić?
kliknij na to zdarzenie dwa razy w ListBoxie i przepisz wszystko po "procedure", usuń wszystko po i z dwukropkiem do średników albo do końca nawiasu i jeszcze usuń "T" z początku (w tym przepisanym tekście)
to powinno wyjść z procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
Form1.ListBox1DrawItem(Control; Index; Rect; State);
to wszystko powinno zostać uzupełnione parametrami (index - index odrysowanego itemu, Rect - obszar [Rect(x,y,x,y)] odrysowywanego obszaru, za Control można raczej podstawić nil albo ListBox1, a za State - 0 albo ListBox1.DrawState;
chociaż sądze że chodzi ci tylko o wywołanie ListBox1.Repaint;
po prostu dopisz:
ListBox.Invalidate;
na zadanie lub w tajmierze.