Autor Beitrag
mexx
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1183



BeitragVerfasst: Mi 11.10.06 08: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.
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mi 11.10.06 08:28 
Ich weiß schon, warum ich kein TMaskEdit verwende.
Alternative wäre TDateTimePicker.
Horschdware
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 744
Erhaltene Danke: 54

Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
BeitragVerfasst: Mi 11.10.06 08:32 
sorry, fehlpost.

-bitte löschen-

_________________
Delphi: XE - OS: Windows 7 Professional x64
mexx Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1183



BeitragVerfasst: Mi 11.10.06 08: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.
chrisw
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 439
Erhaltene Danke: 3

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


ausblenden 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:
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.
mexx Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1183



BeitragVerfasst: Mi 11.10.06 09: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.
chrisw
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 439
Erhaltene Danke: 3

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

_________________
Man sollte keine Dummheit zweimal begehen, die Auswahl ist schließlich groß genug.
chrisw
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 439
Erhaltene Danke: 3

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


ausblenden 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:
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.