Autor Beitrag
Biarchiv
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 688



BeitragVerfasst: So 11.06.06 10:05 
Hallo,

ist folgendes überhaupt Möglich?

Wenn ich unter EditMask eine "9" bei einer Stelle vorgebe dann muss bei der Stelle nichts eingeben
werden. Es kann aber nur eine Zahl einegeben werden. Bei "0" muss eine Zahl stehen.

Gibt es eine Möglichkeit das nur ein "0" oder "1" oder "2" stehen darf?
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: So 11.06.06 10:08 
Ist stnadardmäßig auch nicht vorgesehen, kann aber selbst im .onChange oder .onKeyPress des Edits implementiert werden.

_________________
Markus Kinzler.
SmileySN
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 297

WinXP, Win7
Delphi 2010 Professional
BeitragVerfasst: So 11.06.06 10:33 
Hier ein paar Beispiele, wie man mit dem Keypress Ereignis einer Editkomponente alles abfangen kann.

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:
//----------------------------------------------------------------------------//
//-----Return-Taste abfangen und wenn gedrückt zum nächsten Feld springen-----//
//----------------------------------------------------------------------------//

//-----------------  Taste BelegNr  ------------------------------------------//
// Tasten Numeric,Alphanumeric,Klammern,Minustaste und Backspace und Tab erlauben
procedure TFBelege.EdBelegNrKeyPress(Sender: TObject; var Key: Char);
begin
//  key:= BeepOff(self,key);
  if key = chr(vk_Return) then
    begin
      Key := #0;
      Perform(WM_NextDlgCtl, 0, 0);
    end;
  if not (key in ['0'..'9', 'A'..'Z', 'a'..'z', '-', '(', ')', #8, #9]) then key := #0;
end;

//-----------------  Taste Bemerkung  ----------------------------------------//
// Einfach nur mit Return weiter springen zum nächsten Feld
procedure TFBelege.EdBemerkungKeyPress(Sender: TObject; var Key: Char);
begin
  if key = chr(vk_Return) then
    begin
      Key := #0;
      Perform(WM_NextDlgCtl, 0, 0);
    end;
end;

//-----------------  Taste Betrag  -------------------------------------------//
// Hier kann man aufgrund der Plus und Minus Taste jeweils ein Programm aufrufen
// oder eine Zuweisung vornehmen
procedure TFBelege.EdBetragKeyPress(Sender: TObject; var Key: Char);
begin
  if key = chr(vk_Return) then
    begin
      Key := #0;
      Perform(WM_NextDlgCtl, 0, 0);
    end;
  if not (key in ['0'..'9', #8, #9, #44, #43, #45]) then key := #0;
   //#8 = Backspace, #9 = Tab, #44 = Komma, #43 = PlusTaste, #45 = MinusTaste

  if (key in [#43]) then // Plus-Taste
    begin
      key := #0;
      FBelege.LbSH.Caption := 'H';
      Perform(WM_NextDlgCtl, 0, 0);
    end;

  if (key in [#45]) then // Minus-Taste
    begin
      key := #0;
      FBelege.LbSH.Caption := 'S';
      Perform(WM_NextDlgCtl, 0, 0);
    end;
end;