Autor Téma: Zmena veľkosti formulára - veľké oneskorenie  (Přečteno 933 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4426
  • Karma: 39
    • Verze Delphi: XE7 professional
Re:Zmena veľkosti formulára - veľké oneskorenie
« Odpověď #30 kdy: 04-07-2019, 18:34:37 »
Teraz som sa pozrel na ComboBox-y a u nich sa to zrovna v dobe návrhu nastaviť nedá ;D ;D
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4426
  • Karma: 39
    • Verze Delphi: XE7 professional
Re:Zmena veľkosti formulára - veľké oneskorenie
« Odpověď #31 kdy: 04-07-2019, 19:00:58 »
Skúsil som teda TAdvDBLookupComboBox bez DisableAlign. Pri zmene veľkosti mi neblikal.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4426
  • Karma: 39
    • Verze Delphi: XE7 professional
Re:Zmena veľkosti formulára - veľké oneskorenie
« Odpověď #32 kdy: 04-07-2019, 20:19:14 »
Ja osobne všade kde mám PageControl, tak na Page vždy vkladám subForm. Vyskúšam Tvoj nápad. Dám vedieť.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4426
  • Karma: 39
    • Verze Delphi: XE7 professional
Re:Zmena veľkosti formulára - veľké oneskorenie
« Odpověď #33 kdy: 04-07-2019, 20:27:42 »
Dal som podformuláre Hide. Je to bez zmeny správania sa.
Edit: Dokonca to je horšie ako súčasné riešenie :o ???
« Poslední změna: 04-07-2019, 20:30:31 od Stanislav Hruška »
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4426
  • Karma: 39
    • Verze Delphi: XE7 professional
Re:Zmena veľkosti formulára - veľké oneskorenie
« Odpověď #34 kdy: 04-07-2019, 21:07:19 »
Aby som nemusel rozmýšľať, tak som si spočítal všetko čo mám na PageControl. Trochu som to podcenil. Je toho 934. Je v tom všetko čo sa aj automaticky vygenerovalo. TAction, TIntegerField - polia tabuliek...
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4426
  • Karma: 39
    • Verze Delphi: XE7 professional
Re:Zmena veľkosti formulára - veľké oneskorenie
« Odpověď #35 kdy: 04-07-2019, 21:10:54 »
Mám tam
Kód: Delphi [Vybrat]
  1. procedure TfrmFormMain.WMEnterSizeMove(var MsgSizeMove: TWMMove);
  2. var
  3.   I: Integer;
  4. begin
  5.   for I := 0 to offpgrPobes.AdvPageCount -1 do
  6.   begin
  7.     if (I <> offpgrPobes.ActivePageIndex) then
  8.     begin
  9.       offpgrPobes.AdvPages[I].Visible := False;
  10.       SetAlign(offpgrPobes.AdvPages[I], True);
  11.     end;
  12.   end;
  13. end;
Pričom SetAlign je rekurzívna procedúra, ktorá všetkým TWinControl nastaví DisableAlign.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4426
  • Karma: 39
    • Verze Delphi: XE7 professional
Re:Zmena veľkosti formulára - veľké oneskorenie
« Odpověď #36 kdy: 04-07-2019, 21:36:34 »
Citace
ControlCount?
Nie, skopírovanie z formulára do excelu a spočítanie.
Citace
Nevim na koho je ta reakce.
Na Teba. Je tam aj Tab.Visible := False. Ale to nestačí. Musí tam byť aj tá rekurzívna procedúra.
Urobil som to presne tak ako si písal a aj teraz píšeš. Overil som si to. Okrem jedného tabu boli všetky prázdne.
.
Predpokladal som presne to čo si napísal v teórii. Preto som tam vypleštil oči a čudujem sa.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline miroB

  • Guru
  • *****
  • Příspěvků: 519
  • Karma: 17
    • Verze Delphi: D1,2,3,4,7,2005,2009, XE8,S,B,T10.2.2 Pro
Re:Zmena veľkosti formulára - veľké oneskorenie
« Odpověď #37 kdy: 04-07-2019, 21:43:37 »
Zdá sa, že Stano zdôrazňuje, že neaktívny tab má visible:=false;
Nie som si istý, či presne v tomto prípade, nemá zbytočné opakovanie príkazu "hide" negatívny vplyv. Zo skúseností viem, že sa vždy treba vyhnúť príkazom, čo sú už nadbytočné.
V tomto prípade sa cyklus zneviditeľnenia opakuje veľmi veľakrát (váčšinou zbytočne).
Preto som v príspevku dal kontrolu na
Kód: Delphi [Vybrat]
  1. if ( i <> pGC.ActivePageIndex ) and not pGC.AdvPages[ i ].AlignDisabled then
  2.       pGC.AdvPages[ i ].DisableAlign;
Je možné vložiť tam aj visible:=false;
"If ..AlignDisabled" spôsobí, že sa nevykonajú žiadne príkazy zbytočne.
Visible:=false, som u seba spravil v rámci TAdvOfficePager.onChanging, pretože to nastáva len keď treba zmenu.
Nie zbytočne pre každú udalosť "WMEnterSizeMove".
Tá sa kľudne vyvolá aj 100-vky, či 1000-ky krát medzi jednotlivými  "onChanging".
« Poslední změna: 04-07-2019, 21:50:18 od miroB »

Offline miroB

  • Guru
  • *****
  • Příspěvků: 519
  • Karma: 17
    • Verze Delphi: D1,2,3,4,7,2005,2009, XE8,S,B,T10.2.2 Pro
Re:Zmena veľkosti formulára - veľké oneskorenie
« Odpověď #38 kdy: 04-07-2019, 21:49:55 »
..
To je ovsem na ukor rychlosti prepinani (protoze se pred prepnutim tabu zobrazi form jenz se musi velikostne prepocist).
Tak ti neviem. Môže byť, že TAdvOfficePager tie svoje taby má ako subForms.
Pretože ich dokáže pripínať a odopínať. Ako samostatné okná.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4426
  • Karma: 39
    • Verze Delphi: XE7 professional
Re:Zmena veľkosti formulára - veľké oneskorenie
« Odpověď #39 kdy: 04-07-2019, 22:20:46 »
Rozšírenie podmienky sa nijako neprejavilo. Ani obsah subFormu nemá vplyv na odozvu. 49 prvkov oproti 211 prvkom.
Znamená to jediné. Moja mašina to stačí všetko spracovať podstatne rýchlejšie, než to spracuje AdvPageControl. A je jedno či to je v debug režime alebo release.
.
To Delfin: urobil som to presne tak ako si písal. WMEnterSizeMove s WMExitSizeMove som zablokoval pomocou Exit na prvom riadku.
Ostávajú dve možnosti:
  • buď sa s tým zmieriť. To je môj prípad. Alebo
  • napísať na podporu. S ohľadom na skutočnosť, že k dlhšej odozve dochádza aj na štandardnom PageControl to považujem za zbytočné
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4426
  • Karma: 39
    • Verze Delphi: XE7 professional
Re:Zmena veľkosti formulára - veľké oneskorenie
« Odpověď #40 kdy: 04-07-2019, 22:30:09 »
Tak som pre istotu urobil ešte raz test so štandardným PageControl. Dal som tam len jeden tab a obsah najbohatšieho formulára. Odozva je prakticky okamžitá. A teraz neviem čo s tým :-\  Predtým som mal obsadené tri taby.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline miroB

  • Guru
  • *****
  • Příspěvků: 519
  • Karma: 17
    • Verze Delphi: D1,2,3,4,7,2005,2009, XE8,S,B,T10.2.2 Pro
Re:Zmena veľkosti formulára - veľké oneskorenie
« Odpověď #41 kdy: 04-07-2019, 22:43:54 »
Nesúhlasím s niektorými závermi.
U mňa je to takto:
  • V základe mám len 1 tab. Ten sa prekresľuje bez problémov. Mám na ňom zhruba 10 "controls". Z toho tri sú TopAligned (teoreticky môže byť problém)
  • Potom dotiahnem databázu. Tá má cca 16 tabuliek. Spolu dostanem 17 tabs
  • Vtedy nastane zvrat v prekresľovaní.
  • Najhoršie je na tom práve ten prvý tab. Ostatné majú len cca 5 "Controls" z toho 2x TAdvMemo a 1x TSMDBGRID (alTop align a alClient align)
  • Vôbec nezáleží na veľkosti dát v tabuľkách. Grid nie je záťažou. Tie datové taby sa vykresľujú podstatne rýchlejšie než prvý tab
  • Počet Controls na tabe podstatne zhoršuje prekresľovanie. (Môj prvý tab). Ale paradoxne najmä vtedy, ak je tabov viac. Ak je ale jediný, všetko ide ako má.
  • Taby s cca 5 Controls sami o sebe nezhoršujú prekresľovanie. Aj keď ich je 16
  • Aktuálne nemám zapnuté Hide na taby. Mám pre nich ale zapnuté DisableAlign

Offline miroB

  • Guru
  • *****
  • Příspěvků: 519
  • Karma: 17
    • Verze Delphi: D1,2,3,4,7,2005,2009, XE8,S,B,T10.2.2 Pro
Re:Zmena veľkosti formulára - veľké oneskorenie
« Odpověď #42 kdy: 04-07-2019, 23:05:37 »
Doplnok:
Prvý tab obsahuje "TAdvRichEditor". Pri prvom spustení programu je prázdny.
Pritiahnutím tabuliek databázy sa TAdvRichEditor zaplní asi 100 riadkami textu s možnosťou rôznych Color, Size, Bold, Italic.
Čerstvý experiment: Zmazaný text (Color, Size, Bold, Italic) 
Je možné, že problém bol práve v naplnenom RichEditore. Po zmazaní textu, sa výrazne zlepšilo prekresľovanie prvej strany/tab

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4426
  • Karma: 39
    • Verze Delphi: XE7 professional
Re:Zmena veľkosti formulára - veľké oneskorenie
« Odpověď #43 kdy: 04-07-2019, 23:07:34 »
V rámci experimentovania som všetky nastavenia presunul do PageControl.OnChange. Funkcie naviazané na OnResize sú zablokované.
Výsledok je, že je to úplne jedno. Nevidím žiaden rozdiel. Skrývam
  • Taby. Ešte im aj ich obsahu nastavím DisableAlign.
  • panely na nich
  • podformuláre
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline miroB

  • Guru
  • *****
  • Příspěvků: 519
  • Karma: 17
    • Verze Delphi: D1,2,3,4,7,2005,2009, XE8,S,B,T10.2.2 Pro
Re:Zmena veľkosti formulára - veľké oneskorenie
« Odpověď #44 kdy: 04-07-2019, 23:13:16 »
To zodpovedá faktu, že stačí jeden tab, čo má veľa Controls (tvoj prípad), alebo Naplnený TAdvRichEdit, čo musí vykresľovať formátovaný text.(môj prípad)
Mimochodm, čo sa týka tých extrémnych počtov Controls (934), na tvojom prvom tabe, tak by som veril, že nájdeš aj iné riešenie. Povedzme samostatný formulár. A k nemu podľa potreby, jednoduché taby, keď ich bude treba. (Na inom formulári)
« Poslední změna: 04-07-2019, 23:23:40 od miroB »