Forum Delphi.cz

Delphi => Obecné => Téma založeno: Stanislav Hruška 13-09-2019, 22:11:09

Název: Nájsť všetky FDTable na formulári
Přispěvatel: Stanislav Hruška 13-09-2019, 22:11:09
Rád by som pri vytváraní okna automaticky otvoril všetky tabuľky. Nijako sa mi to nedarí, lebo ich neviem nájsť/načítať. Možno preto, že to sú nevizuálne komponenty. Ale formulár ich vlastní. Ako sa to dá?
Název: Re:Nájsť všetky FDTable na formulári
Přispěvatel: František 16-09-2019, 07:31:25
ja si pri vytvarani objektov udrzujem ich zoznam v TDicionary ... a potom lahko cez to aj knim pristupujem
Název: Re:Nájsť všetky FDTable na formulári
Přispěvatel: Stanislav Hruška 16-09-2019, 07:57:45
Ja sa práve chcem vyhnúť akémukoľvek zoznamu.
Ale asi to ináč nepôjde.
Název: Re:Nájsť všetky FDTable na formulári
Přispěvatel: martinnr 16-09-2019, 08:52:09
a cez form.components?
Název: Re:Nájsť všetky FDTable na formulári
Přispěvatel: Stanislav Hruška 16-09-2019, 09:46:06
Nie, nájde mi len viditeľné komponenty. To by som tu nepísal.
Název: Re:Nájsť všetky FDTable na formulári
Přispěvatel: Jirka 16-09-2019, 10:12:03
Nie, nájde mi len viditeľné komponenty. To by som tu nepísal.
Nevím jak u tebe, ale u mě to vypisuje i datasety 
Název: Re:Nájsť všetky FDTable na formulári
Přispěvatel: vandrovnik 16-09-2019, 10:39:09
Otevírám datasety raději "ručně" např. v OnShow; často mi záleží na pořadí, v jakém se otevřou, proto jsem se nikdy ani nesnažil to nějak automatizovat.
Název: Re:Nájsť všetky FDTable na formulári
Přispěvatel: Stanislav Hruška 16-09-2019, 12:16:04
Citace
Nevím jak u tebe, ale u mě to vypisuje i datasety
Mne to názvy TFDQuery nevypíše
Kód: Delphi [Vybrat]
  1. for I := 0 to MySubform.ComponentCount - 1 do
  2.   Showmessage(MySubform.Components[I].Name);
Citace
Otevírám datasety raději "ručně" např. v OnShow; často mi záleží na pořadí, v jakém se otevřou, proto jsem se nikdy ani nesnažil to nějak automatizovat.
Ak na to narazím, tak si to viem obslúžiť.
Ale ako teraz nad tým rozmýšľam, vďaka vandrovnikovi, tak asi bude vhodné to predsa len robiť cez ten zoznam. Chcem tabuľky filtrovať podľa cudzieho kľúča. A ten sa mení podľa voľby užívateľa počas životnosti formulára.
Název: Re:Nájsť všetky FDTable na formulári
Přispěvatel: martinnr 17-09-2019, 08:38:52
No prave pisal som to preto, ze to pouzivame a funguje nam to. a funguje to aj na TDataModule aj na Form. V Delphi 10.3-Rio. Napr:
  for I := 0 to ComponentCount - 1 do
  begin
    Component := Components;
    if Component.InheritsFrom(TZQuery) then
      (Component as TZQuery).CancelUpdates;
  end;

Help v Delphi pise: "System.Classes.TComponent.Components - Lists all components owned by the component.".

Urcite maje tie datasety nastavene Owner? Nie len Parent? Samozrejme ak su komponenty uz v design-time na formulari, tak by mali mat parenta automaticky.
Název: Re:Nájsť všetky FDTable na formulári
Přispěvatel: Stanislav Hruška 17-09-2019, 09:01:13
Hm, je tu možný jeden zádrh. Ja tie tabuľky mám na subForm. Tam je určite vlastníkom podformulár.
No netuším, či sa vlastník zmení ak podformulár dám na formulár. To nepredpokladám, lebo by mi nefungoval kód. Alebo ho mám napísaný ináč než si myslím :)
Název: Re:Nájsť všetky FDTable na formulári
Přispěvatel: František 18-09-2019, 09:09:51
ale preco sa zoznamu vyhybat, je to pravdepodobne rychlejsie ako prehladavat formular,či?
Název: Re:Nájsť všetky FDTable na formulári
Přispěvatel: Stanislav Hruška 18-09-2019, 09:29:56
Ja som sa chcel vyhnúť akémukoľvek kódu pri vytvorení nového formulára. Ale keďže niektoré tabuľky budem potrebovať filtrovať, tak som to musel zavrhnúť.