User control   zodpovězená otázka

Komponenty, WinForms

Dobrý den,

potřeboval bych si v CF vytvořit svůj trackbar.

Obsahoval by i něco jako progresbar s trochou grafiky.

Mám třídu, která dědí od Control.

Vykreslování probíhá i pomocí API a to gradientním vykreslováním a obdélníkem se zaoblenými rohy.

V designeru mi obsah controlu píše, že nelze vykreslovat, protože je použito api. To by mi nevadilo.

V designeru control umístím na místo naklikám mu size př.: 50,400. Ale při spuštění programu a krokování v konstruktoru, kde se připravují bitmapy pro počáteční vykreslení. Mám stále me.size = 200,200 tudíž i me.width i me.height, které v tu chvíly, ale už potřebuji mít nastavené. Prostě designer nikde nepředává tyto vlastnosti controlu. Je nějaká funkce, která se musí volat, jako např. u formu InicializeComponent i u controlu ?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Spíš by mě zajímalo, na co potřebujete kvůli gradientu P/Invoke.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Protože v compactu není gradientni štětec. Ale v API funkce existuje. Pokud víte o nějakém jiném způsobu, určitě nastuduji a vyzkouším.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Vynikající managed wrapper na GDI+ ve Windows Mobile je zde:

http://community.opennetcf.com/articles/...

Obsahuje i LinearGradientBrush a další věci, které nejsou v Compact Frameworku. Pro kompilaci vyžaduje Windows Mobile 6 Professional SDK.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Ano tento balíček znám a mám ho již delší dobu zakoupený.

Nicméně to není odpověď na mou otázku. Protože to, že se mi obsah komponenty nezobrazuje v designeru mi nevadí.

Má otrázka je jak dostanu hodnoty z designeru již v konstruktoru controlu.

Zjistil jsem, že např.: Size je v konstruktoru vždy 200;200, ale v událostech Paint, Resize .... je již s hodnotou z designeru.

Tudíž bych měl možnost si vytvořit proceduru Inicializace controlu a tu zavolat v události paint jen při prvním spuštění. Ale nezdá se mi to. Správně by asi bylo si všechny prostředky připravit v konstruktoru.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

InitializeComponent je i v ovládacím prvku pro Smart Device. Jakmile do něho přidáte konstruktor, automaticky se tam doplní jeho volání.

Mimochodem pokud tím balíčkem myslíte Smart Devices Framework (snad ještě lepší než samotný Compact Framework), tak ten wrapper na GDI+ na který jsem uváděl odkaz není jeho součástí.

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

Tak to mám někde chybu ve VS, protože mě se inicialize component nepřidá a ani tam jako procedura není. Nicméně děkuji za odpověd. VS zkusím přeinstalovat. Na ten wraper se ještě kouknu.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Spíš bych zkusil nejdříve vytvořit nový čistý testovací Control Library pro Smart Device a zkusit to v něm. Mimochodem jakou verzi a edici Visual Studia používáte?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

VS 2008 Professional Edition

9.0.21022.8 RTM

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nainstalujte si Service Pack 1 pro Visual Studio 2008, pokud ho již nemáte nainstalován.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback