Autor Téma: Nájsť všetky FDTable na formulári  (Přečteno 2789 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4472
  • Karma: 39
    • Verze Delphi: XE7 professional
Nájsť všetky FDTable na formulári
« kdy: 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á?
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline František

  • Guru
  • *****
  • Příspěvků: 521
  • Karma: 6
    • Verze Delphi: primárne v XE5, občas 10.2.3 comunity
Re:Nájsť všetky FDTable na formulári
« Odpověď #1 kdy: 16-09-2019, 07:31:25 »
ja si pri vytvarani objektov udrzujem ich zoznam v TDicionary ... a potom lahko cez to aj knim pristupujem

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4472
  • Karma: 39
    • Verze Delphi: XE7 professional
Re:Nájsť všetky FDTable na formulári
« Odpověď #2 kdy: 16-09-2019, 07:57:45 »
Ja sa práve chcem vyhnúť akémukoľvek zoznamu.
Ale asi to ináč nepôjde.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline martinnr

  • Plnoletý
  • ***
  • Příspěvků: 172
  • Karma: 2
    • Verze Delphi: 7,2009,XE7
Re:Nájsť všetky FDTable na formulári
« Odpověď #3 kdy: 16-09-2019, 08:52:09 »
a cez form.components?

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4472
  • Karma: 39
    • Verze Delphi: XE7 professional
Re:Nájsť všetky FDTable na formulári
« Odpověď #4 kdy: 16-09-2019, 09:46:06 »
Nie, nájde mi len viditeľné komponenty. To by som tu nepísal.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Jirka

  • Plnoletý
  • ***
  • Příspěvků: 150
  • Karma: 8
    • Verze Delphi: XE2
Re:Nájsť všetky FDTable na formulári
« Odpověď #5 kdy: 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 

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 786
  • Karma: 43
    • Verze Delphi: 10.3
Re:Nájsť všetky FDTable na formulári
« Odpověď #6 kdy: 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.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4472
  • Karma: 39
    • Verze Delphi: XE7 professional
Re:Nájsť všetky FDTable na formulári
« Odpověď #7 kdy: 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.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline martinnr

  • Plnoletý
  • ***
  • Příspěvků: 172
  • Karma: 2
    • Verze Delphi: 7,2009,XE7
Re:Nájsť všetky FDTable na formulári
« Odpověď #8 kdy: 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.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4472
  • Karma: 39
    • Verze Delphi: XE7 professional
Re:Nájsť všetky FDTable na formulári
« Odpověď #9 kdy: 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 :)
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline František

  • Guru
  • *****
  • Příspěvků: 521
  • Karma: 6
    • Verze Delphi: primárne v XE5, občas 10.2.3 comunity
Re:Nájsť všetky FDTable na formulári
« Odpověď #10 kdy: 18-09-2019, 09:09:51 »
ale preco sa zoznamu vyhybat, je to pravdepodobne rychlejsie ako prehladavat formular,či?

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4472
  • Karma: 39
    • Verze Delphi: XE7 professional
Re:Nájsť všetky FDTable na formulári
« Odpověď #11 kdy: 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úť.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.