Hallo m-werk,
schnell noch ein paar Infos:
Ich habe, wie schon einmal in einem anderen Thread beschrieben, im privat Bereich des Hauptformulars die Variable FirstTime deklariert:
Delphi-Quellcode:
TForm1 = class(TForm)
...
private
{ Private-Deklarationen }
FirstTime : Boolean;
...
public
{ Public-Deklarationen }
end;
Diese wird in FormCreate initialisiert:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
FirstTime := True;
end;
und in FormActivate benutzt:
Delphi-Quellcode:
procedure TForm1.FormActivate(Sender: TObject);
begin
if FirstTime then
begin
FirstTime := False;
if Not qrySelData.Active then
begin
qrySelData.ParamByName('PNr').AsString := frmLogin.PNr;
qrySelData.Open;
end;
Caption := 'Arbeitszeiterfassung für '
+frmLogin.cbUser.Text;
UpdateCalMark;
end
end;
Hier habe ich eine Procedure UpdateCalMark aufgerufen, die du ebenfalls im Privat Bereich deklarieren solltest. Sie dient dazu, die Tage im Kalender zu markieren, für die bereits ein Eintrag existiert.
Delphi-Quellcode:
procedure TForm1.UpdateCalMark;
var
jahr, monat, tag : Word;
merken : TBookmark;
begin
qrySelData.DisableControls;
merken := qrySelData.GetBookmark;
qrySelData.First;
cal.Markdays.Clear;
while Not qrySelData.Eof do
begin
DecodeDate(qrySelDataDatum.Value, jahr, monat, tag);
if (jahr = cal.Year) and
(monat = cal.Month) then
if tag < 10 then
cal.Markdays.Add(FormatDateTime('d.mm.',qrySelDataDatum.Value))
else
cal.Markdays.Add(FormatDateTime('dd.mm.',qrySelDataDatum.Value));
qrySelData.Next;
end;
cal.Invalidate;
qrySelData.GotoBookmark(merken);
qrySelData.EnableControls;
end;
So, da hast du wieder was zu tun. Aber nicht nur abtippen
, sonst hilft dir das für zukünftige Probleme gar nicht. Versuche genau zu verstehen, was ich da vorschlage und warum. Wenn es nicht klar ist, solltest du lieber fragen.