Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Prism Ist es möglich das Aussehen der CheckedListBox zu ändern? (https://www.delphipraxis.net/84478-ist-es-moeglich-das-aussehen-der-checkedlistbox-zu-aendern.html)

zenith 17. Jan 2007 13:39


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

Khabarakh 17. Jan 2007 13:56

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 ;) .

zenith 18. Jan 2007 14:15

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?

Muetze1 18. Jan 2007 14:24

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.

zenith 18. Jan 2007 15:02

Re: Ist es möglich das Aussehen der CheckedListBox zu ändern
 
Danke, hab volgendes gemacht:

hier definiere ich meine eigene Klasse
Delphi-Quellcode:
type TMyCLB = class(System.Windows.Forms.CheckedListBox)
  procedure OnDrawItem(e: DrawItemEventArgs); override;
end;
mein Formular hat eine Komponente Namens "newCB"
Delphi-Quellcode:
newCB: WinForm.TMyCLB;
diese wird auch initialisiert mit:
Delphi-Quellcode:
Self.newCB := WinForm.TMyCLB.Create;
der Rest ist unverändert...

die Methode hab ich zum Testen folgendermassen überschrieben:
Delphi-Quellcode:
procedure TMyCLB.OnDrawItem(e: DrawItemEventArgs);
begin
  inherited OnDrawItem(e);
  e.Graphics.DrawLine(Pen.Create(Color.Red), 0, 0, 10, 20);
end;
die rote Linie wird auch gezeichnet... das ist schon mal was :lol:


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

Khabarakh 18. Jan 2007 15:23

Re: Ist es möglich das Aussehen der CheckedListBox zu ändern
 
Reflector :zwinker:
=> http://www.aisto.com/roeder/dotnet/

zenith 18. Jan 2007 16:34

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:
  ...

Khabarakh 18. Jan 2007 18:27

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:

Application.RenderWithVisualStyles
uses-Eintrag vergessen?
Zitat:

self.UseCompatibleTextRendering
UseCustomTabOffsets
Sind öffentliche Eigenschaften, sollte kein Problem sein.
Zitat:

System.Windows.Forms.TextFormatFlags
Da Delphi Enumwerte immer noch als Konstanten behandelt, solltest du statt TextFormatFlags.XYZ einfach XYZ schreiben können.

zenith 19. Jan 2007 08:56

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 21:21 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz