![]() |
In Kombobox zeichnen
Hi,
wie kann ich auf eine Kombobox zeichnen? Ich weiß, dass die Kombobox den Style CSOwnerDraw (Fixed, oder Variable?) haben muss und, dass der Code für das Zeichnen in DrawItem kommt. Wenn ich
Delphi-Quellcode:
verwende passiert leider rein garnichts. Was mache ich falsch, bzw. wie mache ich es richtig?procedure TStyle.ComboBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); begin Combobox1.Canvas.Rectangle(0,0,10,10); end; |
Re: In Kombobox zeichnen
Dein Zeichenbereich ist auf das übergebene Rechteck beschränkt; ausserhalb darfst/kannst du nicht zeichnen.
Delphi-Quellcode:
procedure TStyle.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState); begin InflateRect(Rect, -1, -1); // Rechteck schrumpfen control.Canvas.Pen.color := clRed; control.Canvas.Rectangle(Rect); end; |
Re: In Kombobox zeichnen
Wenn ich deinen Code nehme, erscheinen folgendee Fehler:
Zitat:
OwnerDraw ist aktiviert. Kann es and Delphi4 liegen? Weiß jemand Rat? |
Re: In Kombobox zeichnen
Mit GetwindowDC kann man sich das Handle zur Canvas holen, damit sollte es dann funktionieren.
(desweiteren meinst du bestimmt die "Combobox") |
Re: In Kombobox zeichnen
Zitat:
Delphi-Quellcode:
procedure TStyle.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState); var Canv: TCanvas; begin Canv := TCanvas.create; Canv.handle := GetWindowDC(0); InflateRect(Rect, -1, -1); control.Canv.Pen.color := clRed; control.Canv.Rectangle(Rect); end; Zitat:
|
Re: In Kombobox zeichnen
Also bei den ersten beiden Fehlern hast du vergessen Canv als TCanvas zu deklarieren :wink:
Bei dem anderen Fehler kenn ich mich auch nicht aus, da ich nicht weis was InflateRect tut... |
Re: In Kombobox zeichnen
Da hab ich nen heißen Tip für dich:
InflateRect schreiben, Cursor drauf und tapfer F1 drücken ;-) |
Re: In Kombobox zeichnen
Jaaa... normalerweise schon, aber da ichs nicht brauche und es mich nicht interressiert bin ich zu faul dafür :mrgreen:
|
Re: In Kombobox zeichnen
Zitat:
Delphi-Quellcode:
procedure TStyle.ComboBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
var Canv: TCanvas; begin Canv := TCanvas.create; Canv.handle := GetWindowDC(Control.Handle); Canv.Pen.color := clRed; Canv.Rectangle(Rect); ReleaseDC(Control.Handle, Canv.Handle); Canv.Free; |
Re: In Kombobox zeichnen
Vielen Dank schonmal,
es ist mir schon fast peinlich, aber ich weiß nicht, wie ich folgenden, letzten Fehler beheben kann:
Delphi-Quellcode:
Canv.Rectangle(Rect);
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz