Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TTimeEdit - TEdit für Zeiteingabe (https://www.delphipraxis.net/106330-ttimeedit-tedit-fuer-zeiteingabe.html)

chest3rs 9. Jan 2008 10:24


TTimeEdit - TEdit für Zeiteingabe
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Leute,

seit einiger Zeit war ich auf der Suche nach einer Komponente, die die Eingabe der Uhrzeit
ermöglicht. Da die Kompo MaskEdit zu fehleranfällig ist, konnte ich damit nichts anfangen und
Microsoft's Lösung (bei XP: Eigenschaften von Datum und Uhrzeit) mit drei Edits und mehreren
Statics mit Doppelpunkten gefiel mir überhaupt nicht.

Jedenfalls bin ich kürzlich über diese Komponente gestolpert. Hab sie etwas angepasst und auf
die Eingabe von Stunden und Minuten beschränkt.

Date : 7.1.2008
Changes : adapted for time input
Author : Mariusz Wojtkowski

Range : 00:00 to 23:59


Original : Andrey Tebenkov



Viel Spaß, Chester

mashutu 9. Jan 2008 10:38

Re: TTimeEdit - TEdit für Zeiteingabe
 
Das sieht doch recht gut aus.


Ohne Dir zu nahe treten zu wollen mal drei kleine (!) Kritikpunkte:
+ Sieht mir nach viel ueberfluessigem Code aus. Da laesst sich bestimmt noch was ausmisten.
+ STRG-V (Einfuegen) sollte in einem Edit-Feld schon funktionieren.
+ <ESC> sollte auf die zuletzt eingegebene Zeit zuruecksetzen (Geschmackssache)
Dazu vieleicht im OnEnter die letzte Zeit merken....

Nur mal so als Vorschlag

chest3rs 9. Jan 2008 10:57

Re: TTimeEdit - TEdit für Zeiteingabe
 
Zitat:

Zitat von mashutu
+ STRG-V (Einfuegen) sollte in einem Edit-Feld schon funktionieren.

Hallo mashutu,

Leider hab ich den Fehler bis jetzt nur umgangen. So wird das Menü deaktiviert:

Delphi-Quellcode:
procedure TForm1.EditContextPopup(Sender: TObject; MousePos: TPoint; var Handled: Boolean);
begin
 Handled := True;
end;
Ich werde das noch versuchen zu ändern. :gruebel:

Chester

shmia 9. Jan 2008 11:09

Re: TTimeEdit - TEdit für Zeiteingabe
 
Mir fallen 3 Dinge auf:
* im Sourcecode sind extrem viele Zahlen und Strings hartcodiert
also die Methoden KeyPress und ResultTC sind sehr umständlich!! Nichts für ungut; jeder fängt mal klein an.
* es fehlt ein Property vom Typ TTime oder TDateTime
* das Control TDateTimePicker kann doch auch Uhrzeiten annehmen; man muss nur das Property Kind auf dtkTime setzen

chest3rs 9. Jan 2008 11:32

Re: TTimeEdit - TEdit für Zeiteingabe
 
Zitat:

Zitat von shmia
* das Control TDateTimePicker kann doch auch Uhrzeiten annehmen;
man muss nur das Property Kind auf dtkTime setzen

Hab ich auch schon ausprobiert, nur bereiten mir die Spinbuttons Probleme.
Mir gefallen sie nicht, weil sie mit den XP-Designs nicht korrekt dargestellt werden.

Das ist aber eher Geschmacksache :zwinker:

Außerdem bin ich der Meinung, dass Sekunden bei der Eingabe überflüssig sind.

Bernhard Geyer 9. Jan 2008 12:13

Re: TTimeEdit - TEdit für Zeiteingabe
 
Zitat:

Zitat von chest3rs
Außerdem bin ich der Meinung, dass Sekunden bei der Eingabe überflüssig sind.

Format-Property auf "hh:mm" setzen und gut ist.

s-off 9. Jan 2008 12:44

Re: TTimeEdit - TEdit für Zeiteingabe
 
Zitat:

Zitat von chest3rs
Hab ich auch schon ausprobiert, nur bereiten mir die Spinbuttons Probleme.

Dann blende ihn aus:
Delphi-Quellcode:
Procedure HideSpinButton(oPicker: TDateTimePicker);
Var
   oHandle: HWND;
Begin
   If assigned(oPicker) Then Begin
      oHandle := oPicker.Handle;
      oHandle := FindWindowEx(oHandle, 0, 'msctls_updown32', Nil);
      Windows.ShowWindow(oHandle, SW_HIDE);
   End;
End;

Procedure TForm1.Button1Click(Sender: TObject);
Begin
   HideSpinButton(DateTimePicker1);
End;

chest3rs 9. Jan 2008 12:59

Re: TTimeEdit - TEdit für Zeiteingabe
 
Auch eine gute Möglichkeit, danke!

Jetzt gefällt mir der DateTimePicker schon wesentlich besser!
Mir scheint, meine Kompo ist jetzt überflüssig... :wall:

Grüße

mashutu 9. Jan 2008 13:02

Re: TTimeEdit - TEdit für Zeiteingabe
 
Zitat:

Zitat von chest3rs
Mir scheint, meine Kompo ist jetzt überflüssig... :wall:

Ueberhaupt nicht. Du hast sicherlich was gelernt bei der Sache.

chest3rs 10. Jan 2008 09:48

Re: TTimeEdit - TEdit für Zeiteingabe
 
Hi Leute,
und wie ich was gelernt habe...

Danke für eure Hilfe,
doch nach ausführlichem Test hat mich der DateTimePicker nicht überzeugt.

- Einfügen funktioniert nicht
- Zeichenfläche der SpinButtons verdeckt ein Teil des DateTimePickers (sollte so klein wie möglich sein)

Jetzt werde ich noch nach einem passenden DateEdit suchen.

Grüße,

Mariusz


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:04 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz