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: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99:
| procedure TNakataForm.DataFieldKeyPress(Sender: TObject; var Key: Char); var t : double; i : integer; s : string; begin if (Key in [#48..#57]) and (TDBEdit(Sender).SelLength = 0) then begin if ( (Pos(',', TDBEdit(Sender).Text) > 0) and (Pos(',', TDBEdit(Sender).Text) < Length(TDBEdit(Sender).Text)) ) or ( (Pos(',', TDBEdit(Sender).Text) = 0) and (Length(TDBEdit(Sender).Text) >= 2) ) then Key := #0; end else if (Key = Chr(22)) then begin Val(StringReplace(Clipboard.AsText, ',', '.', []), t, i);
if i <> 0 then Key := #0 else begin s := StringReplace(Clipboard.AsText, '.', ',', []);
if TDBEdit(Sender).SelLength <> Length(TDBEdit(Sender).Text) then begin
with TDBEdit(Sender) do begin s := copy(Text, 0, SelStart) + Clipboard.AsText + copy(Text, SelStart + SelLength + 1, Length(Text) - (SelStart + SelLength)); end; end;
Val(StringReplace(s, ',', '.', []), t, i); if (RoundEx(t, 1) > 99.9) or (RoundEx(t, 1) < 0.1) then begin TDBEdit(Sender).Text := s; MessageDlg( 'Der eingegebene Wert liegt ausserhalb der' + #13#10 + 'gültigen Abmessungen. [0.1 - 99.9 mm]', mtError, [mbOK], -1 );
TTable(TDBEdit(Sender).DataSource.DataSet).Refresh; end else begin TDBEdit(Sender).Text := FloatToStr(RoundEx(t, 1)); with TTable(TDBEdit(Sender).DataSource.DataSet) do begin if not (State in [dsEdit, dsInsert]) then Edit;
FieldByName(TDBEdit(Sender).DataField).AsFloat := t; Post; end; end; Key := #0; end; end; end; |