Autor Téma: Zmena veľkosti panela - problém s presnosťou  (Přečteno 939 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6161
  • Karma: 44
    • Verze Delphi: W10 + D11
Zmena veľkosti panela - problém s presnosťou
« kdy: 09-09-2015, 20:46:44 »
Mám panely, ktoré predstavujú časové obdobia. Tie sa dajú meniť zmenou veľkosti (ťahaním za okraj panela). Panely sa navzájom ovplyvňujú - nemožno ťahať hranu panela za povolenú hranicu. To mám programovo ošetrené.

Problém je s presnosťou. Jeden pixel je jeden deň. Ale to sa samozrejme nezhoduje s rozlíšením monitora.
Zmeniť šírku panela v komponente (tam riešim hranice) znamená zrušenie hranice (hrana sa dá ťahať bez obmedzenia).
Korigovanie šírky panela v OnResize nemá vplyv  :(.

Chyba mi skáče o 1 - 2 dni/pixely. Konkrétne. Posledný panel v spodnej časti (viď prílohu) má pravý dátum 31.11. Po ťahaní vľavo a naspäť vpravo dostávam dátum 01.12 alebo 02.12. Podľa toho, kde je umiestnené okno. Vhodné by bolo niečo ako AfterOnResize.

Je to možné nejako riešiť?

Viem posunúť hranicu kontroly o 1 a tým dosiahnuť, že nebude prekročená daná hranica (ani dosiahnutá). S chybou -1 až -2.
« Poslední změna: 09-09-2015, 20:50:03 od Stanislav Hruška »
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6161
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Zmena veľkosti panela - problém s presnosťou
« Odpověď #1 kdy: 09-09-2015, 21:30:31 »
Chcel použiť Panel.OnExit, ale to sa nespustí. Prečo? Žeby panel nemal fokus?

Ešte tu je OnMouseLeave, ale to sa bude volať ako na bežiacom páse.
« Poslední změna: 09-09-2015, 21:38:37 od Stanislav Hruška »
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6161
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Zmena veľkosti panela - problém s presnosťou
« Odpověď #2 kdy: 09-09-2015, 22:13:41 »
Citace
Chcel použiť Panel.OnExit, ale to sa nespustí. Prečo?
Už som zistil ako to funguje. Musím mať na panely niečo čo má focus. A keďže vhodnú náhradu za panel som nenašiel, tak budem musieť použiť OnMouseLeave :(
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6161
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Zmena veľkosti panela - problém s presnosťou
« Odpověď #3 kdy: 10-09-2015, 12:10:02 »
Citace
tak budem musieť použiť OnMouseLeave
Ide to bez toho. Doplnil som

1) korekciu šírky panela v OnResize
2) korekciu dátumu Do o -jeden deň, ak  je nasledujúci dátum Od 01.mm.yyyy
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline < z >

  • Administrátoři
  • Guru
  • *****
  • Příspěvků: 1174
  • Karma: 44
    • Verze Delphi: 7, 2010
Re:Zmena veľkosti panela - problém s presnosťou
« Odpověď #4 kdy: 10-09-2015, 12:39:20 »
Vidis, staci prvne premyslet, nez napises ;)