![]() |
Eigene Komponente TCustomControl den Focus erhalten
Hi,
ich habe mir eine Komponente erstellt, die auf TCustomPanel basiert. Wie kann ich es anstellen, dass die Komponente per MouseDown auch den Focus erhält. Mit Tab komme ich hin und kann KeyPress auswerten. Aber wenn ein anderes Control aktiv ist und ich meines anklicke, erhält es nicht automaisch den Focus. |
AW: Eigene Komponente TCustomControl den Focus erhalten
Vielleicht klingt das naiv (kenne mich mit Komponentenentwicklung kaum aus), aber: was spricht dagegen, im MouseDown einfach SetFocus() aufzurufen?
|
AW: Eigene Komponente TCustomControl den Focus erhalten
Zitat:
|
AW: Eigene Komponente TCustomControl den Focus erhalten
Zitat:
|
AW: Eigene Komponente TCustomControl den Focus erhalten
Hmm..
Könnte es sein, das es deshalb nicht geht, da ein Panel (CustomPanel) ein Container ist und selber eigentlich keinen (sichtbaren) Focus erhält, sondern diesen immer an ein darauf platziertes Control weiter reicht? (Nur so eine Vermutung.. ;) ) |
AW: Eigene Komponente TCustomControl den Focus erhalten
Zitat:
Zitat:
Außerdem: Mit der Tab-Taste kann ich den Focus ja auf mein Control bringen. Ich möchte aber auch, dass es den Focus erhält, wenn ich es mit der Maus anklicke. |
AW: Eigene Komponente TCustomControl den Focus erhalten
Hmm..
Zitat:
Es erhält immer nur ein darauf platziertes Control (Edit/Button..) den Focus, aber nie das Panel selber. Wahrscheinlich wird im CustomPanel ein Flag gesetzt, welches ihm selber kein Focus gibt, sondern an ClientControls weiter reicht.. |
AW: Eigene Komponente TCustomControl den Focus erhalten
Man könnte ja nachschauen wie das bei anderen Controls funktioniert ... z.B. bei
Delphi-Quellcode:
TButton
Delphi-Quellcode:
procedure TButtonControl.WndProc(var Message: TMessage);
begin case Message.Msg of WM_LBUTTONDOWN, WM_LBUTTONDBLCLK: if not (csDesigning in ComponentState) and not Focused then begin FClicksDisabled := True; Winapi.Windows.SetFocus(Handle); // das setzt den Focus FClicksDisabled := False; if not Focused then Exit; end; CN_COMMAND: if FClicksDisabled then Exit; end; inherited WndProc(Message); end; |
AW: Eigene Komponente TCustomControl den Focus erhalten
Zitat:
Jetzt sollten alle KeyPress-Ereignisse auch an meine Komponente gehen (Form keyPreview = False). Tun sie auch ;-) bis auf Pfeiltasten VK_Left, VK_Right, VK_Top und VK_Down. Diese aktivieren sofort das nächste bzw. vohergehende Control. Aber genau diese Tasten benötige. Wie gesagt, wenn ich mit dem Tabulator zu meinem Control navigiere, kommen diese Tasten jedoch an. |
AW: Eigene Komponente TCustomControl den Focus erhalten
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:17 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 by Thomas Breitkreuz