Autor Beitrag
ähM_Key
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 88

Windows XP Professional
D7 Enterprise
BeitragVerfasst: 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 user profile iconDeCodeGuru: Topic verschoben

_________________
Alles geht ni! Aber ein bissl' was muss!
adler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 511

Windows XP
Delphi 05 Pers
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 88

Windows XP Professional
D7 Enterprise
BeitragVerfasst: Sa 20.03.04 10:06 
Erst mal danke, aber so richtig geht's noch nicht!

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 511

Windows XP
Delphi 05 Pers
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 88

Windows XP Professional
D7 Enterprise
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 511

Windows XP
Delphi 05 Pers
BeitragVerfasst: 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



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 88

Windows XP Professional
D7 Enterprise
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 511

Windows XP
Delphi 05 Pers
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 88

Windows XP Professional
D7 Enterprise
BeitragVerfasst: Sa 20.03.04 22:18 
ni gleich böse werdn :D

...aber ein Link wäre echt genial!

Grüße; ähM_Key

_________________
Alles geht ni! Aber ein bissl' was muss!
ähM_Key Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 88

Windows XP Professional
D7 Enterprise
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 88

Windows XP Professional
D7 Enterprise
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 88

Windows XP Professional
D7 Enterprise
BeitragVerfasst: 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!