AGB  ·  Datenschutz  ·  Impressum  







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

Setfocus auf dbgrid

Ein Thema von Luckner · begonnen am 18. Jun 2014 · letzter Beitrag vom 20. Jun 2014
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.316 Beiträge
 
Delphi 12 Athens
 
#1

AW: Setfocus auf dbgrid

  Alt 18. Jun 2014, 15:04
Die Lösung ist: Key:=0; Jetzt funktioniert es.
Echt? Kann ich mir kaum vorstellen ... wie sieht dein Code denn jetzt aus?
Auf F10 reagiert z.B. das Hauptmenü, womit dann nach dem Verlassen der Eventmethode noch anderer Code auf das VK_F10 ragiert und irgendwas macht.


PS: Den schönsten Spaß hat man, wenn einige Ereignisse im OnKeyDown verarbeitet werden und Andere im OnKeyUp.

Ein gutes Beispiel hatte ich da auch mal, so wurde im OnKeyDown per F2 das aktuelle ShowModal-Fenster geschlossen,
während das übergeordnete Fenster im OnKeyUp per F2 eine neue Instanz des Fenster öffnete.
- F2 rein und alles ist OK
- per F2 wieder raus ging nicht, da es gleich wieder rein ging, weil das eine Fenster sich im Down ausblendete und das Up dann im anderen Fenster landete.
> beides gleichermaßen im Up ODER im Down ausgeführt, hätte keine Probleme bereitet

Oder wie hier:
Mehrere Stellen verarbeiten das selbe Tastenereignis und man wundert sich dann, wenn Mehreres passiert oder Einiges nicht richtig.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (18. Jun 2014 um 15:07 Uhr)
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#2

AW: Setfocus auf dbgrid

  Alt 18. Jun 2014, 15:07
Genau dafür gibt's den Spruch: Verarschen kann ich mich alleine
Daß das wunderbar klappt, hat wohl schon jeder einmal erleben dürfen
  Mit Zitat antworten Zitat
Luckner

Registriert seit: 28. Nov 2006
Ort: Berlin
418 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: Setfocus auf dbgrid

  Alt 18. Jun 2014, 15:37
Hallo Perlsau, himitsu,

Meine Delphi-Version ist 7 Pro. Folgendes Problem noch, auf das, so glaube ich, gerade himitsu darauf hingewiesen hat. Habe versucht einige Funktionen ebenfalls in einem anderem Frame mit den F-Tasten zu steuern. Es funktioniert nicht, weil im Tastaturpuffer jetzt die Funktionen der F-Tasten aus dem vorherigen Frame noch hinterlegt sind und in einem weiterem Frame nicht funktionieren bzw. Mist machen. Kann ich, wenn ich ein Frame verlasse, den gesamten Tastaturpuffer zurücksetzen? Mit dem key := 0 funktioniert auch das Bewegen mit den Pfeiltasten im DB-Grid nicht mehr. Aber das werde ich noch gesondert überprüfen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.316 Beiträge
 
Delphi 12 Athens
 
#4

AW: Setfocus auf dbgrid

  Alt 18. Jun 2014, 15:50
Ich hoffe du setzt das nur dann auf 0, wenn du darin etwas gemacht hast (z.B. nur bei deinem VK_F10) und nicht immer auch für alle anderen Ereignisse.

PS: Man sollte am Besten auch unbedingt immer die kompletten ShiftStates prüfen.
Also nicht mit ... IN Shift , sondern mit Shift = [...] , auch und vorallem wenn man keine dieser Tasten verwendet.
F10 ist nunmal kein Strg+F10 usw.

Delphi-Quellcode:
if (Key = VK_F10) and (Shift = []) then begin
  ...
  Key := 0;
end;
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (18. Jun 2014 um 15:53 Uhr)
  Mit Zitat antworten Zitat
Luckner

Registriert seit: 28. Nov 2006
Ort: Berlin
418 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: Setfocus auf dbgrid

  Alt 18. Jun 2014, 16:38
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?
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.351 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Setfocus auf dbgrid

  Alt 18. Jun 2014, 16:46
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...
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#7

AW: Setfocus auf dbgrid

  Alt 18. Jun 2014, 16:52
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.

Geändert von Perlsau (18. Jun 2014 um 16:55 Uhr)
  Mit Zitat antworten Zitat
Luckner

Registriert seit: 28. Nov 2006
Ort: Berlin
418 Beiträge
 
Delphi 7 Enterprise
 
#8

AW: Setfocus auf dbgrid

  Alt 18. Jun 2014, 17:02
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?
  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 04:44 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