![]() |
Checkbox selbst zeichnen
Hallo :)
Ich würde gerne die Icons "checked" bzw "unckecked" der Checkbox durch ein Icon meiner Wahl ersetzen. Ich behandle zur Zeit Luckies WinAPI Tuts, dort wird das aber nur sehr kurz angeschnitten (um genau zu sein nur 1 mal erwähnt) und hier habe ich nur Sachen zur VCL gefunden. Wäre toll wenn ihr mir weiterhelfen könntet :) Gruß und Danke im Voraus, Ardeo |
Re: Checkbox selbst zeichnen
Ich hab mir nun noch einmal ein bisschen auf codeproject.com umgeschaut und habe dort auch etwas gefunden, was dem entspricht was ich machen möchte, jedoch ist das mit MFC gemacht und davon verstehe ich herzlich wenig.
Zur Verdeutlichung hier ein Screenshot: ![]() |
Re: Checkbox selbst zeichnen
Kannst/Darfst du kostenpflichtige Fremdkomponenten verwenden? Falls ja:
![]() |
Re: Checkbox selbst zeichnen
Danke erstmal für deine Antwort.
Kann sein dass ich mich irre aber das ist doch eine Komponente für die VCL und ich programmiere ja auf WinAPI Basis. :) |
Re: Checkbox selbst zeichnen
Hat echt keiner eine Idee? :?
|
Re: Checkbox selbst zeichnen
Naja, entweder musst du die Checkbox Subclassen (siehe Luckies Tuts) oder du "übermalst" sie einfach.
Wie geht das ? So:
Delphi-Quellcode:
// Procedure zum zeichnen der Buttons im eigenem Style procedure DrawMyButtonstyle(lpdis: PDrawItemStruct; Checked: Boolean); var r: TRect; begin r := lpdis.rcItem; Fillrect(lpdis.hDC, lpdis.rcItem, GetSysColor(COLOR_ACTIVEBORDER)); //... end; function DialogProc(...); oder was auch immer var lpdis: PDrawItemStruct; //... WM_DRAWITEM: // Buttons (Checkboxen) herausfischen und Style ändern begin Result := FALSE; lpdis := PDrawItemStruct(lParam); if Boolean(lpdis.CtlType and ODT_BUTTON) then begin if Boolean(lpdis.itemState and ODS_CHECKED) then DrawMyButtonStyle(lpdis, TRUE) else DrawMyButtonStyle(lpdis, FALSE); Result := TRUE; end; end; ![]() :mrgreen: |
Re: Checkbox selbst zeichnen
Danke für deine Antwort turboPASCAL :thumb:
Habe das nun den code sowie BS_OWNDERDRAW hinzugefügt. Leider wird nun gar nichts mehr angezeigt^^ Scheint wohl noch irgendetwas zu fehlen (Entschuldigung, aber ich kenn mich mit OwnerDraw nur sehr begrenzt aus :( ) |
Re: Checkbox selbst zeichnen
Der Code ist nur ein "unvollendetes" Beispiel in dem die Vorgehensweiser erklärt wird.
Das du nix siehst liegt wohl daran das du in der Procedure DrawMyButtonstyle() die Checkbox komplett neu Zeichnen darfst. :stupid: PS.: Ausserdem ist im Code oben eine falsche Zeile hineingerutscht. Es muss
Delphi-Quellcode:
heissen.
FillRect(lpdis.hDC, lpdis.rcItem, GetStockObject(LTGRAY_BRUSH));
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:46 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