AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Procedure ausführen nachdem das Fenster angezeigt wird
Thema durchsuchen
Ansicht
Themen-Optionen

Procedure ausführen nachdem das Fenster angezeigt wird

Ein Thema von NoName1 · begonnen am 5. Nov 2018 · letzter Beitrag vom 7. Nov 2018
Antwort Antwort
NoName1

Registriert seit: 8. Mär 2018
191 Beiträge
 
Delphi 11 Alexandria
 
#1

Procedure ausführen nachdem das Fenster angezeigt wird

  Alt 5. Nov 2018, 18:03
Guten Tag,
ich möchte eine procedure ausführen lassen, nachdem die Form angezeigt wurde.
Die procedure überprüft ein Wert auf vorhandensein. Ist der Wert nicht vorhanden, dann
soll der User einen Wert eingeben. Dazu wäre es gut, wenn das Formular schon im vollen Umfang angezeigt wurde.
Ausprobiert habe ich das Ereignis OnActivate, dies war aber nicht das richtige Ereignis.
Im OnShow-Ereignis funktionierte dies auch nicht.
Es müsste so etwas, wie nach dem Anzeigen der Form "OnShowAfter", geben.
Wie würdet Ihr dies lösen? Oder übersehe ich mal wieder ein Ereignis?
Vielen Dank für Eure Hilfe.
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#2

AW: Procedure ausführen nachdem das Fenster angezeigt wird

  Alt 5. Nov 2018, 18:10
Guck mal da. Mit Messages.
https://www.delphipraxis.net/195775-...angezeigt.html
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Procedure ausführen nachdem das Fenster angezeigt wird

  Alt 5. Nov 2018, 19:00
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.
Heiko
  Mit Zitat antworten Zitat
NoName1

Registriert seit: 8. Mär 2018
191 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Procedure ausführen nachdem das Fenster angezeigt wird

  Alt 6. Nov 2018, 15:17
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;
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Procedure ausführen nachdem das Fenster angezeigt wird

  Alt 6. Nov 2018, 19:09
Hallo,
und wo ist jetzt Dein Problem?
Wird der VST nicht komplett angezeigt?

Ich nehme mal an, dass smdlg1 Dein Dialog ist,
der angezeigt werden soll?
Heiko

Geändert von hoika ( 6. Nov 2018 um 19:12 Uhr)
  Mit Zitat antworten Zitat
NoName1

Registriert seit: 8. Mär 2018
191 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Procedure ausführen nachdem das Fenster angezeigt wird

  Alt 7. Nov 2018, 16:04
Hallo,
und wo ist jetzt Dein Problem?
Wird der VST nicht komplett angezeigt?

Ich nehme mal an, dass smdlg1 Dein Dialog ist,
der angezeigt werden soll?
Na ja, das Problem war, dass der Focus nicht auf das VST gestellt werden und somit auch nicht der erste
Datensatz ausgelesen werden konnte. An dieser Stelle kam es auch zum Programmabbruch.
Aber wie erwähnt, ich habe den Code der im Elsezweig steht in eine neue Procedure gepackt und greife auf die Procedure
im OnShow-Ereignis zu. Das wird nun auch fehlerfrei ausgeführt.
Danke für Deine Hilfe.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz