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

Win 98
D7
BeitragVerfasst: Do 21.10.04 18:51 
Hi!

Wie kann man abstellen, dass wenn man ein Edit feld hat und man dem dingen nen onKeyDown ereignis zuweist, es ein beep gibt?

grz
saite
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Do 21.10.04 19:29 
zeich mal source
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Do 21.10.04 19:36 
Zitat Delphi Helper:

Wenn man im Editfeld auf Enter drückt ertönt - wenn diese Funktion in Windows eingeschaltet ist - ein Beep-Ton. Dieser kann unterdrückt werden.

Schreibe ins OnKeyPress-Ereignis des Editfelds:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if Key=#13 then
    Key:=#0;
end;

#13 ist das ASCII Zeichen für die Entertaste.


aber dann wird glaube ich auch die Entertaste deaktiviert und bei den anderen
beept es dann trotzdem :(
Luzzifus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 200

Win2K
D6 Prof
BeitragVerfasst: Do 21.10.04 19:40 
F34r0fTh3D4rk hat folgendes geschrieben:
Schreibe ins OnKeyPress-Ereignis des Editfelds:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if Key=#13 then
    Key:=#0;
end;[/delphi]
#13 ist das ASCII Zeichen für die Entertaste.


aber dann wird glaube ich auch die Entertaste deaktiviert und bei den anderen
beept es dann trotzdem :(

nicht unbedingt.

Wenn man das so schreibt:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if Key=#13 then
  begin
    // hier Enter-behandlung reinschreiben, 
    // z.b. Edit2.SetFocus;
    ...
    Key:=#0;
end;


Dann sollte man zumindest noch sagen können, was passieren soll wenn Enter gedrückt wird. Wäre auf jedenfall nen Versuch wert. :)
saite Threadstarter
Hält's aus hier
Beiträge: 15

Win 98
D7
BeitragVerfasst: Fr 22.10.04 01:16 
cool! danke.

ich werds versuchen, und dann berichten, ob's alles funzt;)

grz
saite

edit:

muss man eigentlich das '#' vor die (z.b.) 13 schreiben? also if Key=#13?
weil bei mir funzt es auch so: if Key=13 then...

was ist der unterschied?
saite Threadstarter
Hält's aus hier
Beiträge: 15

Win 98
D7
BeitragVerfasst: Fr 22.10.04 01:25 
hmm... also wenn ich es so mache:
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:
procedure TForm1.txt_key(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if btn_loesen.Enabled=true
    then
      begin
        if Key=13
          then
            begin
              if btn_weiter.Enabled
                then btn_weiter.OnClick(self)
                else
                  begin
                    if Length(en.Text)>0
                      then btn_antworten.OnClick(self)
                      else messagedlg('Sie haben keine Übersetzung eingegeben', mtInformation, [mbOk],0)
                  end;
              Key:=0
            end
      end
end;

...

en := TEdit.Create(Form_abfrage);
  with en do
    begin
      ...
      onKeyDown:=txt_key;
    end;
...

...dann machts immer noch beep...

wenn ichs so mache:
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:
procedure TForm1.txt_key(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if btn_loesen.Enabled=true
    then
      begin
        if Key=#13
          then
            begin
              if btn_weiter.Enabled
                then btn_weiter.OnClick(self)
                else
                  begin
                    if Length(en.Text)>0
                      then btn_antworten.OnClick(self)
                      else messagedlg('Sie haben keine Übersetzung eingegeben', mtInformation, [mbOk],0)
                  end;
              Key:=#0
            end
      end
end;

...

en := TEdit.Create(Form_abfrage);
  with en do
    begin
      ...
      onKeyDown:=txt_key;
    end;
...

...dann bekomme ich die fehlermeldungen:
[Fehler] Unit1.pas(481): Inkompatible Typen
[Fehler] Unit1.pas(492): Inkompatible Typen: 'Word' und 'Char'
[Fataler Fehler] Project1.dpr(5): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden

wobei sich die fehler auf die zeilen mit dem Key=#13 und Key:=#0 beziehen!

und nu???
Nagelbrett
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75



BeitragVerfasst: Fr 22.10.04 08:03 
liegt daran, dass du im onKeyDown event bist. Die anderen sprachen jedoch von onKeyPress, also probier es mal dort :)
saite Threadstarter
Hält's aus hier
Beiträge: 15

Win 98
D7
BeitragVerfasst: Sa 23.10.04 12:09 
jo, so funktioniert es.

Danke an alle :wink:

grz
saite