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
Antwort Antwort
Seite 2 von 2     12   
lodda

Registriert seit: 6. Dez 2002
65 Beiträge
 
Delphi 5 Standard
 
#11
  Alt 2. Apr 2003, 17:27
SpeedButton kann den Focus nicht erhalten, weil es nicht von TWinControl abgeleitet ist und ihm somit kein Windowsfenster zugrunde liegt. Aber mit einem normalen Button müsste es funktionieren
Die 3 größten Lügen der Software- Entwickler:
1. Dieses Feature ist noch nicht implementiert, aber das ist kein Problem dies zu tun.
2. Wir arbeiten an einem Update um den Fehler zu beseitigen.
3. Ihre Software wird nächste Woche fertig sein.
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#12
  Alt 2. Apr 2003, 17:41
ok ... muss denn irgend eine komponente den focus haben?, ich hab nämlich sonst keine buttons auf dem form, nur panels memos, edits und listboxen
Mario
  Mit Zitat antworten Zitat
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
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#14
  Alt 2. Apr 2003, 17:57
moin mathias danke, ich probier das mal
Mario
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#15
  Alt 9. Apr 2003, 18:06
Hallo,

ich habe es gerade selber für ein Projekt benötigt und kann die Aussage von Mathias bestätigen:

Den 'gepunkteten' Fokus-Rahmen um einen selektierten Eintrag kann man im ownerdraw-Ereignis tatsächlich leicht eliminieren, indem man nach dem Zeichnen die Funktion 'DrawFocusRect' aufruft:

Delphi-Quellcode:
...
If (odFocused in State) Then
  DrawFocusRect( Rect );
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 22:23 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