Autor Beitrag
Konna
Hält's aus hier
Beiträge: 13

Win ME, WIN 2000, WinXP, SuSE 8
D2005
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 454

Win 98, XP Prof
D3 Prof, D2005 Prof
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 13

Win ME, WIN 2000, WinXP, SuSE 8
D2005
BeitragVerfasst: Fr 22.04.05 21:45 
wie macht man das?
Blackheart
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 164

ME
D3Prof.-D6Standard
BeitragVerfasst: Fr 22.04.05 22:05 
zb So
ausblenden 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 Threadstarter
Hält's aus hier
Beiträge: 13

Win ME, WIN 2000, WinXP, SuSE 8
D2005
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 13

Win ME, WIN 2000, WinXP, SuSE 8
D2005
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 13

Win ME, WIN 2000, WinXP, SuSE 8
D2005
BeitragVerfasst: Sa 23.04.05 15:13 
Okay nochmal alles der reihe nach:
erst hatte ich folgendes:

ausblenden 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:

ausblenden 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:=#0end ;
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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: 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:

ausblenden 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 Threadstarter
Hält's aus hier
Beiträge: 13

Win ME, WIN 2000, WinXP, SuSE 8
D2005
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: 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.
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: So 24.04.05 03:25 
Da steht so ziemlich alles drin, was man wissen muß :

www.delphipraxis.net....html&highlight=

_________________
Gruß
Hansa
Konna Threadstarter
Hält's aus hier
Beiträge: 13

Win ME, WIN 2000, WinXP, SuSE 8
D2005
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: So 24.04.05 12:41 
user profile iconKonna 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: So 24.04.05 17:51 
Es nützt ja nichts, wenn Du nicht liest, was andere schreiben. 8) Genau das mit den "2 Prozeduren", den Funktionstasten usw. steht in dem Link drin.

_________________
Gruß
Hansa