ungültige Eingabe TMaskeEdit
spacer
Autor Nachricht
mexx
ontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic starofftopic starofftopic starofftopic star
Beiträge: 1183



BeitragVerfasst: Mi 11.10.06 09:01 
Hallo,

ich verwende ein TMaskEdit mit einem kurzen Zeitformat. Nun kommt es doch tatsächlich vor, dass der Anwender nicht die gesamte Zeit reinschreibt. Also statt 10:00 nur 10:0_. Sobald man das Edit verlässt kommt eine Fehlermeldung, "ungültige Eingabe...". Das Dialogfenster verschwindet danach in den hintergrund. Obwohl es als StayOnTop definiert ist. Ich habe ein try-Block in dem Ereigniss OnExit definiert und keinen Erfolg gehabt. OnExit tritt NACH der Fehlermeldung "ungültige Eingabe..." auf.

Entweder ich finde eine Lösung, wie ich diese Fehlermeldung abfangen kann, oder wie das Dialogfenster nicht im Hintergrund verschwindet.

Danke für eure Hilfe, mexx

_________________
Das Unsympathische an den Computern ist, dass sie nur ja oder nein sagen können, aber nicht vielleicht.
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.


Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic starofftopic star
Beiträge: 6027
Erhaltene Danke: 40

XP-Pro, Windows 7
D2005 Prof, XE2, SharpDevelop 2.0, VC#Express
BeitragVerfasst: Mi 11.10.06 09:28 
Ich weiß schon, warum ich kein TMaskEdit verwende.
Alternative wäre TDateTimePicker.

_________________
Lesen gefährdet die Dummheit.
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Horschdware
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 724
Erhaltene Danke: 53

Win XP professional, Win 7 Professional x64, Ubuntu
Delphi 5, Delphi 2005 Personal, Delphi 2006, Delphi XE, C++ Builder 5, PHP, SAP R/3
BeitragVerfasst: Mi 11.10.06 09:32 
sorry, fehlpost.

-bitte löschen-

_________________
Delphi: XE - OS: Windows 7 Professional x64
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
mexx Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic starofftopic starofftopic starofftopic star
Beiträge: 1183



BeitragVerfasst: Mi 11.10.06 09:35 
Also ich kann den DateTimePicker ja das Format hh:mm geben, um ein Zeitformat eintragen zu können. Leider nimmt er es nicht an. Ich möchte auch gerne, dass das Feld kein DropDown oder ComboBox ist. Und was heißt hier bitte löschen?

_________________
Das Unsympathische an den Computern ist, dass sie nur ja oder nein sagen können, aber nicht vielleicht.
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
chrisw
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 436
Erhaltene Danke: 3

W2K
D7
BeitragVerfasst: Mi 11.10.06 09:44 
Also abfangen kannst Du sie wie folgt :


ausblenden Delphi-Quelltext markieren
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:
type TMyMaskEdit = class(TMaskedit)
     public
       procedure ValidateEdit;override;
end;

......
var myMaskEdit : TMyMaskEdit;


.......

procedure TMyMaskEdit.ValidateEdit;
var pos : Integer;
begin
   if (IsMasked) then
     if not Validate(Text, pos) then
       Showmessage('Falscheingabe !'); // Dies kannst Du auch weglassen, wenn Du keine 
                                       //Fehlermeldung willst 
                                       
  // inherited hier einfach weglassen, damit die Fehlermeldung nicht kommt ;
  //musst dann allerdings das EditFeld selber leeren
end;

//und der Aufruf :
MyMaskEdit := TMyMaskEdit.Create(self);
  MyMaskEdit.Parent := self;
  MyMaskEdit.EditMask := '!90:00;1;_'//hier deine Maske eintragen

_________________
Man sollte keine Dummheit zweimal begehen, die Auswahl ist schließlich groß genug.
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
mexx Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic starofftopic starofftopic starofftopic star
Beiträge: 1183



BeitragVerfasst: Mi 11.10.06 10:23 
Ja, mir wäre fast lieber wenn die VCL dieses Ereignis mitbringen würde. Ich brauche viele MaskEdit und möchte nicht jedes auf diese weise erstellen.

_________________
Das Unsympathische an den Computern ist, dass sie nur ja oder nein sagen können, aber nicht vielleicht.
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
chrisw
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 436
Erhaltene Danke: 3

W2K
D7
BeitragVerfasst: Mi 11.10.06 10:26 
Dann mach dir doch ne VCL-Komponente aus TMyMaskEdit.

_________________
Man sollte keine Dummheit zweimal begehen, die Auswahl ist schließlich groß genug.
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
chrisw
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 436
Erhaltene Danke: 3

W2K
D7
BeitragVerfasst: Mi 11.10.06 10:56 
Würde dann ungefähr so aussehen :


ausblenden Delphi-Quelltext markieren
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:
unit MyMaskEdit;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Mask;

type
  TMyMaskEdit = class(TMaskEdit)
  public
    procedure ValidateError;override;
  end;

procedure Register;

implementation


procedure TMyMaskEdit.ValidateError;
begin
  //hier eintragen, was passieren soll bei Falscheingabe
end;

procedure Register;
begin
  RegisterComponents('Additional', [TMyMaskEdit]);
end;

end.

_________________
Man sollte keine Dummheit zweimal begehen, die Auswahl ist schließlich groß genug.
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
home home