Hallo,
meine Auszubildenden meinen:
so kann man das Ganze verstehen und es funktioniert auch:
(das Ganze ist gedacht als Beispiel dafür wie man eine ganze Zeile einfärbt)
Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 =
class(TForm)
lb: TListBox;
Edit: TEdit;
procedure lbDrawItem(Control: TWinControl;
Index: Integer; Rect: TRect;
State: TOwnerDrawState);
procedure EditChange(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
a:
string;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.LBDrawItem(Control: TWinControl;
Index: Integer;
Rect: TRect; State: TOwnerDrawState);
var
sValue :
string;
iLeft : integer;
iTop : integer;
begin
// Auszugebenden Eintrag merken
sValue := lb.Items[
Index];
// Startpunkt für die Ausgabe merken
iLeft := Rect.Left;
iTop := Rect.Top;
if lb.items[
index]=a
then lb.Canvas.Font.Color:=clred
else lb.Canvas.Font.Color:=clblue;
// Text ausgeben
// (Dadurch wird auch gleich die Ausgabeposition neu gesetzt)
lb.Canvas.TextOut(iLeft,iTop,svalue);
iLeft := lb.Canvas.PenPos.X;
end;
procedure TForm1.EditChange(Sender: TObject);
begin
a:=edit.Text;
lb.Repaint;
end;
zum Teil stammt der Code aus vorhergegangenen Beiträgen.
Achtung: Listbox.style auf lbOwnerDrawFixed setzen.
Rainer