Einzelnen Beitrag anzeigen

runger
(Gast)

n/a Beiträge
 
#12

Re: alle Strings aus Edit.Text in der ListBox farbig darstel

  Alt 7. Sep 2006, 07:33
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
  Mit Zitat antworten Zitat