Einzelnen Beitrag anzeigen

Benutzerbild von eddy
eddy

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

noch eine Ergänzung

  Alt 8. Jan 2003, 15:43
Hallo Christian,

mit Hilfe Deines vorigen Hinweises habe ich die Prozedur so umgeändert, daß in der Liste der selektierte Eintrag wieder weiß auf blau erscheint, wenn man sich mit der Maus darüber hinwegbewegt, und nach der Auswahl eines Eintrages dieser wieder in schwarz auf weiß erscheint und nicht in der Farbe wie in der Auswahlliste.


Delphi-Quellcode:
procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
var
  cb : TComboBox;
begin
  cb := TComboBox(Control);
  // sorgt dafür, daß der in der Liste aktuell gewählte Punkt
  // weiß auf blau dargestellt wird
  if (odSelected in State) then begin
    cb.Canvas.Brush.Color := clNavy;
    cb.Canvas.FillRect(Rect);
    cb.Canvas.Font.Color := clWhite;
    cb.Canvas.TextOut(Rect.Left,Rect.Top,cb.Text);
    exit;
  end;

  // sorgt dafür, daß die Farben aus der Liste nicht in das
  // AnzeigeFeld übernommen werden
  if (odComboBoxEdit in state) then begin
    cb.Canvas.Brush.Color := clWhite;
    cb.Canvas.FillRect(Rect);
    cb.Canvas.Font.Color := clBlack;
    cb.Canvas.TextOut(Rect.Left,Rect.Top,cb.Text);
    exit;
  end;

  // sorgt dafür das (hier) drei aufeinanderfolgende Einträge in der
  // Auswahlliste jeweil anders gefärbt sind
  with cb 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;
Damit wäre wohl das Thema geschafft.

Hier gleich noch ein paar allgemeine Fragen:

Warum verwendest Du

Delphi-Quellcode:
  
cb := TComboBox(Control);
with cb do begin
  ....

statt
with control do begin
  ....

Wann muß Create und Destroy verwenden?

Auch wenn ich einiges davon verwende, wäre es natürlich auch mal schön zu wissen warum, weil wenn man weiß warum etwas geht, kommt man über den Punkt des Nachmachens (was hier auf keinen Fall negativ zu betrachten ist) hinaus zum Machen.

mfg
eddy
  Mit Zitat antworten Zitat