AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Komponente darf keinen Focus erhalten

Ein Thema von prov171 · begonnen am 26. Apr 2005 · letzter Beitrag vom 26. Apr 2005
Antwort Antwort
prov171

Registriert seit: 1. Jul 2004
4 Beiträge
 
Delphi 7 Professional
 
#1

Komponente darf keinen Focus erhalten

  Alt 26. Apr 2005, 16:32
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.
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Komponente darf keinen Focus erhalten

  Alt 26. Apr 2005, 17:05
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;
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
prov171

Registriert seit: 1. Jul 2004
4 Beiträge
 
Delphi 7 Professional
 
#3

Re: Komponente darf keinen Focus erhalten

  Alt 26. Apr 2005, 17:21
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.
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Komponente darf keinen Focus erhalten

  Alt 26. Apr 2005, 17:29
Zitat von prov171:
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.
Und was ist wenn Du das Übel ganz gemein an der Wurzel packst und nach dem Aufruf der Scrollfunktion mit:
TWinControl(Sender).SetFocus; Wieder das ürpsprüngliche Edit selektierst?
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
prov171

Registriert seit: 1. Jul 2004
4 Beiträge
 
Delphi 7 Professional
 
#5

Re: Komponente darf keinen Focus erhalten

  Alt 26. Apr 2005, 17:51
Delphi-Quellcode:
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;
Ich habe die HotKeys wie gesagt systemweit erzeugt, damit der Viewer nicht auch die Position es Bildes verändert.
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.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Komponente darf keinen Focus erhalten

  Alt 26. Apr 2005, 18:49
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#7

Re: Komponente darf keinen Focus erhalten

  Alt 26. Apr 2005, 19:38
Was ist das für eine Komponente ? Was soll die genau machen ? Inwiefern kommen da Frames ins Spiel ? Fragen über Fragen... 8)
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort


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 17:29 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