![]() |
Ist es möglich das Aussehen der CheckedListBox zu ändern?
Hallo Leute,
helft mir bitte die CheckedListBox-Darstellung anzupassen... ich muss ein paar Einträge in fetter Schrift darstellen können. Leider hab ich keine Möglichkeit gefunden die DrawItem-Methode (wie bei ListBox) abzufangen, wird im Objektinspektor garnicht angezeigt :cry: hat einer nen Tipp oder Idee? PS: ich nutze "Turbo Delphi für .NET Explorer Edition" mfg, zenith |
Re: Ist es möglich das Aussehen der CheckedListBox zu ändern
Du musst du Methode OnDrawItem überschreiben. Am Besten kopierst du den gesamten Quelltext aus dem Reflector (oder Rotor) und änderst die wichtigen Stellen.
Achja, herzlich Willkommen in der DP ;) . |
Re: Ist es möglich das Aussehen der CheckedListBox zu ändern
Danke für deine Antwort.
Leider hab ich ja keine Möglichkeit gefunden diese Methode zu überschreiben... die ist nicht in dem Objektinspektor aufgelistet. Oder verstehe ich was falsch, bzw. suche an der falschen Stelle? |
Re: Ist es möglich das Aussehen der CheckedListBox zu ändern
Eine Methode zu überschreiben bedeutet, eine Ableitung der CheckListBox Klasse zu machen und darin die Methode OnDrawItem neu zu implementieren mit deinen Änderungen. Bei der Deklaration der Methode müsstest du dann mit Override angeben, dass du diese überschrieben möchtest. Diese neue Komponente dann noch installieren und bei dir auf die Form ablegen und konfigurieren.
|
Re: Ist es möglich das Aussehen der CheckedListBox zu ändern
Danke, hab volgendes gemacht:
hier definiere ich meine eigene Klasse
Delphi-Quellcode:
mein Formular hat eine Komponente Namens "newCB"
type TMyCLB = class(System.Windows.Forms.CheckedListBox)
procedure OnDrawItem(e: DrawItemEventArgs); override; end;
Delphi-Quellcode:
diese wird auch initialisiert mit:
newCB: WinForm.TMyCLB;
Delphi-Quellcode:
der Rest ist unverändert...
Self.newCB := WinForm.TMyCLB.Create;
die Methode hab ich zum Testen folgendermassen überschrieben:
Delphi-Quellcode:
die rote Linie wird auch gezeichnet... das ist schon mal was :lol:
procedure TMyCLB.OnDrawItem(e: DrawItemEventArgs);
begin inherited OnDrawItem(e); e.Graphics.DrawLine(Pen.Create(Color.Red), 0, 0, 10, 20); end; leider weis ich nicht wie ich an den original-Quellcode komme, um ihn in meiner Methode einzufügen. Das Reflection-Tool liefert mir keinen Quellcode :cry: mfg zenith |
Re: Ist es möglich das Aussehen der CheckedListBox zu ändern
|
Re: Ist es möglich das Aussehen der CheckedListBox zu ändern
Danke,
leider kann ich den Quellcode nicht einfach einfügen es verwendet Methoden und Klassen, die mein .NET nicht hergibt :cry: z.B.: Application.RenderWithVisualStyles self.UseCompatibleTextRendering self.idealCheckSize UseCustomTabOffsets System.Windows.Forms.TextFormatFlags und noch paar Sachen mehr... auch kann ich nichts anfangen mit:
Delphi-Quellcode:
...
... endgoto Label_049B ... Label_049B: ... |
Re: Ist es möglich das Aussehen der CheckedListBox zu ändern
Wortwörtlich wird es nicht funktionieren, da musst du schon selbst Hand anlegen.
So viel verrate ich aber schon einmal: Zitat:
Zitat:
Zitat:
|
Re: Ist es möglich das Aussehen der CheckedListBox zu ändern
Ok, ich danke euch Leute... ich hab es hinbekommen.
zuerst hatte ich dem Reflector die Assemblies der Version 2.0 angegeben, damit konnte ich nicht viel anfangen, denn die uses-Einträge waren da. dann habe ich den Reflector mit Assemblies v1.1.4322 gefüttert... diesen quellcode konnte ich schneller und leichter lauffähig machen. auch kann ich jetzt meine gewünschten Zeilen fett darstellen. Danke also noch mal für die Hilfe! Gruß, zenith |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23: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