Diskuze: Pomoc s tvorbou okien
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.


C# nepouzivam. Ale zkusim ti odpovedet.
Neni to uplne jednoduche, nejsou stanovena pravidla. Grafici radi pravidla
porusuji, takze vlastne kazdy program je vetsinou unikatni, vzhledove. A lide
preferuji zajimavy vzhled pred funkcnosti a prehlednosti. Je mozne udelat uplne
sileny vzhled, ktery bude prehledny nebo taky ne.
V html se kuprikladu preferuje pro formular pravidlo, ze na jednom radku smi
byt jen jedno doplnovaci policko (label + input text + novy radek nebo label +
novy radek + text + novy radek). Proc? Pokud je tam vic, treba nejaky checkbox
vpravo na konci ve 4tem sloupci (napr 4 sloupce), tak lide vyplni prvni kolonku
a checkbox prehlednou, protoze to byva malicky ctverecek velikosti asi 1/2 sirky
tuzky, kdezto input text je obri 1-2 sirky tuzky.
A takovychto pravidel je samozrejme vic.
Mozna by bylo lepsi, kdybys sem pridal tve rozlozeni, treba screenshoot a
nechal to lidi okomentovat. Nevim, zda to pujde, ale treba prvky popsat nejak
cisly nebo necim, cim se daji identifikovat.
A ne, nemam zajem si vypisovat maily. Pokud jsi z Opavy, muzu ti koukat na
monitor a rikat, co vypada spatne. Ale to same muze delat kterakoliv slecna,
mamka. Schvalne vybiram zeny, protoze ty na programy koukaji vic jako bezni
uzivatele a dokazi rici nazor prave na prehlednost.
Ahoj tak ja som ani nemyslel na nejaky konkretny pripad aplikacie ale skor na nejake pravidla. Pre mna ani pre komunitu pre ktoru robim vzhlad vobec nie je dolezity, cim nechcem povedat, ze mozu byt vsetky prvky v strede okna nahadzane jeden na druhy, ale ze uplne staci nejake zakladne rozmiestnenie ktore zaruci hlavne aby boli vsetky prvky viditelne. Rozne graficke sialenosti su uplne vedlajsie. No a to aby som mal prvky na obrazovke jakz-takz rozmiestnene som v Delphi riesil rucnym pocitanim bodov a zadavanim vlastnosti top a left kazdemu objektu. Samozrejme to bola otrocina a aj tak sa to neraz zmrsilo ak clovek maximalizoval okno alebo zmenil nejak jeho velkost. Vo WPF ma prave potesilo prave, ze by sa WPF malo postarat o to, aby bolo vsetko spravne rozmiestnene a viditelne ak je dobre napisany zdrojovy xaml. No a teraz sa dostavam k jadru veci. Ide mi o take skor systemove veci napr ze:
- Ak si napriklad vytvorim novy projekt, vytvori sa mi nove okno s nastavenou velkostou 450x800. Dajme tomu, ze chcem jednoduchu aplikaciu s menu, statusbar a nejakym listboxom ako hlavnou vyplnou obrazovky. Pridam grid, definujem tri riadky (prvy pre menu druhy pre listbox a treti pre statusbar) a nastavim strednemu riadku height="*". KOlko mam davat na menu a status bar ak chcem aby bolo menu viditelne? V niektorej casti kurzu som videl 50 v inej 150 a neviem posudit co je vela a co je malo. Skratka rad by som zvolil nejaku hodnotu, ktoru potom budem pouzivat.
- Je treba aj samotnemu gridu nastavovat nejaky margin? Ovplyvnuje to nejak vzhlad? Budu prvky napr dalej od okraja okna? Alebo staci nastavit margin iba tym objektom co su v ramci gridu a samotny grid nechat bez margin?
- Ak pridam do prveho riadku gridu menu a nastavim horizontalne zarovnanie na left a vertikalne na top, treba nastavovat aj velkost a ak ano tak aku? alebo davat zarovnania vzdy na center? A vobec aky je vztah medzi zarovnanim a velkostou? Ak dam zarovnanie na center, predpokladam ze bude objekt centrovany a roztiahne sa na celu velkost riadku gridu avsak ako sa bude spravat ak ho nastavim na zarovnanie top a left? Predpokladam ze vtedy sa neroztiahne a musim jeho velkost urcit ja?
- ak by som stale v tomto priklade mal v strede na riadku 2 jeden velky listbox a chcel by som aby zaplnil vsetok priestor ale nezakryl menu alebo stavovy riadok, mam nastavovat jeho velkost, alebo staci nastavit zarovnanie a dat ho na center? a znova: ak ho nastavim napr na left, musim urcit aj jeho velkost? resp ako sa potom bude spravat?
- Ako napr spravim ak by som chcel mat jednoduchy formular napr na zadanie hladaneho textu cize label, textbox a dve tlacidla? Ak by som si dal zasa grid s dvoma riadkami a do prveho dal label a textbox a do druheho tlacidla, ako zariadim aby boli tlacidla zhruba rovnakej velkosti a pekne vedla seba? da sa napr v gride vytvorit dva stlpce a urcit aby kazdy zaberal presne polovicu okna? Nikde som na toto nenarazil, videl som iba priklady ak by som napr jednemu stlpcu nastavil 100 a druhemu *, vtedy si ten druhy vyplni vsetok zvysny priestor. Da sa urobit aby si kazdy stlpec vzal polovicu? Alebo necham iba jeden stlpec, dam na riadok stackpanel a nan ulozim dve tlacidla a nastavim im zarovnanie center? Co to spravi? Roztiahnu sa obe tlacidla na cely panel a zakryju sa alebo si velkost panela podelia a kazdy bude v jednej polovici?
- A znova ten isty priklad - ak na prvom riadku gridu chcem mat vedla seba labe a textbox, ako by som urobil, aby bol cely label zarucene viditelny a textbox sa prisposobil? Napada mi dat na prvy riadok gridu stackpanel s orientaciou horizontalnou a ulozit nan label a textbox. Otazka vsak znie: prisposobi sa label vzdy textu, ktory tam bude zobrazeny?
Tak to su asi tie najdolezitejsie otazky, ktore mam. Ak by si mi vedel odpovedat, dost mi to pomoze. Ide mi hlavne o to, aby som pochopil spravanie jednotlivych kontajnerov a objektov v urcitych situaciach. Myslim ze si budem potom vediet vyrabat jednoduche formulare ak budem vediet co objekt v danej situacii urobi, napr ako som pisal o tych dvoch tlacidlach na riadku ci labeli a textboxe. Dakujem.
Ti poradi druzi. Ja s tim bohuzel nedelam. V delphi jsem delal taky, verze 3,
tam se to otrocky pocitalo. Ty modelni delphicka ale umi vzit xml format pro
formular. To maji zalozene na html a tam je nejaky system, ktery hlida
velikosti, aby se to neprekryvalo. Ale nevim presne, jak je to resene. Vetsinou
i v html vzhled otrocky spocitam a nebo pouzivam 12 sloupcovy grid system
(bootstrap css).
12 sloupcovy system funguje tak, ze rozdelis obrazovku na 12 sloupcu,
procentualne a k temto sloupcum zarovnavas, nastavujes sirky. Cili, sirka treba
1 sloupec, 2 sloupce, 6 sloupcu.
A dale se to rozdeluje podle sirky obrazovky, na 4 sirky, extra small, small,
large, extra large.
Lze tam definovat, ze ma malem zarizeni (mobil), zabira prvek 6 sloupcu, na
vetsim 4, atd. Takze, pak se prvky sami skladaji pod sebe, kdyz si clovek meni
sirku okna.
Takhle nejak by to mohlo fungovat i v pokrocilejsich editorech pro c#, delphi a
pod. Ale kdo vi, ja pisi kod v textovem editoru, nejradeji
Michal Štěpánek:10.12.2019 17:04
Ad 1) Na řádek Gridu, kde bude menu dej Height=“auto“
Ad 2) Ano, když dáš margin na Grid, bude od okraje okna mezera podle
velikosti marginu
Ad 3) Zarovnávání Left a Top je tuším nastaveno automaticky. Na center
zarovnáváš, když máš nastavenou hodnotu výšky řádku v Gridu a chceš
mít komponenty uprostřed
Ad 4) Pokud budeš mít menu v Grid.Row=“0“ a listbox v Grid.Row=“1“,
tak ti nic menu zakrýt nemůže
Ad 5) Grid je tabulka můžeš si nastavit, kolik chceš sloupců i řádků.
Když do StackPanelu dáš dvě tlačítka, budou buď vedle sebe (když
nastavíš na StackPanel Orientation=“Horizontal“) nebo pod sebou.
Překrývat se nebudou, roztáhnou se podle toho, jaké jim nastavíš
vlastnosti (např. margin).
Ad 6) Nebylo by jednodušší si vytvořit nějaký zkušební prográmek a tam
si toto veškeré chování vyzkoušet?
Peter Mlich:11.12.2019 8:10
"zrakovo postihnutý"
Pocitej s tim, ze je treba uplne slepy. Zkouset muze, ale nema zpetnou odezvu,
jak se to zobrazilo. Ale souhlasim, ze kdyby prisel z programkem, tak se muzes
mrknout, jak to vypada a rici mu, co ma udelat jinak. Takhle, bohuzel, co by,
kdyby...
Zobrazeno 6 zpráv z 6.