Einzelnen Beitrag anzeigen

Benutzerbild von eddy
eddy

Registriert seit: 4. Jan 2003
Ort: Sachsen
573 Beiträge
 
Delphi 5 Professional
 
#5

noch ein Kommentar

  Alt 8. Jan 2003, 12:33
Hallo Delphi-Coder,

auch wenn Christian inzwischen eine Lösung geliefert hat, will ich noch eine kleine Ergänzung bringen.

Delphi-Quellcode:
type
  TArrCol = record
              Font : TColor;
              Bkgr : TColor;
            end;

const
  maxColAnz = 3; // max. Anzahl verschiedener Farbvarianten
var
  carr : array[1..maxColAnz] of TArrCol;
  i : integer;

procedure TForm1.FormCreate(Sender: TObject);
begin
  // kann auch im ObjektInspektor (OI) eingestellt werden
  ComboBox1.Style := csOwnerDrawFixed;
  // Festlegung der der Farben für jeden 1., 2. usw. Eintrag
  // noch besser wäre wahrscheinlich die Festlegung in einem Array
  i := 1;
  carr[i].Font := clBlack;
  carr[i].Bkgr := clWhite;
  inc(i);
  carr[i].Font := clWhite;
  carr[i].Bkgr := clGreen;
  inc(i);
  carr[i].Font := clWhite;
  carr[i].Bkgr := clRed;

  SpeedButton1.Caption := 'ComboBox mit Einträgen füllen';
end;

procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
  with Control as TComboBox do begin
    i := Index mod maxColAnz;
    inc(i); // weil cArr mit 1 beginnt
    Canvas.Font.Color := carr[i].Font;
    Canvas.Brush.Color := carr[i].Bkgr;
    Canvas.FillRect(Rect);
    Canvas.TextOut(Rect.Left + 2, Rect.Top, Items[Index]);
  end;
end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
var
  i : integer;
begin
  for i := 1 to 10 do begin
    ComboBox1.Items.Add('Eintrag Nr. ' + IntToStr(i));
  end;
end;
mfg
eddy
  Mit Zitat antworten Zitat