![]() |
Komponente darf keinen Focus erhalten
Hallo, ich habe schon hier im Forum gesucht, aber nicht wirklich etwas gefunden, das funktioniert hat.
Ich habe auf meinem Formular mehrere Edit Felder in die etwas eingegeben werden soll. Über einen HotKey habe ich es realisiert, in einer anderen Komponente, die mittels eines Frames eingebunden ist z.B. bei einer tif Datei eine Seite weiter zu blättern. Nur verliert das Edit Feld dabei den Focus, soll es aber nicht. Ich habe schon bei der Komponente als auch dem Frame die Eigenschaft TabStop auf False gestellt, aber das hat nicht geholfen. Sobald ich den HotKey auslöse verliert das aktuell focusierte Edit Feld den Focus. Falls das wichtig sein sollte, der HotKey ist Strg + Pfeil Rechts bzw. Links Ich hoffe einer von euch hat eine Idee, ich bin nämlich so langsam am verzweifeln. |
Re: Komponente darf keinen Focus erhalten
Wie hast Du denn den Hotkey realisiert? Vielleicht setzt die Komponente auch selber den Focus. Bei folgendem Beispiel (ein Edit und ein Memo zum Testen) verliert das Edit jedenfalls nicht den Focus, das Memo scrollt ordnungsgemaess:
Delphi-Quellcode:
procedure TFormHotKeyTest.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); begin if shift = [ssCtrl] then begin case key of VK_LEFT : begin MemoScroll.Perform(WM_KEYDOWN, VK_HOME,0); key := 0; end; VK_RIGHT : begin MemoScroll.Perform(WM_KEYDOWN, VK_END,0); key := 0; end; end; end; end; |
Re: Komponente darf keinen Focus erhalten
Ich habe die HotKeys als Systemweite HotKeys deklariert, da die Komponente sonst
wenn ich die Pfeiltaste drücke die seite auch in die Richtung verschiebt. Wenn ich die Viewer Komponente deaktiviere (Enabled := false) funktioniert es, aber ich kann dann z.B. nicht mehr auf den Zoom der Komponente zugreifen. Ich habe auch schon probiert die Komponente zu disabeln, die die Funktion nächste Seite aufrufen auszuführen und die Komponente danach wieder zu enablen. Aber das funktioniert auch nicht, da die Komponente dann schon wieder aktiviert ist wenn sie noch die Seite weiter springt. |
Re: Komponente darf keinen Focus erhalten
Zitat:
Delphi-Quellcode:
Wieder das ürpsprüngliche Edit selektierst?
TWinControl(Sender).SetFocus;
|
Re: Komponente darf keinen Focus erhalten
Delphi-Quellcode:
Ich habe die HotKeys wie gesagt systemweit erzeugt, damit der Viewer nicht auch die Position es Bildes verändert.
procedure TfrmMain.Set_Global_Hotkeys(var Message: TMessage);
var notify:string; begin notify:=''; if Message.Msg=WM_Hotkey Then begin SetTimer(Self.Handle,Message.WParam,Hotkeys[Message.WParam-$BFF0].Interval*1000,nil); SendMessage(GetActiveWindow,WM_KEYDOWN,Hotkeys[Message.WParam-$BFF0].Modify,Hotkeys[Message.WParam-$BFF0].Key); SendMessage(GetActiveWindow,WM_KEYUP,Hotkeys[Message.WParam-$BFF0].Modify,Hotkeys[Message.WParam-$BFF0].Key); notify:=''; end else if Message.Msg=WM_TIMER Then Begin if HotKeys[Message.WParam-$BFF0].Notify<>'' Then begin notify:=''; notify:=HotKeys[Message.WParam-$BFF0].Notify; end; KillTimer(Self.Handle,Message.WParam); end else WndProc(Message); if sametext(notify,'left') then viewer1.Previous.Execute; if sametext(notify,'right') then viewer1.Next.execute; notify:=''; end; und daher habe ich keinen sender. und die methode nächste Seite ist in dem Frame deklariert und wird über eine ActionList angesteuert, die auch in dem Frame deklariert ist. aus diesen gründen bekomme ich auch keinen sender, da ich ja nicht das keydown ereignis benutze. deine lösung wäre super, genau das, was ich wollte. es soll einfach das edit feld focusiert bleiben. |
Re: Komponente darf keinen Focus erhalten
dann wirst du wohl den Viewer abändern (von der komponente ableiten und die focusmessage überschreiben) müssen denn da wird irgendwo drin stehen das er beim mouseown etc. sich den focus aneignet.
|
Re: Komponente darf keinen Focus erhalten
Was ist das für eine Komponente ? Was soll die genau machen ? Inwiefern kommen da Frames ins Spiel ? Fragen über Fragen... 8)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:43 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