Autor Téma: Aktualizácia "celého" formulára po zmene záznamu v tabuľke. Na jednom mieste  (Přečteno 64 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 5450
  • Karma: 41
    • Verze Delphi: W10 + Delphi 10.4 professional

Zistil som chybu v logike programu.
Používam hlavné formuláre s PageControl, na ktorom sú subForm. Každý subFrom pracuje s nejako DB tabuľkou. Hlavný formulár má funkciu ApplyChanges - aplikuje zmeny, ktoré vyvoláva aktualizácia tabuľky. Teraz to používam pri zmene Page - nie po každej zmene. To mi funguje.
.
Problém: aby som vedel, že je potrebné volať ApplyChanges, tak mám GlobalVar.Changed.
  •   Vytvorím dva a viac nových záznamov za sebou. Jeden zo záznamov zmažem
  •   Vytvorím jeden nový záznam a zmažem ho
V oboch prípadoch mám GlobalVar.Changed = True, čo je v druhom prípade chyba. Už dávno ste mi tvrdili, že mám okamžite každú zmenu premietnuť do celého formulára. Už viem prečo.
.
Umňa je riešením zakaždým volať ApplyChanges. Neviem ako to dosiahnuť. Z pohľadu problému mám tieto jednotky:
  • GlobalVar - tu mám definované globálne premenné. Je to jedináčik. Najjednoduchšie by bolo dostať tu ApplyChanges. No neviem ako
  • CustomDB - Použitie by bolo nasledovné:
         FTAble.Post;
         oGlobVar.ApplyChanges
.
Ako sa to dá zrealizovať? Alebo nejaký iný návrh.
W10 64b, Delphi 10.4, FireBird 3.05
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 5450
  • Karma: 41
    • Verze Delphi: W10 + Delphi 10.4 professional
Už som to našiel.
Kód: Delphi [Vybrat]
  1.   TApplyChanges = procedure of object;
  2. .
  3.   TGlobalVar = class(TObject)
  4.     property ApplyChanges: TApplyChanges read FApplyChanges write FApplyChanges;
  5. .
  6.   oGlobVar.ApplyChanges := ApplyChanges;
  7. .
  8. oGlobVar.ApplyChange;
  9.  
Pri mojich pokusoch mi chýbal ten "of object"

W10 64b, Delphi 10.4, FireBird 3.05
Expert na kladenie nejasne formulovaných otázok.