I gebruik zelf zelden een datum in mijn programma's, maar als de TDateEDit niet naar wens werkt, dan kun je ook een TMaskEdit overwegen. Hierbij kun je een "Mask" opgeven voor een datum (rechts op component klikken, en dan "Edit Mask Editor" kiezen - moet je helaas wel een beetje gaan zoeken hoe je de juiste Mask definiëren moet voor een datum.
Oh en voor ik het vergeet, je kunt bij een TDateEdit de "DirectInput" property op FALSE zetten zodat de gebruiker geen foute zaken kan invoeren en dus de kalender moet gebruiken om te kiezen. (DateOrder = doYMD, misschien DeafultToday = TRUE?)
Voor wat je "OnStart" vraag. Je zou zoiets kunnen doen als:
procedure TForm1.FormShow(Sender: TObject);
begin
if Edit1.Tag=0 then
begin
Edit1.SetFocus;
Edit1.Tag:=1;
end;
end;
Even een korte toelichting;
Zo een beetje component heeft een "Tag" property, waarin me een integer kan opslaan. Deze property heeft geen specifiek doel en kan willekeurige gebruikt worden.
Ten tweede, in het OnCreate event bestaat Edit1 nog niet, dus het daar de focus geven zal een foutmelding produceren.
Dus ... wat ik hier doe, is dat als de Form zichtbaar wordt (OnShow), en de Edit1.Tag nul is, dan geven we Edit1 de focus en zetten we de Tag op 1.
Waarom de Tag gebruiken? Het OnShow event vuurt ook af, als een Form tijdelijke naar de achtergrond is gegaan, en dan zouden we dus ongewenst de focus naar Edit1 sturen. Vandaar dus.