Autor Téma: Reakce na změnu velikosti subkomponenty  (Přečteno 477 krát)

Offline Vejrous

  • Nováček
  • *
  • Příspěvků: 2
  • Karma: 2
Reakce na změnu velikosti subkomponenty
« kdy: 15-02-2019, 14:00:18 »
Excellent
Rated 1 time
Dobrý den,
tvořím si jednoduchý systém, který automaticky urovnává komponenty na formuláři, neboť formulář je tvořen za běhu, nikoliv pomocí IDE.

Form -> (LayoutTable -> LayoutRow -> LayoutCell -> Komponenta)

Použití je podobné jako u HTML tabulky:
LayoutTable := TLayoutTable.Create
  LayoutTable.AddRow;
    LayoutTable.AddCell;
      LayoutTable.AddComponent();
    LayoutTable.AddCell;
      LayoutTable.AddComponent();
  LayoutTable.AddRow;
  ....
  ....

Vlastník komponenty (Owner)=Form
Parent komponenty = LayoutTable

Pokud se zvětší rozměr některé komponenty, potřebuji to odchytit a vše překreslit.
Netuší někdo jakým způsobem dávají komponenty vědět Parent-ovi, že je třeba změnit rozměry?
Shodně funguje např. TPanel, když Autosize=True;

Za nasměrování/radu mockrát děkuji.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 3903
  • Karma: 35
    • Verze Delphi: XE7 professional
Re:Reakce na změnu velikosti subkomponenty
« Odpověď #1 kdy: 15-02-2019, 14:21:46 »
Komponenty, ktoré ako, zvyknú mať udalosť OnResize.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 3903
  • Karma: 35
    • Verze Delphi: XE7 professional
Re:Reakce na změnu velikosti subkomponenty
« Odpověď #2 kdy: 15-02-2019, 14:24:05 »
Ešte sa skús pozrieť na TFlowPanel či TGridPanel.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Online Delfin

  • Padawan
  • ******
  • Příspěvků: 1621
  • Karma: 65
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Re:Reakce na změnu velikosti subkomponenty
« Odpověď #3 kdy: 15-02-2019, 14:52:49 »
Netuší někdo jakým způsobem dávají komponenty vědět Parent-ovi, že je třeba změnit rozměry?

Metodou AlignControls.
I'm a soldier, so don't panic! I know the underground! I like WTFPL license! No more Google, go duck, go!

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 3903
  • Karma: 35
    • Verze Delphi: XE7 professional
Re:Reakce na změnu velikosti subkomponenty
« Odpověď #4 kdy: 15-02-2019, 15:05:18 »
Citace
Metodou AlignControls.
Hm, to asi nebude ono. On mení veľkosť komponentu a tomu sa má prispôsbiť Parent. Align funguje opačne. Zmení sa veľkosť Parent-u a tomu sa prispôsobí komponent.
Ale je možné, že zle chápem otázku.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Online Delfin

  • Padawan
  • ******
  • Příspěvků: 1621
  • Karma: 65
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Re:Reakce na změnu velikosti subkomponenty
« Odpověď #5 kdy: 15-02-2019, 15:50:39 »
Citace
Metodou AlignControls.
Hm, to asi nebude ono. On mení veľkosť komponentu a tomu sa má prispôsbiť Parent. Align funguje opačne. Zmení sa veľkosť Parent-u a tomu sa prispôsobí komponent.
Ale je možné, že zle chápem otázku.

Dotaz chapeme stejne. Se zmenou velikosti nebo pozice potomka se notifikuje jeho rodic pomoci AlignControls. Jak se rodic v teto metode zachova je na nem. Co me v dotazu zarazi vic je zminka o prekresleni. K tomu by totiz melo dojit automaticky... Mozna jde jen o preklep a jedna se o prepocteni (pozic).
« Poslední změna: 15-02-2019, 16:07:17 od Delfin »
I'm a soldier, so don't panic! I know the underground! I like WTFPL license! No more Google, go duck, go!

Offline Vejrous

  • Nováček
  • *
  • Příspěvků: 2
  • Karma: 2
Re:Reakce na změnu velikosti subkomponenty
« Odpověď #6 kdy: 15-02-2019, 21:00:12 »
Excellent
Rated 1 time
Dobrý den,
děkuji za radu, opravu se jedná o AlignControls.
Přehled volání:
Kód: Delphi [Vybrat]
  1. Heigth -> SetHeigth -> TControl.SetBounds -> InvalidateControl -> TControl.RequestAlign --> skok na parent Parent - TWinControl.AlignControl(AControl: TControl) -> TWinControl.AlignControls(AControl: TControl; var Rect: TRect)
  2.  

K druhé části - překreslení probíhá automaticky, nepřesně jsem se vyjářil. Jde o přepočtení pozic.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 3903
  • Karma: 35
    • Verze Delphi: XE7 professional
Re:Reakce na změnu velikosti subkomponenty
« Odpověď #7 kdy: 15-02-2019, 21:16:57 »

OT:
Citace
Dotaz chapeme stejne. Se zmenou velikosti nebo pozice potomka se notifikuje jeho rodic pomoci AlignControls.
Sľubujem, že odkazy už budem čitať dôsledne. Nie len jedný okom. Ja som si to zamenil s vlastnosťou Align :-[
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.

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