Announcement

Collapse
No announcement yet.

Tdatefield und Maske

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Tdatefield und Maske

    Habe ein Tdatefield mit der Maske !99/99/0000;1;_ versehen und Literalzeichen speichern verwendet. Wenn ich nun den Datensatz in einem DBEditfield löschen will, kommt eine Fehlermeldung: ESC drücken, da die Eingabe nicht stimmt. Ich nehme an, dass die beiden Literalzeichen nach dem löschen trotzdem gepeichert werden und die Fehlermeldung verursachen. Ich sehe zur Zeit keine Lösungsmöglichkeit ohne die Maske wegzulassen. Hat jemand eine Idee?
    Danke

  • #2
    Hi,

    Du nimmst richtig an. Um die Fehlermeldung zu umgehen musst Du ein eigenes Exceptionhandling in deine Applikation einbauen s.u. .

    <pre>
    procedure TFormMain.AppExceptionHandler(Sender: TObject; E: Exception);
    begin
    begin
    if E.Message = SMaskEditErr then
    begin
    if FormMain.ActiveControl is TDBEdit then
    begin
    TDBEdit(FormMain.ActiveControl).Field.Clear;
    keybd_event(VK_TAB, MapVirtualKey(VK_TAB,0), 0, 0);
    keybd_event(VK_TAB, MapVirtualKey(VK_TAB,0), KEYEVENTF_KEYUP, 0);
    end;
    Exit;
    end;
    // Sonderfall : DBGrid oder fehlerhaftes, -nicht leeres- Datum im Editfeld
    if (Pos( Copy( SInvaliddate, 8, 32), E.Message) > 0) then
    begin
    if FormMain.ActiveControl is TDBGrid then
    TDBGrid(FormMain.ActiveControl).SelectedField.Clea r;
    Exit;
    end;
    // irgend ein anderer Fehler
    Application.ShowException(E);
    end
    end;

    </pre>

    Gruß
    Gesin

    Comment

    Working...
    X