Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   F1-F9 Tasten simulieren mit Hilfe von RadioButton´s (https://www.delphipraxis.net/115589-f1-f9-tasten-simulieren-mit-hilfe-von-radiobutton%B4s.html)

Lostriga 14. Jun 2008 14:08


F1-F9 Tasten simulieren mit Hilfe von RadioButton´s
 
so ...

erst hab ich mal die SuFu genutzt ..aber nichts zu meinem Problem gefunden

deshalb an euch

ich möchte die Tasten F1 bis F9 simulieren aber diese sollen auswählbar sein über einen jeweiligen RadioButton, d.h. F1 über den RadioButton mit der Bezeichnung "F1", F2 über den RadioButton mit der Bezeichnung "F2", .....

ich entscheide mich also für einen RadioButton (z.B. F7) und klicke dann auf den Start Button "simuliere Taste", es sollte aber möglich sein jederzeit die F-Taste zu wechseln und dann halt mit nem anderen RadioButton (z.B. F4) fortzufahren

┌────────────┐
│┌──────────┐│
││simuliere Taste││
│└──────────┘│
│..┌────────┐..│
│..│F1 F4 F7│..│
│..│F2 F5 F8│..│
│..│F3 F6 F9│..│
│..└────────┘..│
└───────────┘

so soll es ungefähr aussehen (ein bisschen krum und schief aber naja :roll: )
das Rote ist die Taste zum beginnen und das Blaue sind die RadioButton´s (und davon soll einer angeklickt werden um dann die jeweilige F-Taste zu simulieren)

zur Zeit läuft es nur über eine F-Taste die ich dann immer im Quellcode umstelle ... aber das ist ja keine Lösung

würde mich über Hilfe freuen und bedanke mich schon mal

Real-TTX 14. Jun 2008 14:25

Re: F1-F9 Tasten simulieren mit Hilfe von RadioButton´s
 
Das es einfach wechselt, sollte kein Problem sein. Ich würde es so machen, dass ich einfach ein Timerobject erstelle und das OnTimer Ereigniss verwende -> Die Tasten Abfrage (z.B. Case) und dann den Code zum "Simulieren" alle X Sekunden ausführen.

So habe ich das zumindest verstanden, oder?

Schau dir mal die folgenden Funktionen an :
Code:
Keybd_event und SendInput
bzw.
Code:
SendMessage und PostMessage

Ich denke, das sollte dir weiterhelfen.


Gruß, Real-TTX

Lostriga 14. Jun 2008 15:06

Re: F1-F9 Tasten simulieren mit Hilfe von RadioButton´s
 
also ich komme nicht wirklich klar :cry:
ich habe mal einen Teil heraus geschitten

"simuliere Taste" Button ‾‾‾‾‾‾‾‾‾▼
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
Timer5.Enabled := True;

end;
für eine Schleife gedacht ‾‾‾‾‾‾‾‾‾▼
Delphi-Quellcode:
procedure TForm1.Timer5Timer(Sender: TObject);
begin
Timer3.Enabled := true;
end;
für die Erkennung der Taste ----> hier soll erkannt werden welcher RadioButton aktiv ist und somit eine F-Taste aktiviert, zurzeit ist immer nur eine Taste möglich ohne RadioButton Auswahl ‾‾‾‾‾‾‾‾‾▼
Delphi-Quellcode:
procedure TForm1.Timer3Timer(Sender: TObject);
var
Hwnd : THandle;
begin
Hwnd := FindWindow(nil, '...');
myPostMessageA(Hwnd, WM_KEYDOWN, VK_F1, MapVirtualKey(VK_F1, 0));
Timer1.Enabled := true;
Timer3.Enabled := false;

end;

DeddyH 14. Jun 2008 15:15

Re: F1-F9 Tasten simulieren mit Hilfe von RadioButton´s
 
Könntest Du nicht einfach mit case den ItemIndex der Radiogroup ermitteln und dementsprechend die Taste belegen?
Delphi-Quellcode:
var dwKey: DWord;
begin
  case Radiogroup.ItemIndex of
    0: dwKey := VK_F1;
    1: dwKey := VK_F2;
    ...
  end;
  ...
  myPostMessageA(Hwnd, WM_KEYDOWN, dwKey, MapVirtualKey(dwKey, 0));

Christian Seehase 14. Jun 2008 15:24

Re: F1-F9 Tasten simulieren mit Hilfe von RadioButton´s
 
Moin Lostriga,

erst einmal herzlich willkommen hier in der Delphi-PRAXiS.

Ohne RadioGroup würde ich es so lösen:
Ein RadioButton hat die Eigenschaft Tag, die man beliebig verwenden kann.
Der RadioButton für F1 bekommt darin dann eine 1, der für F2 eine 2 usw.
Dann bekommt das Formular noch ein private-Feld (z.B. FiActiveButton).
Alle neun RadioButton bekommen die gleiche OnClick Routine zugewiesen, in der dann der Wert in FiActiveButton geändert wird.

Delphi-Quellcode:
FiActiveButton := (Sender as TRadioButton).Tag;
Anschliessend kannst Du dann den Vorschlag von DeddyH nutzen, nur dass Du eben statt des ItemIndex FiActiveButton benutzt.

Initialisieren kannst Du FiActiveButton am Besten im OnCreate des Formulares.

Sharky 14. Jun 2008 16:29

Re: F1-F9 Tasten simulieren mit Hilfe von RadioButton´s
 
Zitat:

Zitat von DeddyH
Könntest Du nicht einfach mit case den ItemIndex der Radiogroup ermitteln und dementsprechend die Taste belegen?
...

Da die Tastencodes von F1 bis F9 ja aufeinander folgen muss man doch eigentlich nur den ItemIndex (oder den Tag des RadioButtons) zu dem "Startwert" addieren.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  dwKey: DWord;
begin
  if (RadioGroup1.ItemIndex <> -1) then
  begin
    dwKey := VK_F1 + RadioGroup1.itemIndex; // VK_F1 = 112
    myPostMessageA(Hwnd, WM_KEYDOWN, dwKey , MapVirtualKey(dwKey, 0));
  end;
end;

Lostriga 14. Jun 2008 19:45

Re: F1-F9 Tasten simulieren mit Hilfe von RadioButton´s
 
danke für´s Willkommen heißen Christian

das mit den einzelnen RadioButton´s habe ich nicht hingekriegt, was ich schade finde, weil mit der RadioGroup ein Problem auftritt was ich noch erkläre

ich habe mich also für die Methode von Sharky entschieden und ..... mein Gott es funktioniert ja richtig prächtig

blos folgendes Problem hab ich jetzt :lol:

da ich ja in einer RadioGroup die Schrift nicht einzeln definieren kann (also z.B. F1, F2, F3, F4, ... ), ich allerdings den Titel der Group fett geschrieben hätte und den Rest nicht fett, würd ich nun noch gern wissen wie es geht das ich ein Label über die RadioGroup setze, weil bei mir ist ein Label immer unter dieser und ich bekomme das Teil auch einfach nich davor :?

MSSSSM 14. Jun 2008 20:10

Re: F1-F9 Tasten simulieren mit Hilfe von RadioButton´s
 
wieso kannst du die schrift nicht einzeln definieren, jedes radiofeld/-group eben so ausfüllen...
Rechtsklick->Element->Nach vorne setzen

mfg

Lostriga 14. Jun 2008 20:14

Re: F1-F9 Tasten simulieren mit Hilfe von RadioButton´s
 
das hab ich ja schon gemacht aber die Group bleibt trotzdem vor demLabel bzw. das Label hinter der Group

Sharky 14. Jun 2008 20:20

Re: F1-F9 Tasten simulieren mit Hilfe von RadioButton´s
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Lostriga
danke für´s Willkommen heißen Christian

das mit den einzelnen RadioButton´s habe ich nicht hingekriegt,...

Hai Lostriga,

im Anhang ist ein Demo. Das sollte Licht ins dunkle bringen ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:13 Uhr.
Seite 1 von 2  1 2      

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