| Autor |
Beitrag |
Konna
Hält's aus hier
Beiträge: 13
Win ME, WIN 2000, WinXP, SuSE 8
D2005
|
Verfasst: Fr 22.04.05 20:18
Hi
Wie kann ich die ursprüngliche Funktion einer Taste löschen, z.B. dass wenn man auf Space drückt kein Leerzeichen kommt, sondern etwas anderes passiert (was dann zum Beispiel mit einem onkeydown-ereignis zu realisieren wäre)?
|
|
Tobias1
      
Beiträge: 454
Win 98, XP Prof
D3 Prof, D2005 Prof
|
Verfasst: Fr 22.04.05 20:20
Vielleicht ginge es mit Tastatureingabe abfangen und Tastendruck simulieren.
_________________ Auch das schlechteste Buch hat seine gute Seite: die letzte. (John Osborne)
|
|
Konna 
Hält's aus hier
Beiträge: 13
Win ME, WIN 2000, WinXP, SuSE 8
D2005
|
Verfasst: Fr 22.04.05 21:45
|
|
Blackheart
      
Beiträge: 164
ME
D3Prof.-D6Standard
|
Verfasst: Fr 22.04.05 22:05
zb So
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char); var Sonderzeichen:Boolean; begin if Sonderzeichen=true then begin if key = 'ä' then begin Memo1.Text:=Memo1.Text+'ä'; key:=#0; Memo1.SelStart:=Length(Memo1.Text); end ; end. |
|
|
Konna 
Hält's aus hier
Beiträge: 13
Win ME, WIN 2000, WinXP, SuSE 8
D2005
|
Verfasst: Sa 23.04.05 13:44
Danke!
Ich hatte erst ein keydown-ereignis, weil ich nicht wusste wie ich RETURN da abfangen kann. Jetzt hab ichs aber rausgefunden (if key=#13).
|
|
Konna 
Hält's aus hier
Beiträge: 13
Win ME, WIN 2000, WinXP, SuSE 8
D2005
|
Verfasst: Sa 23.04.05 14:20
och menno! jetzt funktioniert das mit den pfeiltasten nicht mehr!!! wie krieg ich das nu hin?
die nummern währen doch eig #37 für links und #39 für rechts, aber es passiert nur das, was immer passiert wenn man links oder rechts drückt 
|
|
Heiko
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: Sa 23.04.05 14:28
In welcher Prozedur fängst du die Pfeiltasten ab? In der OnKeyDown- oder OnKeyUp-Prozedur?
Es kann sein das die Pfeiltasten nicht mehr funktionieren, da du Key:=#0 davor schon aufgerufen hast.
|
|
Konna 
Hält's aus hier
Beiträge: 13
Win ME, WIN 2000, WinXP, SuSE 8
D2005
|
Verfasst: Sa 23.04.05 15:13
Okay nochmal alles der reihe nach:
erst hatte ich folgendes:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| procedure TForm1.Edit2KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin If key=VK_left then Edit1.SetFocus else if key=VK_right then Edit3.SetFocus else if key=vk_return then Button1Click(sender); end; |
aber return verursachte immer einen sound, weil das normalerweise im edit nicht geht. dann hab ich irgendwann geschnallt, dass ich da ein key:=#0 einbauen soll, aber das funzt net bei keydown oder keyup, weil der da meckert, dass #0 kein char ist, also hab ich das in ein keypress umgebaut:
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| procedure TForm1.Edit2KeyDown(Sender: TObject; var Key: char); begin If key=#37 then Edit1.SetFocus else if key=#39 then Edit3.SetFocus else if key=#13 then begin Buuton1Click(sender); key:=#0; end ; end; |
Jetzt funktioniert Return wunderbar, ABER jetzt macht er bei den Pfeiltasten nur noch das, was bei einer Pfeiltaste immer passiert.
Ich steig da irgendwie net mehr ganz durch...
Jetzt wüsst ich gerne mal, was ich machen muss, damit das alles funzt...
|
|
Heiko
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: Sa 23.04.05 19:54
Was sind #37 und #39 für Tasten bei dir? Bei mir im Tafelwerk steht, dass #37=% und #39=' ist. Um herauszubekommen welche Zahl welche Taste ist, musst du mal nach dem ASCII-Code ausschau halten. Denn findest du auch bei meinem ersten Download [url= www.delphi-forum.de/...start=20]hier[/hier].
Aber das er #0 nicht kennt, ist kein wunder, da #0 nur bei OnKeyPress-Ereignis gibt.
Dein Quelltext müsste dementsprechend so aussehen:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.Edit2KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin case key of VK_left: Edit1.SetFocus; VK_right: Edit3.SetFocus; vk_return: begin key:=0; Button1Click(sender); end end; |
|
|
Konna 
Hält's aus hier
Beiträge: 13
Win ME, WIN 2000, WinXP, SuSE 8
D2005
|
Verfasst: Sa 23.04.05 21:25
danke, aber das hatte ich schonmal! das problem ist allerdings, dass das, was die taste normalerweise tut immernoch macht!
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: Sa 23.04.05 23:26
Hallo,
in den zuvor aufgeführten Codes wird nur bei VK_RETURN die Variable Key auf 0 gesetzt.
Mit folgendem Code geht es so wie Du es möchtest.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.Edit2KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin case key of VK_LEFT: Edit1.SetFocus; VK_RIGHT: Edit3.SetFocus; VK_RETURN: Button1Click(sender); end; if Key in [VK_LEFT,VK_RIGHT,VK_RETURN] then Key := 0; end; |
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
hansa
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: So 24.04.05 03:25
Da steht so ziemlich alles drin, was man wissen muß :
www.delphipraxis.net....html&highlight=
_________________ Gruß
Hansa
|
|
Konna 
Hält's aus hier
Beiträge: 13
Win ME, WIN 2000, WinXP, SuSE 8
D2005
|
Verfasst: So 24.04.05 12:20
Ich glaub ich bin langsam völlig blöd, auf jeden fall habe ich rausgefunden, dass ich sowieso zwei proceduren brauch, weil return, escape und backsapce im keydown eh nicht abgefangen werden können (davon mal abgesehen hats bei den anderen bei mir auch nicht geklappt  ). Die Cursorpfeile wiederum haben keine Nummer im Keypress => keypress für return - keydown für die pfeile.
Trotzdem großen Dank an alle, die mir versucht ham zu helfen (ham se eig ja auch, ich weiß nu, dass es so net geht)
|
|
Heiko
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: So 24.04.05 12:41
Konna hat folgendes geschrieben: | Ich glaub ich bin langsam völlig blöd, auf jeden fall habe ich rausgefunden, dass ich sowieso zwei proceduren brauch, weil return, escape und backsapce im keydown eh nicht abgefangen werden können (davon mal abgesehen hats bei den anderen bei mir auch nicht geklappt ). |
??
Bist du zu dumm (sry, muss mal gesagt werden) oder kommst du nicht mit der Delphi-Hilfe nicht klar?
Backspace=VK_BACK
Escape=vk_Escape
Return=vk_Return
Das könntest du dir auch selber herleiten, da wie du siehst deine geforderten Tasten nur ein vk_ davor gresetzt bekommen!
|
|
hansa
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: So 24.04.05 17:51
Es nützt ja nichts, wenn Du nicht liest, was andere schreiben.  Genau das mit den "2 Prozeduren", den Funktionstasten usw. steht in dem Link drin.
_________________ Gruß
Hansa
|
|