| Autor |
Beitrag |
ähM_Key
      
Beiträge: 88
Windows XP Professional
D7 Enterprise
|
Verfasst: Fr 19.03.04 22:24
Hi!
Hab mal wieder ein Problem!
Also ich möchte in meinem Progi versch Aktionen über Tasten steuern.
Desshalb verwende ich procedure TForm1.FormKeyDown.
Diese bringt aber nur was, wenn die Form1 auch den Focus hat.
Da auf der Form aber verschiedene GroupBoxes mit versch. Buttons sind ist das nie der Fall ergo die Tasten funzen nicht!
Form1.setfocus geht aber auch nicht, da da die Fehlermeldung kommt, dass ein unsichtbares oder deaktiviertes Objekt diesen nicht bekommen kann.
Wie ist dieses Problem zu lösen?
Selbst wenn der Focus verschiebbar wäre würde er bei dem nächsten Klick auf einen Button ja wieder weg sein.
Grüße; ähM_Key
PS: Wie kann ich z.B. die procedure Button1MouseDown ausführen? Wenn ich Button1MouseDown schreibe fehlen ja noch massenweise Parameter; kann man da einfach irgendwas reinschreiben (vom richtigen Typ)?
Moderiert von DeCodeGuru: Topic verschoben
_________________ Alles geht ni! Aber ein bissl' was muss!
|
|
adler
      
Beiträge: 511
Windows XP
Delphi 05 Pers
|
Verfasst: Fr 19.03.04 22:31
ich glaube
GetAsyncKeyState
heißt das, damit kann man glaube ich tasten abfragen, ohne das irgendwo en focus ist.
musste mal gucken
_________________ Wo's nix zu gucken gibt, gibts vielleicht was zu hören.
|
|
ähM_Key 
      
Beiträge: 88
Windows XP Professional
D7 Enterprise
|
Verfasst: Sa 20.03.04 10:06
Erst mal danke, aber so richtig geht's noch nicht!
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if GetAsyncKeyState(VK_RIGHT)<0 then Button26MouseDown(Sen, But, Shi, XX, YY); end;
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin if GetAsyncKeyState(VK_RIGHT)=0 then Button26MouseUp(Sen, But, Shi, XX, YY); end; |
So hab ich's jetzt erst mal gemacht.
Aber sobald ich eine Taste drücke (bzw. loslasse) löst der Button26MouseUp aus, was ja auch irgendwie klar ist.
Weiterhin reagiert der auf das Drücken der VK_RIGHT nur, wenn bestimmte Objekte in der Form den Focus haben. Und zwar sind das solche Objekte, wo was durch den Tastendruck bewirkt wird und nicht, wie bei Buttons, zum nächsten geschalten wird. Also bei z.B. ner Combobox, oder ner Trackbar, geht's.
Wie kann man das umgehen?
Ach und die "Button26MouseUp(Sen, But, Shi, XX, YY)" -Variante ist bestimmt auch nicht die sauberste...
Grüße; ähM_Key
_________________ Alles geht ni! Aber ein bissl' was muss!
|
|
adler
      
Beiträge: 511
Windows XP
Delphi 05 Pers
|
Verfasst: Sa 20.03.04 10:16
Du darfst das nicht ins onKeyDown in die form machen, sondern da wo es gebraucht wird... da brauchste kein keydown
_________________ Wo's nix zu gucken gibt, gibts vielleicht was zu hören.
|
|
ähM_Key 
      
Beiträge: 88
Windows XP Professional
D7 Enterprise
|
Verfasst: Sa 20.03.04 10:23
Hmm, verstehe ich schon, aber so einfach ist das nicht.
Ich hab nämlich kein ganz normal lineares Programm, wo man das jetzt einfach in eine Schleife an die richtige Stelle schreiben könnte, das mit den Tasten muss immmer gehen; egal welche Methode grade läuft oder was aktiv ist.
Da muss es doch ne Möglichkeit geben!
Grüße; ähM_Key
PS: Trotzdem danke für die Chat-mäßige Anwort 
_________________ Alles geht ni! Aber ein bissl' was muss!
|
|
adler
      
Beiträge: 511
Windows XP
Delphi 05 Pers
|
Verfasst: Sa 20.03.04 10:51
Mh, vllt. könntest dus mit nem Timer realisieren... oder?
_________________ Wo's nix zu gucken gibt, gibts vielleicht was zu hören.
|
|
ixtreme
Gast
Erhaltene Danke: 1
|
Verfasst: Sa 20.03.04 11:32
ihr setzt da ganz falsch an....schaut mal hier im forum. Da gab es vor kurzem noch ein thread zu!
ixtreme.de
|
|
ähM_Key 
      
Beiträge: 88
Windows XP Professional
D7 Enterprise
|
Verfasst: Sa 20.03.04 19:58
Hab schon im Forum geschaut wie verrrückt, aber wenn man nicht weis, wonach man sucht ist das schwer...
Wie sollte ich denn ansetzen, wenn die von adler vorgeschlagene Variante nicht so günstig ist?
Grüße; ähM_Key
_________________ Alles geht ni! Aber ein bissl' was muss!
|
|
adler
      
Beiträge: 511
Windows XP
Delphi 05 Pers
|
Verfasst: Sa 20.03.04 20:02
Ja ich glaube iXtreme weiß es auch nicht besser
Ixtreme, mach mal nen link oder so zum thread, oder setze doch mal richtig an
_________________ Wo's nix zu gucken gibt, gibts vielleicht was zu hören.
|
|
ähM_Key 
      
Beiträge: 88
Windows XP Professional
D7 Enterprise
|
Verfasst: Sa 20.03.04 22:18
ni gleich böse werdn
...aber ein Link wäre echt genial!
Grüße; ähM_Key
_________________ Alles geht ni! Aber ein bissl' was muss!
|
|
ähM_Key 
      
Beiträge: 88
Windows XP Professional
D7 Enterprise
|
Verfasst: So 21.03.04 18:49
Hmm, also mir ist da noch was eingefallen.
Ich würde gerne die Funktionalität entfernen, dass der Focus von den Pfeiltasten bewegt werden kann. Ist das irgendwie möglich?
...na und dann muss es doch eine Möglichkeit geben, die Tasten abzufragen, egal was grade Phase ist!
Wäre für Hilfe echt verbunden
Grüße; ähM_Key
_________________ Alles geht ni! Aber ein bissl' was muss!
|
|
ähM_Key 
      
Beiträge: 88
Windows XP Professional
D7 Enterprise
|
Verfasst: Mo 22.03.04 16:50
Danke für's verschieben...hate Angst ins falsche Forum zu posten, da hab ich unter Sonstiges reingehauen...
Hat denn wirklich niemand ne Idee, wie man die Focus-Funktionalität komlett abschalten könnte?
Oder nen andren Lösungsansatz für das Problem?
THX!
Grüße; ähM_Key
_________________ Alles geht ni! Aber ein bissl' was muss!
|
|
Udontknow
      
Beiträge: 2596
Win7
D2006 WIN32, .NET (C#)
|
Verfasst: Di 23.03.04 10:40
Ixtreme hat recht, dieses Problem wurde bereits in anderen Threads hier gelöst. Stichwort : TForm.KeyPreview.
Cu,
Udontknow
|
|
ähM_Key 
      
Beiträge: 88
Windows XP Professional
D7 Enterprise
|
Verfasst: Di 23.03.04 13:40
KeyPreview ist schon lange auf true gestellt, es geht trotzdem nicht!
Wenn der Focus auf einem Button ist, dann verschiebt sich der bei Tastendruck einer Pfeiltaste, aber das keydown-event wird nicht ausgelöst! Nur in einer z.B. Combobox oder Editfeld wird Keydown registriert!
Hab's jetzt schon so gemacht, dass ich den Tabstop nur bei einem Editfeld gelassen habe (alle anderen auf false) sodass man die Steuerung über die Tasten nutzen kann, sobald man Tab gedrückt hat, aber das kann doch keine Lösung sein...
Grüße; ähM_Key
_________________ Alles geht ni! Aber ein bissl' was muss!
|
|