Hallo,
Zitat:
Ausprobiert habe ich das Ereignis OnActivate, dies war aber nicht das richtige Ereignis.
Das müsste aber das richtige Ereignis sein.
Zeig doch mal Deinen Code.
Alles klar. Es stand noch etwas im Code, das wirklich nur ausgeführt werden kann, wenn das Formular
sichtbar ist.
Den Code dazu:
Delphi-Quellcode:
procedure TfrmLogeBuchungen.FormActivate(Sender: TObject);
var
pJahr: Word;
pMonat: Word;
pTag: Word;
pNode: PVirtualNode;
pDaten: TOBuJahrVSTDaten;
begin
// Anfangsbestand erfassen nicht vergessen
DecodeDate(Date, pJahr, pMonat, pTag);
BuJahr := pJahr;
LeseBuJahreEin; // Buchungsjahr in VirtualStringTree
if vstBuchungsJahr.RootNodeCount = 0 then begin
smdlg1.Caption := 'Ein Buchungsjahr erfassen ...';
smdlg1.Buttons.Clear;
smdlg1.Buttons.Add.Caption := 'Ja, erfassen';
smdlg1.Buttons.Add.Caption := 'Nein, nicht erfassen';
smdlg1.Buttons[0].ButtonResult := mrOk;
smdlg1.Buttons[1].ButtonResult := mrCancel;
if smdlg1.ExecuteDialog = mrOk then begin
NeuesBuchungsJahr;
end;
end;
// Den else-Zweig in eine neue Procedur packen und im OnShowereignis ausführen lassen, dann klappt es
{else begin
vstBuchungsJahr.SetFocus;
pNode := vstBuchungsJahr.GetFirst;
vstBuchungsJahr.FocusedNode := pNode;
vstBuchungsJahr.Selected[pNode] := True;
pNode := vstBuchungsJahr.FocusedNode;
pDaten := TOBuJahrVSTDaten(vstBuchungsJahr.GetNodeData(pNode)^);
BuJahr := pDaten.FBuJahr;
BuKontenPlanID := pDaten.FKontenPlanID;
if pDaten.FAbschluss = 'J' then
BuAbschluss := True;
// Weitere Tabellen öffnen ------------
BuchungenOeffnen;
end;}
end;