![]() |
Selektion eines Buttons wieder los werden
Moinsen!
Mit Bezug auf ![]() Grob umrissen: Ein TBitButton, und ein TWebbrowser im Designmodus. Sobald der Button ein mal den Fokus hatte, kommen im Webbrowser Enter-Tastendrücke nicht mehr an, die dort üblicherweise einen neuen Paragraph einfügen. So ein Button scheint zwei sorten von Fokus zu kennen. Ein mal den "normalen" Fokus, den man am gestrichelten Rahmen erkennt, und einen weiteren, der bei mir unter Win7 ein blauer dicker Rand ist (sonst glaub ich ein schwarzer dickerer Rand). Das Problem scheint nun diese zweite Art von Fokus zu sein, da die Enter-Drücke auf den Button angewendet werden, sobald er diesen hat. Der TWebbrowser hat zwar den "normalen" Fokus, und auch das Caret, aber der 2. Fokus scheint Vorrang zu genießen, und der Webbrowser bekommt diesen nicht durch SetFocus(). Ich war bisher auch nicht in der Lage herauszufinden, in wessen WndProc das geschieht. (Die Containersituation ist im konkreten Fall etwas komplexer als einfach auf einem Form. Details im verlinkten Thread.) Was ich jetzt also suche, ist ein Weg meinen Buttons diesen 2. Fokus wieder wegzunehmen, wie es gleich nach Programmstart ja auch ist. Die Default-Property ist es schon mal nicht, die ist immer False, auch mit dickem Rand. Wonach müsste ich hier suchen? Dankschö im Voraus! |
AW: Des Buttons zweiter Fokus
Ich habe nun heruasgefunden, dass dieser ominöse 2. Fokus "Selektion" heisst (Threadtitel daher angepasst), und etwas anderes ist als der tatsächliche "Fokus". Es können auch nicht alle Controls eine Selektion haben. Der Mist ist jetzt nur, dass ich bislang keinen Weg gefunden habe, die Selektion aus meinem Programm heraus zu beeinflussen! In
![]() Jeder noch so oberschmutzige Hack ist herzlichst willkommen, ich hab an diesem unnötigen Mist nun schon locker 2 Tage verbraten :( |
AW: Selektion eines Buttons wieder los werden
Wie du die Selektion wieder los wirst weiss ich nicht. Aber vielleicht hilft ja dieser Tip im Swissdelphicenter bezüglich der Entertaste
![]() |
AW: Selektion eines Buttons wieder los werden
In Delphi sind die Eigenschaften .Cancel (ESC) und .Default (Enter) für solch ein Verhalten verantwortlich ... Näheres steht in der OH.
Den "normalen" Fokus bekommt man vom Button, indem man ihn woanders hinlegt (z.B. auf deinen Webbrowser).
Delphi-Quellcode:
{Form1.}ActiveControl := nil;
oder {Form1.}ActiveControl := WebBrowser1; oder WebBrowser1.SetFocus; |
AW: Selektion eines Buttons wieder los werden
Default hat, wie gesagt, leider überhaupt keinen Einfluss darauf. Es wird weder beim Klick auf den Button auf true gesetzt, noch bringt explizites Setzen auf false im OnClick etwas. Der Button bleibt selektiert. Der Fokus ist auch nicht das Problem, der sitzt brav aufm Webbrowser, und erkennbar nicht auf dem Button (gestrichelter Rahmen verschwindet).
An den Application-Messagehandler hatte ich noch nicht gedacht, da müsste ja theoretisch ALLES erstmal landen. Mal schauen ob ich mit dem was fuckeln kann; das Problem wird dabei sein zu prüfen, ob der Webbrowser den Fokus hat - das Frame mit dem Browser wird nämlich dynamisch erzeugt... Lieber wäre mir noch immer, den blöden Buttons die Selektion zu entreissen :? |
AW: Selektion eines Buttons wieder los werden
Default vestimmt auch nur, welcher Zuerst die Selektion hat.
|
AW: Selektion eines Buttons wieder los werden
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:45 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