Autor Téma: Je komponent na vrchu (vykreslený na obrazovke)?  (Přečteno 338 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2849
  • Karma: 26
    • Verze Delphi: XE7 professional
Chcem obmedziť vykonávanie kódu na nevyhnutné minimum.
Príklad:
Mám PageControl. Samozrejme, že aktívna môže byť len jedna záložka. Tým pádom na ostatných záložkách nepotrebujem ošetrovať komponenty. Napr. DBNavigator (vlastný).
Vlastnosti Visible, CanFocus, Enabled nie sú vhodné, lebo rozhodovanie či ošetriť alebo neošetriť komponent nezávisí na ich stave.
Ako zistím, že daný DBNavigator je navrchu, vidím ho a preto ho treba ošetriť?
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Delfin

  • Host
Re:Je komponent na vrchu (vykreslený na obrazovke)?
« Odpověď #1 kdy: 22-05-2017, 03:55:30 »
http://docwiki.embarcadero.com/Libraries/Berlin/en/Vcl.Controls.TWinControl.Showing property.

Offline < z >

  • Administrátoři
  • Guru
  • *****
  • Příspěvků: 1081
  • Karma: 36
    • Verze Delphi: 7, 2010
Re:Je komponent na vrchu (vykreslený na obrazovke)?
« Odpověď #2 kdy: 22-05-2017, 18:48:30 »
@Delfin:
Schválně, rozepiš se o tom, jak testováním property Showing zjistíš, že alokovaná komponenta kdovíkde zrovna není vidět

Delfin

  • Host
Re:Je komponent na vrchu (vykreslený na obrazovke)?
« Odpověď #3 kdy: 23-05-2017, 01:38:15 »
@Delfin:
Schválně, rozepiš se o tom, jak testováním property Showing zjistíš, že alokovaná komponenta kdovíkde zrovna není vidět

Omyl, beru z5.

Chcem obmedziť vykonávanie kódu na nevyhnutné minimum.
Príklad:
Mám PageControl. Samozrejme, že aktívna môže byť len jedna záložka. Tým pádom na ostatných záložkách nepotrebujem ošetrovať komponenty. Napr. DBNavigator (vlastný).
Vlastnosti Visible, CanFocus, Enabled nie sú vhodné, lebo rozhodovanie či ošetriť alebo neošetriť komponent nezávisí na ich stave.
Ako zistím, že daný DBNavigator je navrchu, vidím ho a preto ho treba ošetriť?

Co presne znamena osetrit? Jedine "osetreni" v pripade viditelnosti komponenty co me napada je vykresleni a to se deje v metode Paint jen pokud je komponenta videt (optimalne). Princip je prosty, komponente se nastavuje stav. A podle stavu kresli. Cili problem tady je (nejspis, neznam detaily) casove nebo prostredkove narocne nastaveni stavu, coz by se z pohledu designu dit nemelo. Muzete zkusit popsat detaily, zejmena co znamena "osetrit" a jakym zpusobem menite stav komponent?

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2849
  • Karma: 26
    • Verze Delphi: XE7 professional
Re:Je komponent na vrchu (vykreslený na obrazovke)?
« Odpověď #4 kdy: 23-05-2017, 08:10:14 »
Citace
Co presne znamena osetrit?
Muzete zkusit popsat detaily, zejmena co znamena "osetrit" a jakym zpusobem menite stav komponent?
Mám na formulári PageControl a na nich niekoľko DBNavigator-ov. Samozrejme, že vždy je viditeľná len jedna strana. Na tej je žiaduce aktualizovať DBNavigator-y a na ostatných to je zbytočná práca navyše. Ja by som jej rád zabránil. Na súčasných PC sa to v praxi veľmi neprejaví ale...
Pri prepnutí strany aj tak vždy aktualizujem patričné DBNavigator-y.
Rád by som mal nejaké všeobecné riešenie. Najlepšie by bolo, keby DBNavigator sám rozhodol či má alebo nemá spustiť "aktualizačný" kód. Bez ohľadu na štruktúru komponentov na formulári. Napr. formulár nemusí obsahovať PageControl.

Tak isto mi nedá pokoj volanie VST.OnChange. Ten sa zásadne pre každý VST spustí dvakrát. S tým neurobím nič. Ale hlavne spúšťa celú lavínu iných udalostí. Napr. ďalšie VSTnn.OnChange. A tiež zbytočne.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline mjseven

  • Mladík
  • **
  • Příspěvků: 64
  • Karma: 5
    • Verze Delphi: D7, D2006, XE2, Lazarus
Re:Je komponent na vrchu (vykreslený na obrazovke)?
« Odpověď #5 kdy: 23-05-2017, 09:36:11 »

Při použití PageControlu na to jdu ve většině případů přes property ActivePage. Z té zjistím jaká záložka je aktivní a podle toho se rozhoduji co aktualizovat.








 

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2849
  • Karma: 26
    • Verze Delphi: XE7 professional
Re:Je komponent na vrchu (vykreslený na obrazovke)?
« Odpověď #6 kdy: 23-05-2017, 11:01:27 »
Citace
Při použití PageControlu na to jdu ve většině případů přes property ActivePage. Z té zjistím jaká záložka je aktivní a podle toho se rozhoduji co aktualizovat.
V iných prípadoch to tak robím, ale tu to nevyhovuje.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

 

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

Upozornění: do tohoto tématu bylo naposledy přispěno před 120 dny.
Zvažte prosím založení nového tématu.

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