Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Setfocus auf dbgrid (https://www.delphipraxis.net/180794-setfocus-auf-dbgrid.html)

stahli 18. Jun 2014 15:46

AW: Setfocus auf dbgrid
 
Verstehe ich das so richtig?

Du hast in einem Formular mehrere Frames mit diversen Controls. Wenn Du F10 oder F2 drückst, soll etwas gemacht werden, egal, welches Control gerade den Focus hat?

Ansonsten mach doch mal einen Screenshot oder so, dass das etwas nachvollziehbarer wird...

Perlsau 18. Jun 2014 15:52

AW: Setfocus auf dbgrid
 
Zitat:

Zitat von Luckner (Beitrag 1262798)
Danke himitsu,
der Tipp mit key:=0 war richtig. Hatte Das an der falsche Stelle gesetzt. Jetzt habe ich das Problem, das z.B. die F2-Taste in einem weiterem Frame eine andere Funktion haben sollte. Leider wird die Funktion aus dem vorherigem Frame aufgerufen. Da holft das Setzen key := 0 nicht. Irgendwie müsste man den speicher löschen. Aber wie?

Kann es sein, daß du da was verwechselst? Das eine ist der Tastaturpuffer: dieser enthält Zeichen, die du mit deiner Tastatur eingegeben hast. Das andere sind Hotkeys, die u.U. für's gesamte Programm gelten: Bestimmte Ereignisse werden beim Drücken vorher festgelegter Tasten ausgelöst. Mit Key := 0 bzw. Key := #0 (bei KeyPress) löschst du lediglich den Tastaturpuffer, der danach keine zuvor eingegebene Zeichen mehr enthält.

Luckner 18. Jun 2014 16:02

AW: Setfocus auf dbgrid
 
Habe in einer Form 2 Frames. In der Form, wie auch in den einzelnen Frames gibt es z.B. Schliessen-Button. Schliessen-Button in Frame1 schliesst das Frame1, schliessen-Button in Frame2 schliesst Frame2. Schliessen-Button in Form1 schliesst die Form. Beide Frames sind allClient. Aus der Form kann man nur ein Frame aufrufen. So, wenn man in Frame1 ist, würde ich gerne mit der F10-Taste Frame1 schliessen, in Frame2 dann Frame2 schliesse und am Ende dann die Form. Die Buttons in den jeweiligen Frames machen das schon. Wenn ich jetzt in Frame1, oder 2 bin und F10 drücke wird sofort die ganze Form geschlossen. Das hin und her Springen von Frame zu Frame mache ich über die Eigenschaft "Visible". Möglicherweise müsste ich ein nichtsichtbares Frame auch deaktivieren?

Luckner 18. Jun 2014 16:20

AW: Setfocus auf dbgrid
 
Hallo Perlsau,

ja, dann sind es Hotkeys. kann man die irgendwie zurücksetzen oder Überschreiben?

Perlsau 18. Jun 2014 16:20

AW: Setfocus auf dbgrid
 
Die Ereignisbehandlungen für Keys im Hauptformular gelten auch für zusätzliche Fenster sowie Frames. Einzig beim Aufruf eines modalen Fensters gelten sie dort nicht. Im Übrigen ist die Wahl der F10-Taste eine schlechte, denn damit werden normalerweise Menüs aktiviert.

himitsu 18. Jun 2014 16:23

AW: Setfocus auf dbgrid
 
Jupp, viele Programme nehmen daher Strg+F4 für Frames/Tabs, da Alt+F4 ja auch schon als Fenster-Schließen bekannt ist.


Hier wird übrigens nirgendwo der Tastaturpuffer gelöscht.

Das Tastenereignis wird von der VCL-Messageloop aus dem MessageQueue geholt und dann verarbeitet.
Dabei wird das Key-Event durch mehrere Komponenten geschleift. Sobald nun Eine das Key auf 0 setzt, bekommen die Danach dann nur noch diese 0 oder deren Event wird ganricht erst aufgerufen.



Du hast nicht zufällig KeyPreview der Form aktiviert?
Wenn ja, dann bekommt sie zuerst das Event, ansonsten bekommt die Form das als Letztes und zuerst die Komponenten/Frames.

Also entweder kein KeyPreview,
oder du muß in der Form selber schauen ob es einen Frame gibt, dann schleißt du den Frame und wenn nicht, dann die Form.

Luckner 20. Jun 2014 09:53

AW: Setfocus auf dbgrid
 
Hallo,
war gestern ganzen Tag unterwegs, deshalb erst heute weiter zu diesem Zhema. Himitsu danke für den Tipp mit "keypreview". Klar, die Taste F10 ist nicht glücklich gewählt, aber Chef möchte ganz einfach mit möglich nur einem Tansten-klick irgendwelche Funktionen in verschiedenen Masken aufrufen. Nach möglichkeit nur die F-Tasten. Also schalte ich, wenn ich in der Form ein Frame aufrufe "keypreview" aus, dann funktionieren die F-Tasten im Frame und wenn ich auf die Hauptform zurückspringe, wird "keypreview" auf True gesetzt, damit die F-Tasten da auch reagieren. Hatte gerade einige Tests gemacht und es scheint zu funktionieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:08 Uhr.
Seite 3 von 3     123   

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