Autor Téma: TActivityIndicator  (Přečteno 902 krát)

Offline František

  • Hrdina
  • ****
  • Příspěvků: 443
  • Karma: 5
    • Verze Delphi: primárne v XE5, občas 10.2.3 comunity
TActivityIndicator
« kdy: 12-10-2018, 08:43:07 »
skúšam použiť TActivityIndicator, ale zamotal som sa
1. vytvoriť ho samostatne alebo použiť form
2. mám problém aj s priehľadnosťou
3. a v podstate neanimuje keď app niečo vykonáva

tak asi robím niečo zle, alebo som to nepochopil

Offline František

  • Hrdina
  • ****
  • Příspěvků: 443
  • Karma: 5
    • Verze Delphi: primárne v XE5, občas 10.2.3 comunity
Re:TActivityIndicator
« Odpověď #1 kdy: 12-10-2018, 10:07:33 »
urobil som to do threadu, ale aj tak neanimuje :(

Offline Delfin

  • Guru
  • *****
  • Příspěvků: 1367
  • Karma: 57
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Re:TActivityIndicator
« Odpověď #2 kdy: 12-10-2018, 15:28:05 »
urobil som to do threadu, ale aj tak neanimuje :(

Co jsi udelal "do threadu"? Pravidla jsou jednoducha, UI kresli, worker thready pracuji (a signalizuji UI o zacatku nebo konci prace, coz je signal pro ten indikator).
I'm a soldier, so don't panic! I know the underground! I like WTFPL license! No more Google, go duck, go!

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2332
  • Karma: 125
    • Verze Delphi: D2007, XE3, DX10
Re:TActivityIndicator
« Odpověď #3 kdy: 13-10-2018, 15:18:01 »
Excellent
Rated 1 time
tak asi robím niečo zle, alebo som to nepochopil
Nevim, co ti to presne dela resp nedela. Ale ze zvedavosti jsem se podival, coze je to v Delphi noveho a nefunguje mi to taky: kdyz na prazdny formular dam ten TActivityIndicator a v design time mu nastavim Animate na true, tak animuje. Ale kdyz aplikaci spustim, tak po nastaveni Animate na true se objevi cerny ctverec odpovidajici pozadi indikatoru. A jejich demo https://sourceforge.net/p/radstudiodemos/code/HEAD/tree/branches/RADStudio_Tokyo/Object%20Pascal/VCL/ActivityIndicator/ se chova stejne (nefunguje)

Oprava: kdyz tomu dam bilou barvu, tak na cernem ctverci bile animuje.
« Poslední změna: 13-10-2018, 15:29:14 od pf1957 »

Offline Pavol Kubik

  • Nováček
  • *
  • Příspěvků: 1
  • Karma: 0
    • Verze Delphi: C++ Builder 10.2.3
Re:TActivityIndicator
« Odpověď #4 kdy: 13-10-2018, 16:31:31 »
Tiez som svojho casu zapasil s touto komponentou a podobne ako pf1957 som videl len cierny stvorec. Nakoniec som zistil, ze musi byt v parametroch projektu v sekcii Application zaskrtnuta volba Enable Runtime Themes. Potom uz mi to chodilo v poriadku. Snad to niekomu pomoze.

Offline Delfin

  • Guru
  • *****
  • Příspěvků: 1367
  • Karma: 57
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Re:TActivityIndicator
« Odpověď #5 kdy: 13-10-2018, 17:20:30 »
Tiez som svojho casu zapasil s touto komponentou a podobne ako pf1957 som videl len cierny stvorec. Nakoniec som zistil, ze musi byt v parametroch projektu v sekcii Application zaskrtnuta volba Enable Runtime Themes. Potom uz mi to chodilo v poriadku. Snad to niekomu pomoze.

Ta volba je ale pro nove vytvorene projekty zapnuta, nebo ne (nemam ted Delphi)? Chapu ze by byt nemusela kdyby se importoval projekt napr. z Delphi 7...
I'm a soldier, so don't panic! I know the underground! I like WTFPL license! No more Google, go duck, go!

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2332
  • Karma: 125
    • Verze Delphi: D2007, XE3, DX10
Re:TActivityIndicator
« Odpověď #6 kdy: 13-10-2018, 17:23:24 »
Ta volba je ale pro nove vytvorene projekty zapnuta, nebo ne (nemam ted Delphi)? Chapu ze by byt nemusela kdyby se importoval projekt napr. z Delphi 7...
Nejen - ja si stahnul ten jejich demo projekt, kde to maji samozrejme zapnute. Prekladam Win32 na Tokyo 10.2 Upd1 a nefunguje ani se zapnutymi thematy

Offline František

  • Hrdina
  • ****
  • Příspěvků: 443
  • Karma: 5
    • Verze Delphi: primárne v XE5, občas 10.2.3 comunity
Re:TActivityIndicator
« Odpověď #7 kdy: 14-10-2018, 15:02:38 »
no asi som to zle vysvetlil, ono mi to animuje, ale ak niečo program vykonáva, tak animácia zastane, to znamená že je to len na 2 veci ....*#$%^&*^$(@*&...
lebo samozrejeme že chcem, aby to animovalo práve vtedy

Offline Delfin

  • Guru
  • *****
  • Příspěvků: 1367
  • Karma: 57
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Re:TActivityIndicator
« Odpověď #8 kdy: 14-10-2018, 15:18:17 »
no asi som to zle vysvetlil, ono mi to animuje, ale ak niečo program vykonáva, tak animácia zastane, to znamená že je to len na 2 veci ....*#$%^&*^$(@*&...
lebo samozrejeme že chcem, aby to animovalo práve vtedy

Pravidla jsou jednoducha, UI kresli, worker thready pracuji (a signalizuji UI o zacatku nebo konci prace, coz je signal pro ten indikator).
I'm a soldier, so don't panic! I know the underground! I like WTFPL license! No more Google, go duck, go!

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2332
  • Karma: 125
    • Verze Delphi: D2007, XE3, DX10
Re:TActivityIndicator
« Odpověď #9 kdy: 14-10-2018, 18:16:54 »
no asi som to zle vysvetlil, ono mi to animuje, ale ak niečo program vykonáva, tak animácia zastane, to znamená že je to len na 2 veci ....
Standardne se veskere UI ve VCL obsluhuje pumpou zprav v hlavnim threadu. A pokud tu pumpu zastavis, tak se nic obsluhovat nebude. Prasacke Q&D reseni je cas od casu zavolat obsluhu te pumpy, ale spravne reseni je jak pise Delfin: hlavni thread bezi a obsluhujue nerusene pumpu zprav a dlouhotrvajici cinnost se presouva do threadu, ktery kdyz vola Synchronize(), tak predava informaci pres pumpu zprav.

Offline František

  • Hrdina
  • ****
  • Příspěvků: 443
  • Karma: 5
    • Verze Delphi: primárne v XE5, občas 10.2.3 comunity
Re:TActivityIndicator
« Odpověď #10 kdy: 15-10-2018, 08:14:25 »
to znamená že vytvorím, TActivityIndicator(AI) a potom v Threade zavolám vykonanie úlohy?

(keďže mi to doteraz správne nefugovalo, vykašlal som sa na AI a nechal som to indikovať iba kurzorom, a preto chcem spýtať, čo je lepšie/rozumnejšie/efektívnejšie riešenie AI vs. cursor)
« Poslední změna: 15-10-2018, 08:18:44 od František »

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2332
  • Karma: 125
    • Verze Delphi: D2007, XE3, DX10
Re:TActivityIndicator
« Odpověď #11 kdy: 15-10-2018, 08:33:34 »
to znamená že vytvorím, TActivityIndicator(AI) a potom v Threade zavolám vykonanie úlohy?
To zalezi, co presne chces delat, ale pokud se jedna o jednorazovou akci, tak nejjednoduzsi bude
- nastavit Animate na true
- vytvorit suspended auto-free thread a povesit se na jeho OnTerminate event
- resume thread - v jeho Execute se provede uloha
- nastavit Animate na false

Jestli pouzit cursor nebo nejaky animovany cirkus je otazka na grafika

Offline František

  • Hrdina
  • ****
  • Příspěvků: 443
  • Karma: 5
    • Verze Delphi: primárne v XE5, občas 10.2.3 comunity
Re:TActivityIndicator
« Odpověď #12 kdy: 15-10-2018, 09:16:05 »
- vytvorit suspended auto-free thread a povesit se na jeho OnTerminate event

auto-free thread = AnonymousThread?

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2332
  • Karma: 125
    • Verze Delphi: D2007, XE3, DX10
Re:TActivityIndicator
« Odpověď #13 kdy: 15-10-2018, 10:40:33 »
auto-free thread = AnonymousThread?
Ne, tim jsem myslel FreeOnTerminate na true

Offline Delfin

  • Guru
  • *****
  • Příspěvků: 1367
  • Karma: 57
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Re:TActivityIndicator
« Odpověď #14 kdy: 15-10-2018, 11:09:35 »
To zalezi, co presne chces delat, ale pokud se jedna o jednorazovou akci, tak nejjednoduzsi bude
- nastavit Animate na true
- vytvorit suspended auto-free thread a povesit se na jeho OnTerminate event
- resume thread - v jeho Execute se provede uloha
- nastavit Animate na false

Nebo pouzit TTask (nechce se mi ted hledat do ktere verze byl pridan).
I'm a soldier, so don't panic! I know the underground! I like WTFPL license! No more Google, go duck, go!

 

S rychlou odpovědí můžete používat BB kódy a emotikony jako v běžném okně pro odpověď, ale daleko rychleji.

Jméno: E-mail:
Ověření:
Kolik je šest plus čtyři (slovem):