Autor Beitrag
bAstimc
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mi 22.08.07 19:12 
Hallo ich bin neu hier bei euch und wollt auch gleich was fragen..

ya also ich möchte n prog schreiben indem man wie in einem Spiel Tasten zuweisen kann ...sprich da is ein feld welches wie eine editkomponente aussieht und wenn man zB. Ziffernblocktaste 4 drückt, erscheint KB4 ,etc., und wird dort festgehalten...und wie man diese option speichern könnte wüsste ich auch noch zugern

danke wenn ihr mir weiterhelfen könntet ;)
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Mi 22.08.07 20:42 
ich glaub ich sprech für alle wenn ich sag:

Hallo :wave: und herzlich willkommen im Delphi-Forum erstmal!

Also statt einem Edit würd ich eher eine Combobox vielleicht nehmen. Dann kannst du auch bestimmte tasten ausschließen. mit einem Edit wäre das debsten komplizier find ich. Da musst du mit Case die Taste überprüfen usw.

zum zweiten Punkt würd ich dir ein INI-File vorschlagen. Ein tutorial gibts hier.

lg elundril
Timosch
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1314

Debian Squeeze, Win 7 Prof.
D7 Pers
BeitragVerfasst: Mi 22.08.07 21:02 
Gabs da nicht mal genau so eine Komponente, die eben bei Druck auf Strg "Strg" angezeigt hat etc.? Ich meine, ich hätte bei torry.net oder so mal was gesehen... Finde es aber nicht mehr.

_________________
If liberty means anything at all, it means the right to tell people what they do not want to hear. - George Orwell
bAstimc Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mi 22.08.07 21:25 
user profile iconTimosch hat folgendes geschrieben:
Gabs da nicht mal genau so eine Komponente, die eben bei Druck auf Strg "Strg" angezeigt hat etc.? Ich meine, ich hätte bei torry.net oder so mal was gesehen... Finde es aber nicht mehr.


ya sowas denke ich gibts auch und sowas bräuchte ich auch ...weil sowas mit einer ini datei zu umständlich wäre find ich
Danny87
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 688

Windows 10 Pro 64bit
Sprachen: HTML, PHP, JavaScript, Delphi || IDE: RAD Studio 10.1 Berlin Starter, WeBuilder
BeitragVerfasst: Do 23.08.07 00:38 
user profile iconbAstimc hat folgendes geschrieben:
user profile iconTimosch hat folgendes geschrieben:
Gabs da nicht mal genau so eine Komponente, die eben bei Druck auf Strg "Strg" angezeigt hat etc.? Ich meine, ich hätte bei torry.net oder so mal was gesehen... Finde es aber nicht mehr.


ya sowas denke ich gibts auch und sowas bräuchte ich auch ...weil sowas mit einer ini datei zu umständlich wäre find ich


Ähm...INIs sind nur dazu da um Daten zu speichern und haben soweit nichts mit Tastendrücken zu tun ;)

Grüße
Daniel
bAstimc Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Do 23.08.07 08:45 
ja klar ... aber ich hab zB. n Game was diese Einstellung irgendwoanders speichert als in einer ini...
Blackheart666
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: Do 23.08.07 09:09 
user profile iconbAstimc hat folgendes geschrieben:
ja klar ... aber ich hab zB. n Game was diese Einstellung irgendwoanders speichert als in einer ini...

Und...?

Vieleicht solltest Du mal etwas genauer Schildern was Du genau beabsichtigst, denn Ich habe auch nach dreimaligenen lesen nicht so Recht verstanden was Du überhaupt meinst oder möchtest.

_________________
Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
bAstimc Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Do 23.08.07 18:04 
user profile iconBlackheart666 hat folgendes geschrieben:
user profile iconbAstimc hat folgendes geschrieben:
ja klar ... aber ich hab zB. n Game was diese Einstellung irgendwoanders speichert als in einer ini...

Und...?

Vieleicht solltest Du mal etwas genauer Schildern was Du genau beabsichtigst, denn Ich habe auch nach dreimaligenen lesen nicht so Recht verstanden was Du überhaupt meinst oder möchtest.



Ok....*Datei anhäng*
Einloggen, um Attachments anzusehen!
Regan
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Do 23.08.07 19:51 
Ganz ehrlich: Ich habe auch noch nicht verstanden, was du willst. Dass das der Launcher zu THAW ist, bringt uns ja nicht gerade weiter. Oder möchtest du vielleicht die Einstellungen von THAW ändern?
bAstimc Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Do 23.08.07 22:49 
user profile iconRegan hat folgendes geschrieben:
Ganz ehrlich: Ich habe auch noch nicht verstanden, was du willst. Dass das der Launcher zu THAW ist, bringt uns ja nicht gerade weiter. Oder möchtest du vielleicht die Einstellungen von THAW ändern?


-.- wenn du bei Keyboard binding guckst ... siehst du edit-komponenten ... und bei denen kannste zu ner funktion ne taste zuweisen und sowas in der art würde ich gerne machen wollen.
Calculon
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 676

Win XP Professional
Delphi 7 PE, Delphi 3 PRO
BeitragVerfasst: Do 23.08.07 23:21 
:lol: ...und um uns das zu zeigen, lädst du den TH-Launcher rauf? Hau' den mal lieber wieder runter, was früher oder später ein Mod wahrscheinlich eh' tun wird.

B2T: Die JVCL kann ich dir nahe legen. Da gibt's Hotkey-Komponenten, die genau diesen Zweck erfüllen. Ich lade mal ein Beispiel hoch...

Gruß

Calculon
--
Einloggen, um Attachments anzusehen!
bAstimc Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Fr 24.08.07 00:13 
...naja ohne den hätten es einige garnicht geschnallt was ich meinte oO


btw danke ich guck mir das mal genauer an

edit:
ok die komponente is gut ...aber wie kann ich die darauf beschränken statt STRG + ... nur auf STRG umzudenken ...bei den eigenschaften hab ich schon einiges ausgestellt ...oder vllt hab ich was übersehen :S
bAstimc Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Di 28.08.07 22:37 
hat da keiner noch ne idee? :(
Calculon
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 676

Win XP Professional
Delphi 7 PE, Delphi 3 PRO
BeitragVerfasst: Di 28.08.07 23:47 
Zitat:
ok die komponente is gut ...aber wie kann ich die darauf beschränken statt STRG + ... nur auf STRG umzudenken ...bei den eigenschaften hab ich schon einiges ausgestellt ...oder vllt hab ich was übersehen :S

Ja, habe es auch mal versucht und scheint so nicht zu gehen. Dann musst du das halt selber programmieren (grob veranschaulicht):

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; 
  Shift: TShiftState); 
begin 
  if key = VK_DOWN then edit1.text := 'Cursor Down';  //oder noch besser case-Anweisungen
    .
    .
    .
end;

Natürlich nicht für jedes Edit nochmal alle Keys überprüfen, sondern eine function schreiben, der du dein key übergibst, und die dir den string zurückliefert, der in dein Edit geschrieben werden soll.

Siehe auch Delphi-Hilfe: Virtuelle Tastencodes

VK_LBUTTON Linke Maustaste
VK_RBUTTON Rechte Maustaste
VK_CANCEL Strg+Untbr
VK_MBUTTON Mittlere Maustaste
VK_BACK Taste Rück
VK_TAB Taste Tab
VK_CLEAR Taste Clear
......
....
..

PS: Habe hier gespickt ;-)

Gruß

Calculon
--
Blackheart666
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: Mi 29.08.07 07:14 
Vieleicht so etwas !?
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
uses...,Menus;

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  ListBox1.Items.Add(ShortCutToText(ShortCut(Key,Shift)));
end;

_________________
Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
bAstimc Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mi 29.08.07 13:44 
a cewl danke das probier ich ma aus :D
hier hab ich gleich ma ne ganze liste von den tasten xD delphi.about.com/od/...ascalide/l/blvkc.htm
Symbolic
constant name Value
(hexadecimal) Keyboard (or mouse) equivalent
VK_LBUTTON 01 Left mouse button
VK_RBUTTON 02 Right mouse button
VK_CANCEL 03 Control-break processing
VK_MBUTTON 04 Middle mouse button (three-button mouse)
VK_BACK 08 BACKSPACE key
VK_TAB 09 TAB key
VK_CLEAR 0C CLEAR key
VK_RETURN 0D ENTER key
VK_SHIFT 10 SHIFT key
VK_CONTROL 11 CTRL key
VK_MENU 12 ALT key
VK_PAUSE 13 PAUSE key
VK_CAPITAL 14 CAPS LOCK key
VK_ESCAPE 1B ESC key
VK_SPACE 20 SPACEBAR
VK_PRIOR 21 PAGE UP key
VK_NEXT 22 PAGE DOWN key
VK_END 23 END key
VK_HOME 24 HOME key
VK_LEFT 25 LEFT ARROW key
VK_UP 26 UP ARROW key
VK_RIGHT 27 RIGHT ARROW key
VK_DOWN 28 DOWN ARROW key
VK_SELECT 29 SELECT key
VK_PRINT 2A PRINT key
VK_EXECUTE 2B EXECUTE key
VK_SNAPSHOT 2C PRINT SCREEN key
VK_INSERT 2D INS key
VK_DELETE 2E DEL key
VK_HELP 2F HELP key
30 0 key
31 1 key
32 2 key
33 3 key
34 4 key
35 5 key
36 6 key
37 7 key
38 8 key
39 9 key
41 A key
42 B key
43 C key
44 D key
45 E key
46 F key
47 G key
48 H key
49 I key
4A J key
4B K key
4C L key
4D M key
4E N key
4F O key
50 P key
51 Q key
52 R key
53 S key
54 T key
55 U key
56 V key
57 W key
58 X key
59 Y key
5A Z key
VK_NUMPAD0 60 Numeric keypad 0 key
VK_NUMPAD1 61 Numeric keypad 1 key
VK_NUMPAD2 62 Numeric keypad 2 key
VK_NUMPAD3 63 Numeric keypad 3 key
VK_NUMPAD4 64 Numeric keypad 4 key
VK_NUMPAD5 65 Numeric keypad 5 key
VK_NUMPAD6 66 Numeric keypad 6 key
VK_NUMPAD7 67 Numeric keypad 7 key
VK_NUMPAD8 68 Numeric keypad 8 key
VK_NUMPAD9 69 Numeric keypad 9 key
VK_SEPARATOR 6C Separator key
VK_SUBTRACT 6D Subtract key
VK_DECIMAL 6E Decimal key
VK_DIVIDE 6F Divide key
VK_F1 70 F1 key
VK_F2 71 F2 key
VK_F3 72 F3 key
VK_F4 73 F4 key
VK_F5 74 F5 key
VK_F6 75 F6 key
VK_F7 76 F7 key
VK_F8 77 F8 key
VK_F9 78 F9 key
VK_F10 79 F10 key
VK_F11 7A F11 key
VK_F12 7B F12 key
VK_F13 7C F13 key
VK_F14 7D F14 key
VK_F15 7E F15 key
VK_F16 7F F16 key
VK_F17 80H F17 key
VK_F18 81H F18 key
VK_F19 82H F19 key
VK_F20 83H F20 key
VK_F21 84H F21 key
VK_F22 85H F22 key
VK_F23 86H F23 key
VK_F24 87H F24 key
VK_NUMLOCK 90 NUM LOCK key
VK_SCROLL 91 SCROLL LOCK key
VK_LSHIFT A0 Left SHIFT key
VK_RSHIFT A1 Right SHIFT key
VK_LCONTROL A2 Left CONTROL key
VK_RCONTROL A3 Right CONTROL key
VK_LMENU A4 Left MENU key
VK_RMENU A5 Right MENU key
VK_PLAY FA Play key
VK_ZOOM FB Zoom key
bAstimc Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mi 29.08.07 16:11 
ok es funktioniert :D

aber nun hab ich ein weiteres problem
...
und zwar sind das schließlich mehrere editkomponenten... und da wäre es ja sinnlos alles für jeden button zu kopieren ...
und da dachte ich mir halt ne neue procedur zu machen und statt dem edit1.text mit ner variable ersetzt welche dann in jedem editkomponentenprozess anders heißt zB.: edit2.text ; edit3.text ....jedoch tut sich da nichts wenn ich eine taste drücke ...
beim compilieren zeigt der mir auch noch bei der case Key of stelle an :
[Warning]Unit1.pas(138): Variable 'Key' might not have been initialized

Quelltextausschnitt:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
procedure Buttons;
var Key: Word; x:string;
begin
  case key of
VK_DOWN : x := 'Down';
VK_UP : x := 'Up';
VK_LEFT : x := 'Left';
VK_RIGHT : x := 'Right';
VK_TAB : x := 'Tab';
VK_CLEAR : x := 'Delete';
VK_LSHIFT : x := 'LShift';
VK_RSHIFT : x := 'RShift';
VK_RETURN : x := 'Enter';
VK_LCONTROL : x := 'LCtrl';
VK_RCONTROL : x := 'RCtrl';
VK_LMENU : x := 'LAlt';
VK_RMENU : x := 'RAlt';
VK_ESCAPE : x := 'Esc';
VK_SPACE : x := 'Spacebar';
VK_PRIOR : x := 'PgUp';
VK_NEXT : x := 'PgDown';
VK_End : x := 'End';
VK_HOME : x := 'Home';
VK_INSERT : x := 'Insert';
VK_DELETE : x := 'KP Del';
VK_NUMPAD0 : x := 'KP 0';
VK_NUMPAD1 : x := 'KP 1';
VK_NUMPAD2 : x := 'KP 2';
VK_NUMPAD3 : x := 'KP 3';
VK_NUMPAD4 : x := 'KP 4';
VK_NUMPAD5 : x := 'KP 5';
VK_NUMPAD6 : x := 'KP 6';
VK_NUMPAD7 : x := 'KP 7';
VK_NUMPAD8 : x := 'KP 8';
VK_NUMPAD9 : x := 'KP 9';
VK_MULTIPLY : x := 'KP *';
VK_ADD : x := 'KP +';
VK_SUBTRACT : x := 'KP -';
VK_DECIMAL : x := 'KP ,';
VK_DIVIDE : x := 'KP /';
VK_F1 : x := 'F1';
VK_F2 : x := 'F2';
VK_F3 : x := 'F3';
VK_F4 : x := 'F4';
VK_F5 : x := 'F5';
VK_F6 : x := 'F6';
VK_F7 : x := 'F7';
VK_F8 : x := 'F8';
VK_F9 : x := 'F9';
VK_F10 : x := 'F10';
VK_F11 : x := 'F11';
VK_F12 : x := 'F12';
65: x := 'A';
66: x := 'B';
67: x := 'C';
68: x := 'D';
69: x := 'E';
70: x := 'F';
71: x := 'G';
72: x := 'H';
73: x := 'I';
74: x := 'J';
75: x := 'K';
76: x := 'L';
77: x := 'M';
78: x := 'N';
79: x := 'O';
80: x := 'P';
81: x := 'Q';
82: x := 'R';
83: x := 'S';
84: x := 'T';
85: x := 'U';
86: x := 'V';
87: x := 'W';
88: x := 'X';
89: x := 'Y';
90: x := 'Z'
else  x := '(none)';
end;
end;

procedure TF_THP8Launcher.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
x:=edit1.text;
Buttons;
Edit2.SetFocus;
end;
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Mi 29.08.07 16:27 
klar. will du den Procedurekopf so machen musst:

ausblenden Delphi-Quelltext
1:
2:
function Button(Key: Word): String;
{...}


zur erklärung:
das procedure zur funtion gemacht weil function ein ergebnis zurückliefert.
Key in die klammer geschrieben also als parameter. d.h: wenn du die funtion aufrufst musst du den key in einer klammer zurückliefern.
der string nach dem doppelpunkt ist der rückgabe wert.

ein beispielaufruf:

ausblenden Delphi-Quelltext
1:
2:
3:
  {...}
  Edit1.text:=Button(45)
  {...}


das heist du schreibst in edit1.text den namen der taste mit dem tastencode 45.

lg elundril
Calculon
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 676

Win XP Professional
Delphi 7 PE, Delphi 3 PRO
BeitragVerfasst: Mi 29.08.07 17:32 
Elundril hat's schon erklärt; will aber nur den Code nochmal veranschaulichen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
function Virtual_Keys(const key: word): string;
begin
  case key of
    VK_LBUTTON:  result := 'Left mouse button';
    VK_RBUTTON:  result := 'Right mouse button';
    VK_CANCEL:   result := 'Control+Break';
    VK_MBUTTON:  result := 'Middle mouse button';
    VK_BACK:     result := 'Backspace key';
    VK_TAB:      result := 'Tab key';
    VK_CLEAR:    result := 'Clear key';
      .
      .
      .

Aufruf in den KeyDown-Ereignissen der einzelnen Edits:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  edit1.Text := Virtual_Keys(key);
end;

procedure TForm1.Edit2KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  edit2.Text := Virtual_Keys(key);
end;
    .
    .
    .


So geht's. Aber auch so wie's Blackheart beschrieben hat:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
// bei uses menus nicht vergessen

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  Edit1.Text := ShortCutToText(Key);
end;

procedure TForm1.Edit2KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  Edit2.Text := ShortCutToText(Key);
end;
   .
   .
   .


Gruß

Calculon
--
bAstimc Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mi 29.08.07 19:17 
oh cewl danke ich probier das mal aus ;D ich liebe euch x'DDD

achja gibts ne möglichkeit gamepad joysticktasten zu benutzen?