Das einzige was dein if erreicht hat, ist das das Label dann den Namen des Typs im Designer erhält und dieser anschliessend in dem Programm bestehen bleibt.
Der Konstruktor wird aber zur Laufzeit durchlaufen...und setzt auch die Caption des Labels. Aber diese wird danach wieder überschrieben. Dies ergab ein Showmessage(caption) im Konstructor.
Code:
constructor Ttimestamp.Create(AOwner:TComponent);
begin
inherited Create(AOwner);
if not (csDesigning in ComponentState) then
caption:=datetimetostr(sysutils.FileDateToDateTime(fileage(application.exename)));
showmessage(caption);
end;
Das showmessage liefert in der
IDE einen leeren String und in der Anwendung das Datum der Anwendung, angezeigt im Label wird allerdings immer 'timstamp1'.
Gut, scheint also ein Oncreate Pflicht zu werden, oder?