Vianoce v ITnetwork sú tu! Dobí si teraz kredity a získaj až 80 % extra kreditov na e-learningové kurzy ZADARMO. Zisti viac.
Hľadáme nové posily do ITnetwork tímu. Pozri sa na voľné pozície a pridaj sa k najagilnejšej firme na trhu - Viac informácií.

Diskusia – Gascripe

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Avatar
David Hartinger
Vlastník
Avatar
David Hartinger:26.9.2012 21:40

Zvenku hezké, chválím věci jako kontrolu jeslti neuzavírám neuložený skript atd. Zevnitř nějaké rozdělení do tříd, kód jsem důkladně nezkoumal. Mícháš zobrazení a logiku, všechny věci jako práce se soubory a výpočty by mělo být v jiných třídách, než věci jako showdialog atd. Podívej se na tutoriály tady.

Určitě by se hodilo zvýraznění textu, David Jančík tu psal teď tutoriál - http://www.itnetwork.cz/…highlighteru

Odpovedať
26.9.2012 21:40
New kid back on the block with a R.I.P
Avatar
matesax
Tvůrce
Avatar
Odpovedá na David Hartinger
matesax:26.9.2012 22:04

Já bych rád - dřív jsem se s tím piplal, ale problém je s použitím. Tedy nemám přístup k prvkům, do kterých chci vkládat data. Tedy musel bych psát návratové metody - a kód by tím byl mnohem delší - kdyby se jednalo o výpočet čísla algoritmem, bez problému hodím algiritmus do sólo třídy, vložím parametr při zavolání a co mi vyflusne někam uložím,... Ale když potřebuji nastavit určitou hodnotu Textboxu (cíleně pro daný element) - a mám to na 3 řádky... Možná se mýlím, tak mě pouč - jak to udělat jednoduše...

Co by jsi chtěl zvýrazňovat?

Přikládám novou verzi...

 
Odpovedať
26.9.2012 22:04
Avatar
matesax
Tvůrce
Avatar
Odpovedá na David Hartinger
matesax:26.9.2012 22:11

Pardon - už chápu to s tím zvýrazňováním - vzal jsem to jako hotovou věc - že jsem to vyřešil tím editorem, kde si lze hrát skoro jako ve wordu - rád se do toho pustím... :)

 
Odpovedať
26.9.2012 22:11
Avatar
matesax
Tvůrce
Avatar
Odpovedá na David Hartinger
matesax:27.9.2012 6:16

Toto jsou nejčastější funkce:

https://gist.github.com/3792112

Tedy jak píši nastavování hodnot elementům formu - to snad ani nejde udělat jako objekt...

 
Odpovedať
27.9.2012 6:16
Avatar
David Hartinger
Vlastník
Avatar
Odpovedá na matesax
David Hartinger:27.9.2012 12:41

Těší mě, že máš zájem se zlepšit :)

První věc, teď jsem si teprve všiml toho VAR. Proboha, tohle slouží k něčemu úplně jinému, C# je silně typovaný jazyk, typy používej, tohle je opravdu špatné.

Podívejme se třeba na funkci EditSectionName:

private void EditSectionName()
{
    if (SectionViewer.SelectedNode != null)
    {
        var doc = Interaction.InputBox("Zadej nové jméno sekce.", "Change Name Dialog", Path.GetFileName(actualPath));
        var di = new DirectoryInfo(actualPath);

        if (!String.IsNullOrEmpty(doc))
        {
            var act = di.Parent.FullName + @"\" + doc;

            if (act != actualPath + @"\" + doc)
                di.MoveTo(NoExistName(act));
        }

        SectionViewerActualize();
    }
}

Pracuješ tam s nějakou vizuální komponentou, předpokládám, že tohle je v kódu formu. To je správně. Ale tato část:

var di = new DirectoryInfo(actualPath);

if (!String.IsNullOrEmpty(doc))
{
    var act = di.Parent.FullName + @"\" + doc;

    if (act != actualPath + @"\" + doc)
        di.MoveTo(NoExistName(act));
}

je již přeci logika. Ta bu se neměla míchat se vzhledovou částí aplikace. Uděláš si nějakou třídu, moc nevím jak to přesně funguje, ale tady děláš něco se sekcemi, tak třeba SectionManager? Tam dáš tuto metodu (ty var jsem dal pryč):

public function rename(string doc)
// btw proč se jmenuje nové jméno sekce doc?
{
    DirectoryInfo di = new DirectoryInfo(actualPath);

    if (!String.IsNullOrEmpty(doc))
    {
        string act = di.Parent.FullName + @"\" + doc;

        if (act != actualPath + @"\" + doc)
            di.MoveTo(NoExistName(act));
    }
}

Actualpath se asi používá častěji, bude to prostě atribut té třídy SectionManager. No a teď tohle zavoláš v té zobrazovací části:

private void EditSectionName()
{
    if (SectionViewer.SelectedNode != null)
    {
        string doc = Interaction.InputBox("Zadej nové jméno sekce.", "Change Name Dialog", Path.GetFileName(actualPath));
        sectionManager.rename(doc);
        SectionViewerActualize();
    }
}

Všimni si, že zobrazovací část říká co se má dělat, ale již tam není jak se to má dělat. Logika je schována v další třídě, kam patří.

Odpovedať
27.9.2012 12:41
New kid back on the block with a R.I.P
Avatar
matesax
Tvůrce
Avatar
Odpovedá na David Hartinger
matesax:27.9.2012 13:38

Pokud vím, tak var doplňuje typ podle pravé části - a je pro zkrácení zápisu - tedy proč bych jej neměl využívat?

Ale to je to o čem mluvím - používáš tam SectionViewer­.SelectedNode != null, ale v jiné třídě přeci nebudu k elementu SectionViewer mít přístup... Takže bych buď musel dělat mosty, nebo jak jsem psal, ale tak, či jiným způsobem to propojit - bude to pro mě náročněší...

Třeba zde bych musel udělat "get set" pro SectionViewer, ...

Editované 27.9.2012 13:38
 
Odpovedať
27.9.2012 13:38
Avatar
matesax
Tvůrce
Avatar
Odpovedá na David Hartinger
matesax:27.9.2012 13:51

Jo takhlen - už tě chápu - no ale i tak - kód tím bude delší... Uvidím sám - jdu na to...

Jo a doc se to jemnuje - jakože dočasný...

Editované 27.9.2012 13:55
 
Odpovedať
27.9.2012 13:51
Avatar
David Hartinger
Vlastník
Avatar
Odpovedá na matesax
David Hartinger:27.9.2012 14:09

Ne, var není ke zkrácení zápisu, tato konstrukce tam byla dodána pro úplně jiné účely, konkrétně pro zjednodušení datových typů při práci s databází. Takhle jen jdeš proti návrhu jazyka.

Odpovedať
27.9.2012 14:09
New kid back on the block with a R.I.P
Avatar
matesax
Tvůrce
Avatar
Odpovedá na David Hartinger
matesax:27.9.2012 15:15

Hotovo... Bude ti vadit projít si to? - mohu poslat jen cílený kód...

 
Odpovedať
27.9.2012 15:15
Avatar
David Hartinger
Vlastník
Avatar
Odpovedá na matesax
David Hartinger:27.9.2012 15:29

Pošli sem tu část :)

Odpovedať
27.9.2012 15:29
New kid back on the block with a R.I.P
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zatiaľ nikto nevložil komentár - buď prvý!