Forum Delphi.cz

Delphi => Obecné => Téma založeno: Stanislav Hruška 03-12-2019, 18:19:06

Název: AdvEdit.OnChange
Přispěvatel: Stanislav Hruška 03-12-2019, 18:19:06

Potrebujem upraviť hodnoty v iných AdvEdit (nový stav a rozdiel) na základe zmeny hodnoty v MyAdvEdit.
MyAdvEdit - presnosť je 2
Problém je v tom, že udalosť OnChange sa volá dvakrát. Prvý krát pri zmene údaju, druhý krát pri formátovaní. To je nežiaduce. Ja to neviem rozlíšiť.
Pomocné premenné mi nepomohli. Pri OnChange vyvolanom formátovaním obsahujú pôvodné hodnoty a nie aktualizované. Inú vhodnú udalosť som nenašiel.
Ako sa to dá vyriešiť?
Název: Re:AdvEdit.OnChange
Přispěvatel: miroB 04-12-2019, 09:38:53

Potrebujem upraviť hodnoty v iných AdvEdit (nový stav a rozdiel) na základe zmeny hodnoty v MyAdvEdit.
MyAdvEdit - presnosť je 2
Problém je v tom, že udalosť OnChange sa volá dvakrát. Prvý krát pri zmene údaju, druhý krát pri formátovaní. To je nežiaduce. Ja to neviem rozlíšiť.
Pomocné premenné mi nepomohli. Pri OnChange vyvolanom formátovaním obsahujú pôvodné hodnoty a nie aktualizované. Inú vhodnú udalosť som nenašiel.
Ako sa to dá vyriešiť?
AdvEdit, nemá aj ten náhodou príznak Modified? Vzhľadom na to, že dochádza k druhotnej modifikácii.. podobne ako u AdvMemo so zvýrazňovačom kódu. Preto by mal mať niečo podobné. Alebo či by nepomohla nejaká iná udalosť, napr. OnStatusChange ..
Název: Re:AdvEdit.OnChange
Přispěvatel: Stanislav Hruška 04-12-2019, 11:58:02
Má Modified. Ale ako by som to využil? Predpokladám, že akonáhle urobím najmenšiu zmenu, tak už stále bude True. No, pozriem sa na to. Udalosti sú v prílohe.
Název: Re:AdvEdit.OnChange
Přispěvatel: Stanislav Hruška 04-12-2019, 12:05:40
Tak som si to otestoval v OnChange a nie je to použiteľné.
Název: Re:AdvEdit.OnChange
Přispěvatel: miroB 04-12-2019, 18:12:12
Zdá sa, že podobné problémy už niekto reklamoval na fóre TMS.
https://www.tmssoftware.com/site/forum/forum_posts.asp?TID=2484&title=adveditOnchange-fired-2x-when-delete-the-text (https://www.tmssoftware.com/site/forum/forum_posts.asp?TID=2484&title=adveditOnchange-fired-2x-when-delete-the-text)
Bruno Fierens tvrdil, že to opravia v najbližšej verzii.
Lenže to bolo v roku 2013. Ak to pretrváva, tak sa mu to nepodarilo, alebo to znovu poorali.
Prepošli mu info, podľa vzoru z linku.
Název: Re:AdvEdit.OnChange
Přispěvatel: Stanislav Hruška 04-12-2019, 18:13:46
Poslal som to. Zároveň tu aj tam. S menšími výčitkami svedomia :) 
V tom odkaze je trocha iná problematika. Zaoberali sa tým aj na SO.
Název: Re:AdvEdit.OnChange
Přispěvatel: miroB 04-12-2019, 18:28:53
Má Modified.
..
akonáhle urobím najmenšiu zmenu, tak už stále bude True. No, pozriem sa na to. Udalosti sú v prílohe.
(Za obrázkom-mimo rozsah, sú aj ďalšie udalosti.)
Modified si môžeš prípadne vhodne prepisovať, ak treba.
Navyše niektoré z tých dvoch volaní, je asi vždy prvé. Čo tak druhé, alebo prvé odignorovať?
Podrobiť analýze a s využitím iných properties nejako o..babrať? Napríklad zistiť, či by nepomohla súčinnosť aj s OnStatusChange ?
Asi to je práca navyše, ale zatiaľ..
Mimochdom tušim včera aktualizovali VCL UI Pack. Takže nová verzia nebude hneď.
Název: Re:AdvEdit.OnChange
Přispěvatel: Stanislav Hruška 04-12-2019, 19:14:35
Citace
(Za obrázkom-mimo rozsah, sú aj ďalšie udalosti.)
Nie sú. Dal som tu všetky!
Citace
Modified si môžeš prípadne vhodne prepisovať, ak treba.
Navyše niektoré z tých dvoch volaní, je asi vždy prvé. Čo tak druhé, alebo prvé odignorovať?
Prvé je reakcia na užívateľa, druhé je časovač, alebo ho predbehne užívateľ. Ako ich mám ignorovať, keď hodnota premenných v udalosti sa mení podľa toho, kto ju volá. Jednoducho napísané premenná má dve hodnoty.
Citace
Podrobiť analýze a s využitím iných properties nejako o..babrať? Napríklad zistiť, či by nepomohla súčinnosť aj s OnStatusChange ?
Asi to je práca navyše, ale zatiaľ..
Na to sa môžem pozrieť.

Název: Re:AdvEdit.OnChange
Přispěvatel: Stanislav Hruška 09-12-2019, 15:39:37
Poslal TMS formulár a problém vyriešili. Bude to v najbližšom update.