AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Focus löschen?

Ein Thema von Pseudemys Nelsoni · begonnen am 2. Apr 2003 · letzter Beitrag vom 9. Apr 2003
 
MathiasSimmack
(Gast)

n/a Beiträge
 
#13
  Alt 2. Apr 2003, 17:52
Du könntest eine eigene Komponente auf der Basis der TListBox schreiben und die private Methode "CNDrawItem" entsprechend gestalten:
Delphi-Quellcode:
procedure TNoFocusLB.CNDrawItem(var Message: TWMDrawItem);
var
  State: TOwnerDrawState;
begin
  with Message.DrawItemStruct^ do
    begin
      State := TOwnerDrawState(LongRec(itemState).Lo);
      Canvas.Handle := hDC;
      Canvas.Font := Font;
      Canvas.Brush := Brush;
      if(Integer(itemID) >= 0) and (odSelected in State) then
        begin
          Canvas.Brush.Color := clHighlight;
          Canvas.Font.Color := clHighlightText
        end;
      if Integer(itemID) >= 0 then DrawItem(itemID, rcItem, State) else
      Canvas.FillRect(rcItem);

      // Secret -->
      if(FFocusRect) and (odFocused in State) then DrawFocusRect(hDC, rcItem);
      // <--

      Canvas.Handle := 0;
    end;
end;
Das Beispiel stammt aus einer älteren Komponente, die ich genau zu dem Zweck geschrieben habe. Im Objektinspektor gibt es eine neue Eigenschaft
Delphi-Quellcode:
type
  TNoFocusLB = class(TListBox)
  private
    FFocusRect : boolean;
    procedure CNDrawItem(var Message: TWMDrawItem); message CN_DRAWITEM;
  { ... }
  published
    property FocusRect : boolean read FFocusRect write FFocusRect;
  end;
mit der du einstellen kannst, ob du den Rahmen (du meinst doch das Gepunkte?) sehen willst oder nicht. - Abgesehen davon verhält sich die Komponente wie eine gewöhnliche Listbox.

Ohne Komponente geht es auch. Aber da müsste ich noch mal nachschauen. Es ging auch durch das erneute Aufrufen von "DrawFocusRect" (glaube ich), weil dadurch der bestehende Rahmen ge-XOR-t wurde und optisch verschwand. Aber, wie gesagt!, Angabe ohne Gewähr. Ich hab´s über obige Komponente gemacht, weil´s einfacher ist, diese auf´s Formular zu pappen als ständig in die Zeichenroutine eingreifen zu müssen.

Gruß.
  Mit Zitat antworten Zitat
 


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 09:10 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