TPageControl Verhalten

Rund um die LCL und andere Komponenten
Antworten
MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

TPageControl Verhalten

Beitrag von MacWomble »

Ich habe eben etwas festgestellt, was mich verwirrt:

Im Code unten wird das Pagecontrol pcAuftrag auf die Seite 'SeitePosition' geschickt.
Ich habe erwartet, dass dies mit diesem Befehl unverzüglich passiert. Dennoch sehe ich im Tracemode, dass die aktive Seite bis zum Ende der Prozedur erhalten bleibt.

Code: Alles auswählen

      if ExecInsertSQL(dtmBasis.qrySQL, Suchtext, LastRec) then
      begin
        pcAuftrag.ActivePage := SeitePosition;
 
 
        Suchtext := 'Select * from AuftragsPositionen where idauftragsposition = ' + IntToStr(LastRec);
        OpenSQLSet(qryPosition, Suchtext);
        DoCalc;
 
        Suchtext := 'fk_auftrag=' + qryAuftragsListe.FieldByName('idauftrag').AsString;
        if FindRecords('AuftragsPositionen', 'idauftragsposition', Suchtext, C, False) then
          SeitePositionsListe.Caption := 'Auftragsposition (' + C + ')';
 
         if IDArtikel = 0 then
          dbeArtikelnummer.SetFocus
        else
        if IDPreis = 0 then
          dbeZeit.SetFocus
        else
          dbeMenge.SetFocus;
      end
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: TPageControl Verhalten

Beitrag von Michl »

Da die LCL mit Messages mit dem OS kommuniziert, kann das durchaus sein. Möglicherweise hilft nach dem pcAuftrag.ActivePage := SeitePosition; ein Application.Processmessages;.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: TPageControl Verhalten

Beitrag von MacWomble »

Danke, das ist es.
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: TPageControl Verhalten

Beitrag von Michl »

Nur als gut gemeinter Hinweis: Versuche die Programm-Logik möglichst vom Formular zu entkoppeln. Dann ist ein Application.Processmessages eigentlich nicht notwendig. Bei größeren Projekten wird es sonst schnell unübersichtlich.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

Antworten