AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

CheckListBox und OwnerDraw

Ein Thema von OregonGhost · begonnen am 23. Okt 2003 · letzter Beitrag vom 23. Okt 2003
Antwort Antwort
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#1

CheckListBox und OwnerDraw

  Alt 23. Okt 2003, 18:02
Ich verwende eine CheckListBox mit OwnerDraw, weil die Items mehrfarbigen und -zeiligen Text enthalten müssen und "aktiviert" werden können müssen.

Zwei Probleme habe ich damit. Zum einen wird trotzdem immer der gepunktete Fokusrahmen um die Items gezeichnet, und im Gegensatz zum ListView (wo ich weiß, wie man das unterbinden kann, denn da gibt es eine var-Variable DefaultDraw, die man einfach auf false setzen kann) krieg' ich das einfach nicht weg, außer indem ich Brush.Style auf bsClear setze - was aber zum einen nicht Sinn der Sache sein kann und zum anderen zu folgendem Problem führt:

Ich verwende den Flat-Style der Listbox, weil die Checkbox sonst keinen XP Visual Style bekommt (so zwar nur flach, sieht aber trotzdem besser aus) - aber wenn ich den Brush.Style auf bsClear setze wie oben beschrieben, wird die CheckBox nicht mehr korrekt gezeichnet, insbesondere nach Klick verschwindet sie.

Hat da jemand eine Lösung, oder ist es sinnvoll, auf ListView umzusteigen?
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: CheckListBox und OwnerDraw

  Alt 23. Okt 2003, 18:25
Hallo

beim ondrawitem-ereignis prüfen, ob das item selektiert ist (odselected in state) und mit Canvas.drawfocusrect den Fokus einfach drüberzeichnen

Mfg Frank

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#3

Re: CheckListBox und OwnerDraw

  Alt 23. Okt 2003, 18:54
Das gibt's nicht - das ist ja einfach

Aber ist es jetzt nicht so, dass das FocusRect zweimal gezeichnet wird, einmal von mir und einmal von Windows bzw. der VCL (wer auch immer)? Ist das nicht eigentlich unnötiger Overhead?

Naja, egal, es funktioniert und man merkt davon nichts. Vielen Dank ;c)
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: CheckListBox und OwnerDraw

  Alt 23. Okt 2003, 19:17
Moin OregonGhost,

Zitat von Delphi Hilfe zu TCanvas.DrawFocusRect:
Da DrawFocusRect mit einer XOR-Funktion arbeitet, führt ein zweiter Aufruf mit dem gleichen Parameter dazu, daß der Rahmen wieder vom Bildschirm verschwindet.
Kannst Du auch im PSDK unter DrawFocusRect so nachlesen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:53 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