Forum Delphi.cz

Delphi => Obecné => Téma založeno: Stanislav Hruška 28-09-2021, 17:01:56

Název: Očíslovanie komponentov v návrhu
Přispěvatel: Stanislav Hruška 28-09-2021, 17:01:56
Pre zjednodušenie práce a aby som to vôbec zvládol potrebujem očíslovať komponenty na formulári. Zakaždým to opakovať na novej snímke formulára ma už nebaví. Formuláre sú husto posiate komponentmi. Preto to musí byť niečo čo bude na samom vrchu.
Vie niekto o nejakej možnosti?

Název: Re:Očíslovanie komponentov v návrhu
Přispěvatel: Radek Červinka 28-09-2021, 17:16:15
CnPack ukazuje TabOrder pro kazdou vrstvu jinou barvou a číslem -  viz. příloha.
Název: Re:Očíslovanie komponentov v návrhu
Přispěvatel: Stanislav Hruška 28-09-2021, 17:35:34
To poznám. TabOrder sa nezhoduje s číslovaním komponentov. Nerieši to moju situáciu. Mám teraz návrh na 36 čísel. Vo všetkých dotknutých formulároch. Na formulári je maximálne ~10 komponentov.
Prikladám ukážku súčasného číslovania.


Název: Re:Očíslovanie komponentov v návrhu
Přispěvatel: Stanislav Hruška 28-09-2021, 17:39:56
A tu je návrh nového číslovania.
Dôvod je, že chcem mať úplne jasno s čím robím. Tie coXX budú vymenované typy.
Bude to síce viac kódu ale:
Název: Re:Očíslovanie komponentov v návrhu
Přispěvatel: pf1957 28-09-2021, 18:05:38
A tu je návrh nového číslovania.
Dôvod je, že chcem mať úplne jasno s čím robím. Tie coXX budú vymenované typy.
Ne, ze bych rozumel tomu, o co se snazis: cislovani nikdy nebude stabilni a proto se pouzivaji symbolicka jmena...

Takze pokud chces mit jasno, tak si to srozumitelne pojmenuj. A dobra praxe je to symbolicke jmenu uvest i do textu zobrazovanemu BFU v UI - pak vidis, jak se co jmenuje a na prvni pohled je patrne, ktery text nemas lokalizovany.
Název: Re:Očíslovanie komponentov v návrhu
Přispěvatel: Stanislav Hruška 28-09-2021, 18:33:52
Trochu to vysvetlím. Názvy komponentov mám Name_Number. Prechádzam celý formulár. Podľa čísla viem, že sa jedná o komponent, pomocou ktorého užívateľ nastavuje svoje voľby pre tlač. Ja si zistím aktuálny stav komponentu a na základe čísla uložím si do správnej premennej. Tie potom použijem neskôr na:
Takže samotný názov komponentu nepotrebujem. Číslovanie na formulári je výslovne len pre moju potrebu počas programovania. Aby som sa z toho nezbláznil. Už som to číslovanie menil niekoľko krát :(  Terajšie riešenie by už malo byť
Už som túto techniku použil, ale vždy som tam mal dosť miesta na label.
Název: Re:Očíslovanie komponentov v návrhu
Přispěvatel: vandrovnik 28-09-2021, 20:45:15
K čemu že to číslování má být dobré? To má někde vidět uživatel, nebo to je pro programátora?
Název: Re:Očíslovanie komponentov v návrhu
Přispěvatel: Stanislav Hruška 28-09-2021, 20:46:21
Písal som, že len pre mňa.
Název: Re:Očíslovanie komponentov v návrhu
Přispěvatel: vandrovnik 28-09-2021, 20:49:34
Písal som, že len pre mňa.

No já bych se asi zbláznil spíš z těch čísel... Proč nestačí prostě jen kloudná jména těch komponent?
Název: Re:Očíslovanie komponentov v návrhu
Přispěvatel: pf1957 28-09-2021, 20:51:08
Aby som sa z toho nezbláznil. Už som to číslovanie menil niekoľko krát :( 
Pouziti poradovych cisel k identifikaci cehokoli je na zblazneni a nikdy bych to nepouzil: od toho jsou enumy, v horsim pripade konstanty.
Název: Re:Očíslovanie komponentov v návrhu
Přispěvatel: Stanislav Hruška 28-09-2021, 22:07:23
Ja tie enumy už mám navrhnuté. Ich poradie je zhodné s číslami v menách. Viď priložený Excel. Ale ako by som ich použil? Dám konkrétny prípad:
RadioGroup "Radiť podľa":
Upozorňujem, že tých RadioGroup "Radiť podľa" (to je titulok, nie názov) je viac a s rovnakým názvom. Doteraz mali rovnaké aj číslovanie. Teraz som to odlíšil číslami na konci. Mám 13 formulárov. Niektoré komponenty majú totožné - názvom aj funkciou.
Ako by som pracoval pri programovom prechádzaní formulára a hľadaní dotknutých komponentov? Nemám nikde ich zoznam. Ani ho nemienim robiť.
Ja som si vybral tento spôsob. O takom spôsobe sme sa už raz bavili a bol odporučený (pf1957  ;) ). Ale tam to slúžilo len na zachytenie DB komponentov, hodenia ich do zoznamu a určenie ich poradia pri kontrole.
Vandrovnik: stačili by mi aj mená, ale tie čísla sa mi lepšie spracovávajú - majú vyššiu výpovednú hodnotu. Napr., že to je môj komponent. Podľa mena by som to nevedel.
Název: Re:Očíslovanie komponentov v návrhu
Přispěvatel: pf1957 28-09-2021, 22:15:52
Teraz som to odlíšil číslami na konci.
No a jaky je problem misto cisel uvest nazvy enumu a introspekci ziskat jejich hodnotu a s tou v programu pracovat?
Citace
O takom spôsobe sme sa už raz bavili a bol odporučený (pf1957  ;) ). Ale tam to slúžilo len na zachytenie DB komponentov, hodenia ich do zoznamu a určenie ich poradia pri kontrole.
No ale tam pouzivas poradove cislo k definovani poradi a ne k identifikaci, ne?
Název: Re:Očíslovanie komponentov v návrhu
Přispěvatel: Stanislav Hruška 28-09-2021, 22:40:42
Citace
a introspekci ziskat jejich hodnotu
Tomu trochu nerozumiem. Budem mať názov blabla_coMyEnum.
Viem si načítať coMyEnum, ale to je len string. To ho mám hľadať v zozname podľa mena? Už niečo také robím s cudzími enumami (TSM).
Dobrú noc. Už mi odbila hodina :D .
Je jasné, že sa mi s tým bude lepšie robiť. Napríklad potrebujem vyriešiť ukladanie rôznych hodnôt - Boolean (tu použijem Integer), Byte, Integer, TDAte. Samozrejme musím vedieť, ktoré hodnoty (komponenty) som načítal. To asi budem robiť inicializáciou na hodnotu, ktorú pri načítaní nepriradím. Napr: Date := 0; Byte := 255; Integer -1. Načítanie hodnôt a ich použitie je oddelené.

Ale neviem ako mám vyriešiť zoznamy. V podstate sa jedná o tri zoznamy Boolean. Pri použití sa aktualizuje každá položka. Nie vždy poznám dopredu počet položiek.
Název: Re:Očíslovanie komponentov v návrhu
Přispěvatel: pf1957 29-09-2021, 07:14:14
Citace
a introspekci ziskat jejich hodnotu
Tomu trochu nerozumiem. Budem mať názov blabla_coMyEnum.
Viem si načítať coMyEnum, ale to je len string. To ho mám hľadať v zozname podľa mena?
Ne, Delphi interospekci podporuje uz pomerne dlouho, i kdyz mam dojem, ze u tech enumu to ma nejaka omezeni:
Kód: Delphi [Vybrat]
  1.   e := TRttiEnumerationType.GetValue<TMyEnum>(sEnum);
  2.   if ord(e)<0 then
  3.     ... // not found
  4.  
U zbytku nevim, jak to souvisi s puvodnim cislovanim komponent vs. jejich radnemu pojmenovani.

Název: Re:Očíslovanie komponentov v návrhu
Přispěvatel: Stanislav Hruška 29-09-2021, 08:28:16
Ďakujem, vyskúšam/overím to. O tom som nevedel. Ako som už písal, ja si takto získavam názvy Enum.

V noci som dal mozgu možnosť pracovať. Ráno mi hodil toto:
RadioGroup.Items = TStringList
To sa dá využiť následne:
Kód: Delphi [Vybrat]
  1. var
  2.   MyList: TStringList;
  3. begin
  4.   MyList := TStringList.Create;
  5.   MyList.Add('Bytu', TObject('FlatNumber, Name');
  6.   MyList.Add('Bytu', TObject('Name', FlatNumber);
  7. //  Pri tvorbe formulára
  8.   rgOrderBy.Items := MyList;
  9. //  Pri získavaní hodnoty
  10.   FOrderBy := FOrderBy + string(rgOrderBy.Object[rgOrderBy.ItemIndex]);
To isté sa dá použiť aj pre FWhere. To mi veľmi uľahčí život.
Raz som v Delphi videl niečo také:
Kód: Delphi [Vybrat]
  1. var
  2.   MyEnum: TMayEnum;
  3.   EnumName: string;
  4. begin
  5.   EnumName := Z názvu komponentu
  6.   MyEnum := TMayEnum(EnumName);  // ???
Budú mi tieto veci fungovať? Ja dúfam, že áno.
Název: Re:Očíslovanie komponentov v návrhu
Přispěvatel: pf1957 29-09-2021, 08:44:47
Raz som v Delphi videl niečo také:
...
MyEnum := TMayEnum(EnumName);  // ???
To ses asi spatne dival, tohle ani neprelozis. Musis pouzit tu introspekci, bud starsi variantu GetEnumValue()[/] nebo novejsi generickou formu s GetValue<>()
Název: Re:Očíslovanie komponentov v návrhu
Přispěvatel: Stanislav Hruška 29-09-2021, 09:34:47
Raz som v Delphi videl niečo také:
...
MyEnum := TMayEnum(EnumName);  // ???
To ses asi spatne dival, tohle ani neprelozis. Musis pouzit tu introspekci, bud starsi variantu GetEnumValue()[/] nebo novejsi generickou formu s GetValue<>()
Ja som príspevok najprv pripravil v texťáku, vložil ho sem a potom som prečítal Tvoj príspevok. No korekciu som neurobil. Ale aspoň viem, že niečo podobné nie je možné.
Keďže k ostatnému si sa nevyjadril, tak to beriem ako súhlas. Tú introspekciu si pozriem v helpe.
Ďakujem
Název: Re:Očíslovanie komponentov v návrhu
Přispěvatel: pf1957 29-09-2021, 16:56:58
Keďže k ostatnému si sa nevyjadril, tak to beriem ako súhlas.
No to ne - ja jsem z toho nepochopil, co vubec resis, takze jsem to preskocil :-)
Název: Re:Očíslovanie komponentov v návrhu
Přispěvatel: vandrovnik 29-09-2021, 16:58:52
No to ne - ja jsem z toho nepochopil, co vubec resis, takze jsem to preskocil :-)

To jsem rád, že v tom nejsem sám :-)
Název: Re:Očíslovanie komponentov v návrhu
Přispěvatel: Stanislav Hruška 29-09-2021, 17:06:32
Keďže k ostatnému si sa nevyjadril, tak to beriem ako súhlas.
No to ne - ja jsem z toho nepochopil, co vubec resis, takze jsem to preskocil :-)
Mal som na mysli hlavne to dynamické napĺňanie RadioGroup.Items s objektmi. Ale to nie je problém si to vyskúšať.
Ale vďaka diskusii som úplne zmenil filozofiu. Predtým priložené TMyEnum už nie sú platné. Číslovanie komponentov nebude. Komponenty s Items budú niesť zo sebou patričné údaje a informácie. Nebudem potrebovať kopu if cosi = nieco then ... a mať komplikovaný a neprehľadný kód.
Teraz som dokončil som prípravu včítane analýzy.
Mám jasnú predstavu čo a ako urobiť. Bude to trochu prácne, ale podľa mňa to stojí za to.
Ešte raz veľké ďakujem.
Název: Re:Očíslovanie komponentov v návrhu
Přispěvatel: Stanislav Hruška 29-09-2021, 17:07:44
No to ne - ja jsem z toho nepochopil, co vubec resis, takze jsem to preskocil :-)

To jsem rád, že v tom nejsem sám :-)
Ja by som sa veľmi čudoval, keby tomu tak nebolo. Utrpel by som šok :)