Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Štefan Kiss
Člen
Avatar
Štefan Kiss:10.12.2019 8:14

Dobrý deň, priatelia, som zrakovo postihnutý používateľ PC a vo voľnom čase sa venujem programovaniu a vytváram rôzne drobné programčeky pre seba a pre našu komunitu. Dlhé roky som robil v Delphi no usúdil som, že je čas prejsť na niečo nové a zvolil som WPF a C#. Absolvoval som seriál o okenních aplikacích tu na ITnetworku aby som sa naučil vytvárať aplikácie s oknami. Seriál mi v základoch veľmi pomohol, no mám stále zopár otázok, ktoré sú pre Vás, skúsených a hlavne vidiacich vývojárov banálne, no pre mňa sú dosť zásadné. Ide hlavne o tvorbu okna s nejakými tými komponentami v xaml. Hľadám preto ochotníka, ktorý by mal čas a trpezlivosť prejsť so mnou pár drobností súkromne po maili, aby sme zbytočne neriešili tu na fóre veci, ktoré sú pre mnohých fakt banalitou. V kocke načrtnuté ide mi hlavne o to, ako nastavovať vlastnosti komponent tak, aby to na obrazovke dobre vyzeralo. Na WPF ma zaujalo, že si mnohé veci urobí sám, no aj tak človek musí správne napísať zdrojový xaml a tu práve začínajú moje otázky. Napr. ako v určitých situáciách naukladať objekty na grid a ako im nastaviť veľkosť či zarovnanie, resp čo ktorá kombinácia urobí a podobne. Ak niekto má chuť vymeniť si zopár mailov, ozvite sa mi na stefan.kiss@nextra.sk. Vopred ďakujem.

 
Odpovědět
10.12.2019 8:14
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:10.12.2019 11:15

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.

 
Nahoru Odpovědět
10.12.2019 11:15
Avatar
Štefan Kiss
Člen
Avatar
Štefan Kiss:10.12.2019 13:26

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:

  1. 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.
  2. 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?
  3. 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?
  4. 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?
  5. 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?
  6. 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.

 
Nahoru Odpovědět
10.12.2019 13:26
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:10.12.2019 16:00

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 :)

 
Nahoru Odpovědět
10.12.2019 16:00
Avatar
Odpovídá na Štefan Kiss
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=“Ho­rizontal“) 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?

Editováno 10.12.2019 17:05
Nahoru Odpovědět
10.12.2019 17:04
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Peter Mlich
Člen
Avatar
Odpovídá na Michal Štěpánek
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...

 
Nahoru Odpovědět
11.12.2019 8:10
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.