Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Editmasks für Datumsangaben

105 views
Skip to first unread message

Tino Bellmann

unread,
Jan 26, 2000, 3:00:00 AM1/26/00
to
Hallo,

ich habe irgendwie große Probleme, eine Datumsmaske im einem Maskedit
zu erstellen.

Wenn ich diese hier verwende:

!00/00/0000;1;_

zeigt das Feld nach Eingabeabschluß an

_1._1.1999

Das will ich aber nicht, sondern 01.01.1999.

Den Zusammenhang zwischen Windows-Datumseinstellungen und der
Darstellung von Datumsangaben habe ich wahrscheinlich bereits kapiert.


Dieses Problem hier aber nicht. In der Hilfe steht nirgendwo etwas
davon, daß es Pflichtfelder gibt. Es steht immer nur "ausschließlich
ein numerisches Zeichen angegeben werden. Eine Eingabe ist jedoch
nicht erforderlich." Ich möchte gern die Eingabepflicht für die
führende null. (In der Displaymask stimmt es !)

Vielen Dank !

Tino Bellmann

Ruediger Kremer

unread,
Jan 26, 2000, 3:00:00 AM1/26/00
to
moin ...

Tino Bellmann <ti...@tino-bellmann.de> schrieb in im Newsbeitrag:
32eb24c9...@192.168.0.1...


> Hallo,
>
> ich habe irgendwie große Probleme, eine Datumsmaske im einem Maskedit
> zu erstellen.
>
> Wenn ich diese hier verwende:
>
> !00/00/0000;1;_
>
> zeigt das Feld nach Eingabeabschluß an
>
> _1._1.1999

> .
> .


> nicht erforderlich." Ich möchte gern die Eingabepflicht für die
> führende null. (In der Displaymask stimmt es !)
>

Versuch mal :
!00/00/0000;1;0
als Maske.
[ der letze Parameter definiert ' Blanks ' ]
--
Gruss vom Acker
R. Kremer aka Ratlos


Heino Tiedemann

unread,
Jan 26, 2000, 3:00:00 AM1/26/00
to
ti...@tino-bellmann.de (Tino Bellmann) wrote:

>ich habe irgendwie große Probleme, eine Datumsmaske im einem Maskedit
>zu erstellen.

Kenne ich. MaskEdits nerven nur rum bei Datumseingaben.

>Wenn ich diese hier verwende:
>
>!00/00/0000;1;_
>
>zeigt das Feld nach Eingabeabschluß an
>
>_1._1.1999
>

>Das will ich aber nicht, sondern 01.01.1999.

Ich würde Dir die Benutzung eines TDateTimePicker empfehlen, wenn Du
Delphi3 oder höher hast. Kann auch schon in Delphi2 sein, entzieht
sich aber meiner Kenntnis.

Im äußersten Fall mach dir einen eigenes DialogForm, wo der User aus
einer TCalendar-Komponente das Datum wählen muß. Beim schließen
überträgst Du den Wert in ein TEdit, welches ReadOnly ist.
Du bist damit immer auf der sicheren Seite vor Dümsten anzunehmenden
Usern.

bis dann denn ... Heino

Marco Klemm

unread,
Jan 26, 2000, 3:00:00 AM1/26/00
to
Hi,

Heino Tiedemann schrieb:


>
> Ich würde Dir die Benutzung eines TDateTimePicker empfehlen, wenn Du
> Delphi3 oder höher hast. Kann auch schon in Delphi2 sein, entzieht
> sich aber meiner Kenntnis.

Die RxLib hat auch eines drin und hat meinen Tests standgehalten.

Cu, Marco

Peter Bozenhardt

unread,
Jan 26, 2000, 3:00:00 AM1/26/00
to
On Wed, 26 Jan 2000 09:42:22 GMT, ti...@tino-bellmann.de (Tino Bellmann) wrote:

>ich habe irgendwie große Probleme, eine Datumsmaske im einem Maskedit
>zu erstellen.

>Das will ich aber nicht, sondern 01.01.1999.

Ich habe die Eingabe von Datum mit Mask aufgegeben, ich habe nichts komfortables hinbekommen.
Eingabevarianten wie "1.2.99" , "1.2.1999", "010299", "01021999" können nicht alle in der selben
Mask verarbeitet werden. (oder meine Mask war Müll).

Ich nehme ein TEdit. Wenn der Benutzer genau 6 Ziffern (z.B. "311299") eingibt, klebe ich die Punkte
nach Tag und Monat rein.
Ansonsten mach ich dann ein StrToDate() und fertig.
Gruss Peter

Thomas Gehrke

unread,
Jan 26, 2000, 3:00:00 AM1/26/00
to

Peter Bozenhardt <pe...@gmx.de> schrieb in im Newsbeitrag:
7d6u8s4i37va0pluq...@4ax.com...

> Ich nehme ein TEdit. Wenn der Benutzer genau 6 Ziffern (z.B. "311299")
eingibt, klebe ich die Punkte
> nach Tag und Monat rein.

Der Stein der Wiesen ist das aber auch noch nicht. Was machst du mit
"112000"?

Thomas

Tino Bellmann

unread,
Jan 26, 2000, 3:00:00 AM1/26/00
to
On Wed, 26 Jan 2000 11:12:33 +0100, "Ruediger Kremer" <r...@ins-gmbh.de>
wrote:

>moin ...
>
>Tino Bellmann <ti...@tino-bellmann.de> schrieb in im Newsbeitrag:
>32eb24c9...@192.168.0.1...
>> Hallo,
>>

>> ich habe irgendwie große Probleme, eine Datumsmaske im einem Maskedit
>> zu erstellen.
>>

>> Wenn ich diese hier verwende:
>>
>> !00/00/0000;1;_
>>
>> zeigt das Feld nach Eingabeabschluß an
>>
>> _1._1.1999

>> .
>> .
>> nicht erforderlich." Ich möchte gern die Eingabepflicht für die
>> führende null. (In der Displaymask stimmt es !)
>>
>
>Versuch mal :
> !00/00/0000;1;0
>als Maske.
>[ der letze Parameter definiert ' Blanks ' ]
>--
>Gruss vom Acker
>R. Kremer aka Ratlos
>
>
>

Damit bekommt man Probleme, wenn man maskedit1.text:=datetostr(date)
macht...

Tino

Karl Jenz

unread,
Jan 26, 2000, 3:00:00 AM1/26/00
to
Tino Bellmann schrieb:

>
> ich habe irgendwie große Probleme, eine Datumsmaske im einem Maskedit
> zu erstellen.
>

Hallo Tino,
wenn du gar nicht weiterkommst, dann kannst du dir einmal meine
Komponente JZ-Edit auf meiner Homepage ansehen. Diese enthält
auch eine Datumseingabe mit Eingabekontrolle. Den Source
müsstest du nur noch an deine Bedürfnisse anpassen.
MaskEdit gibt nicht immer das her, was man erwartet.

--
Mfg Karl Jenz
http://members.aol.com/karljenz/welcome.html

Ruediger Kremer

unread,
Jan 27, 2000, 3:00:00 AM1/27/00
to
Hiho ...

Tino Bellmann <ti...@tino-bellmann.de> schrieb in

388f63f3...@192.168.0.1...
>.
>.


> >Versuch mal :
> > !00/00/0000;1;0
> >als Maske.
> >[ der letze Parameter definiert ' Blanks ' ]

> .
> .


> Damit bekommt man Probleme, wenn man maskedit1.text:=datetostr(date)
> macht...

stimmt, dateToStr(Date) liefert ' 26.01.0000 ' [ weil ShortDateFormat ]
aber :
FormatDateTime('dd.mm.yyyy',Date) liefert das richtige Ergebniss ;-)

Peter Bozenhardt

unread,
Jan 28, 2000, 3:00:00 AM1/28/00
to

nun ja alles geht nicht ...

if ( length( Self.Text ) = 6 ) and (Pos('.', Self.Text) = 0 ) then // TTMMJJ ohne Punkte
begin
s0 := Self.Text;
Self.Text := copy( s0, 1, 2 ) + '.' + copy( s0, 3, 2 ) + '.' +copy( s0, 5, 2 );
end
else if ( length( Self.Text ) = 5 ) and (Pos('.', Self.Text) = 0 ) then // TMMJJ ohne Punkte
(wurde von mir so gefordert, sorry für den Müll)
begin
s0 := Self.Text;
Self.Text := copy( s0, 1, 1 ) + '.' + copy( s0, 2, 2 ) + '.' +copy( s0, 4, 2 );
end;
if not (( FAllowEmpty ) and ( Self.Text = '' )) then
begin
// =========== hier kommts ! ===========
try
Self.Text := DateToStr(StrToDate( Self.Text ));
except
MessageBeep(0);
MessageDlg( 'Ungültige Eingabe, Datum erforderlich.'#13+'Beispiel: 31.12.1999',
mtInformation, [mbOk], 0 );
Self.SetFocus;
Result := False;
Exit;
end;
end;
end;

Willst Du das TEdit komplett haben ?
Gruss Peter


0 new messages