![]() |
Keinen Rahmen wenn Objekt den Focus hat?
Hai,
gibt es eine Möglichkeit zu verhindern das ein "Rahmen" um ein Object (in diesem Fall eine TTrackBar) gezeichnet wird wenn es den Focus besitzt? |
Re: Keinen Rahmen wenn Objekt den Focus hat?
Moin Sharky,
probier' doch mal mit DrawFocusRect zu experimentieren. Eigentlich solltest Du den Rahmen durch einen erneuten Aufruf dieser Funktion wegbekommen, sobald das Control den Fokus bekommt. |
Re: Keinen Rahmen wenn Objekt den Focus hat?
Zitat:
so wie ich das verstehe müsste ich aber genau wissen wo der Rahmen gezeichnet wird um in durch einen erneuten aufruf zu entfernen? |
Re: Keinen Rahmen wenn Objekt den Focus hat?
Moin Sharky,
wo das Control sitzt, müsste sich ja errechnen/auslesen lassen :gruebel: |
Re: Keinen Rahmen wenn Objekt den Focus hat?
Zitat:
aber irgenwas mache ich falsch. Was muss ich dem Rects den übergeben? Die masse des Objectes oder seine Position auf der Form? |
Re: Keinen Rahmen wenn Objekt den Focus hat?
Moin Sharky,
es muss die Position übergeben werden. Mal ein Beispiel:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var dwDC : DWORD; begin dwDC := GetDC(Self.Handle); try DrawFocusRect(dwDC,self.ClientRect); finally ReleaseDC(Self.Handle,dwDC); end; end; |
Re: Keinen Rahmen wenn Objekt den Focus hat?
Hai Christian,
leider schaffe ich es trotzdem nicht :cry: Wenn ich es so versuche passiert überhaupt nichts:
Delphi-Quellcode:
Wenn ich dein Beispiel verwende zeichnet er mir, so wie erwartet, einen FocusRect um meine gesamte TForm.
procedure TForm1.Button1Click(Sender: TObject);
begin Trackbar1.SetFocus; DrawFocusRect(TrackBar1.Handle,TrackBar1.ClientRect); end; |
Re: Keinen Rahmen wenn Objekt den Focus hat?
Moin Sharky,
DrawFocusRect benötigt den Device Context, nicht das Handle des Controls. Deshalb muss die Verwendung dieser Funktion der DC gelesen (GetDC), und, nachdem er nicht mehr benötigt wird, wieder freigeben (ReleaseDC) werden. |
Re: Keinen Rahmen wenn Objekt den Focus hat?
Sorry das ich den Thread hier wieder rauskrame, aber ich habe zur Zeit das selbe Problem. Nur leider funktioniert der BeispielCode bei mir nicht. Könnt ihr mir weiter helfen?
Ich hab schon die Suche genutzt, das hat mir aber alles nichts gebracht... |
Re: Keinen Rahmen wenn Objekt den Focus hat?
Warum nur wolen die Leute immer die bewaehrten User Interface Regeln kaputtmachen?
|
Re: Keinen Rahmen wenn Objekt den Focus hat?
Weil es bei einem Mediaplayer etwas doof aussieht wenn da ´dieser Standardrahmen drum ist ;)
PS: Eine Lösung wie man den rahmen auch anders gestalten kann (z.B. andere Farbe) würde mir reichen. |
Re: Keinen Rahmen wenn Objekt den Focus hat?
Such dir doch eine andere Komponente die nicht von TWinControl ableitet. Ohne eigenes Fenster kein Focus. Was man dabei verliert ist allerdings die Bedienbarkeit per Tastatur. Der Focus sagt naemlich an welche Control die Tasteneingaben bekommt.
|
Re: Keinen Rahmen wenn Objekt den Focus hat?
Dasweiß ich doch :zwinker:
Wie gesagt, es reicht mir auch zu wissen wie man den Rahmen umfärbe kann. Das würde auch nicht schlecht aussehen :D |
Re: Keinen Rahmen wenn Objekt den Focus hat?
Das die Farbe des FocusRect wird wahrscheinlich von einer der Systemfarben bestimmt.
|
Re: Keinen Rahmen wenn Objekt den Focus hat?
Wenn du mir jetzt noch sagst ob und ggf. wie man das umstellen kann wäre ich sehr glücklich :D
|
Re: Keinen Rahmen wenn Objekt den Focus hat?
Das nuetzt dir nichts wil dann auch andere Elemente die Farbe wechseln. Das sind die Farben die man im Control Panel "Anzeige" unter "Darstellung" aendern kann.
|
Re: Keinen Rahmen wenn Objekt den Focus hat?
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:
wenn man WM_SETFOCUS abfängt, kann man eigentlich trotzdem die TTrackbar mit der Tastatur bedienen. Allerdings sieht man dann nicht mehr, dass die Trackbar den Focus besitzt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:35 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