CF, control a property ve VS2008   zodpovězená otázka

VB.NET, Compact Framework

CF 2.0

VS2008 Pro

Dobrý den,

chtěl bych se zeptat jak dostat vlastní enumeraci u controlu do propertygridu VS2008.

V projektu musím mít xmta soubor, kde je pouze název třídy controlu a attr. DesktopCompatible (zpřístupní vlastnosti u vs propertygridu).

xmta:

<?xml version="1.0" encoding="utf-16"?>
<Classes xmlns="http://schemas.microsoft.com/VisualStudio/2004/03/SmartDevices/XMTA.xsd">
  <Class Name="WinCe2Support.UserControls.ImageButton">
    <DesktopCompatible>true</DesktopCompatible>
    <DesignTimeVisible>true</DesignTimeVisible>
  </Class>
</Classes>

Pokud u controlu mám frameworkové vlastnosti jako:

bool, int, Image .....

Tak se normálně zobrazují v propertygridu.

Pokud použiji enumeraci:

a) DialogResult - OK je vidět

b) Vlastní enumeraci - Tak se mi nikdy nechce zobrazit.

Enumerace:

namespace WinCe2Support.Enums
{
    /// <summary>
    /// Horizontal aligment orientation
    /// </summary>
    [Serializable]
    [ComVisible(true)]
    public enum EHorizontalAligment
    {
        Center,
        Left,
        Right
    }
}

snažil jsem se najít jaký je rozdíl mezi DialogResult a mojí, ale nic jsem nenašel.

Věděl by někdo v čem je chyba ?

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

Pokud control a enumeraci definuji ve spouštěcí assembly, tak to funguje jak má i bez xmta souboru.

To se mi ovšem nehodí, potřeboval bych si některé controly z minulých projektů shrmáždit v jedné assembly a tu referencovat v nových projektech.

Dá se nějak zajistit, abych mohl mít control i datový typ(který chci zobrazit v propertygridu) v jiné než spouštěcí assembly ?

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

- K čemu je xmta soubor?

- Proč tam jsou atributy [Serializable], [ComVisible(true)]?

Ve výchozím stavu se položky výčtového typu zobrazují jako jejich text, ovšem lze udělat i načítání z Resources včetně lokalizace.

http://vbnet.cz/snippet--35-lokalizovate...

V Compact Frameworku jsem to ale nikdy nezkoušel, je dost možné, že to tam nepůjde, protože má spoustu omezení.

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

Pokud byl control v jiné než spouštěcí assembly, tak se mnou přidané vlastnosti nezobrazovaly vůbec.

Po přidání xmta ( http://dvanderboom.wordpress.com/2008/03... ) se zobrazily vlastnosti s frameworkovými typy.

Ale mnou definovaná enumerace ne.

Atributy, které zde uvádíte jsem zkoušel už ze zoufalosti, protže to jsou podle dokumentace jediné rozdíly mezi frameworkovými enumeracemi (např. DialogResult nebo jiné) oproti mnou vytvořené enumeraci.

V plném frameworku to funguje jak má, v compactu to asi nefunguje.

Před chvílí jsem četl odpověď na dotaz (stejný problém) odpověď nebyla, jen konstatování, že je to známý problém :(.

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

Compact Framework vám přinese ještě mnoho nepříjemných překvapení. Věci, které v normálním Frameworku považujete za úplnou elementární věc v Compact Frameworku nemusí fungovat vůbec.

Napíšu vám alespoň věci, bez kterých se při mobilním vývoji neobejdu a které velmi usnadňují práci:

Různé verze Compact Frameworku a jimi podporovaná zařízení:

http://msdn.microsoft.com/en-us/library/...

Příklady pro Smart Device Framework:

http://blog.opennetcf.com/ctacke/Categor...,category,SDFSamples.aspx

Dokumentace k API pro vývoj Android aplikací ve VB.NET/C#:

http://docs.xamarin.com/mono/api

Komunikace PC-mobilní zařízení pomocí ActiveSync:

http://rapi.codeplex.com/releases/view/2...

FTP klient pro Compact Framework:

http://ftp.codeplex.com/releases/view/49...

Komunikace sériovým portem na mobilním zařízení:

http://serial.codeplex.com/releases/view...

Naprosto dokonalý FTP klient pro Compact Framework:

http://www.remobjects.com/free.aspx

Práce s konfiguračními soubory .config jako v plném Frameworku:

http://blog.opennetcf.com/ctacke/Comment...,guid,6b3c3da9-35f5-49ad-8432-b540b1bd5f2e.aspx

Bezkonkurenční Smart Device Framework:

http://www.opennetcf.com/library/sdf/

Použití GDI+ na mobilních zařízeních:

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

Vzdálená plocha pro mobilní zařízení:

http://www.mymobiler.com/windowsmobile.h...

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

V mém projektu jsem na žádost zaměstnavatele nepoužil žádné komponenty třetí strany. (I když opennetcf již delší dobu mám).

Microsoft odvedl při vývoji designeru visual studia 2008 u smart device projektů práci, za kterou bych někoho nakopal do ryti.

Příklad problému:

- Založím si projekt pro Windows CE, do projektu si napíšu enumerace pro horizontální (i když ta tam je) a vertikální zarovnání.

- Vytvořím si control kterému implementuji tyto enumerace a přepíšu logiku vykreslení controlu spolu s nějakými eventy jako onresize, onmousedown, onmouseup

- Zatím vše OK. Designer ukazuje to co si napíšu a případě nějaké chyby vyhodí chybu celého formu, nebo jen controlu (vpořádku mám chybu, najdu a opravím).

- Control vypadá přesně dle zadání, tak pokračují dál v projektu.

- Napsal jsem si nějakou Bussines logiku, vlastní ukládání do XML a jiné pracovní objekty, které absolutně nesouvisí s controlem, a nikde se v nich control (jako třída) nevyskytuje.

- Po buildu, ejhle mnou vytvořený control se zobrazí jako obdélník cca 200x200 s názvem třídy controlu (žádná grafika). Původní controly Visual studia stále fungují !!!

A z tohohle stavu již není cesty ven.

Z googlu jsem vyčetl, že obvykle stačí přidat xmta soubor a každému controlu nastavit <DesktopCompatible>true</DesktopCompatible>. U těch kterým to nepomohlo již nejsou odpovědi nebo jsou k dispozici mrtvé linky.

Prostě konečná.

Mě nezbylo nic jiného než mít dva projekty, v jednom vytvářet controly a kód pak překopírovat do finálního. A designování provádět ne přes designer, ale z kódu. Což citelně prodlužuje vývoj (a pochybuji, že mi to někdo zaplatí :))

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

- Máte nainstalován poslední Service Pack pro VS2008?

- Nevytvářejte vlastní výčtové typy, pokud už ve CFW jsou a dají se použít.

- Vlastnímu User Control se vždy vyhýbám v maximální možné míře, zvlášť v CFW bych ho nedělal v žádném případě. Zcela jistě ho bude možné nahradit standardními ovládacími prvky.

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

Ano servispack se instaloval s aktualizacemi windows.

Výčtový typ bych stejně jeden musel použít, a ten druhý (který jsem dělat nemusel) je kvůli logice nastavení controlu - uznávám je tam navíc.

Př.:

Jde o to, že projekt není určen na mobilní zařízení, ale jako průmyslová vizualizace.

Potřeboval jsem vytvořit Button s obrázkem a symbolickým popisem.

Tyto buttony by byly v modifikaci použité na různých místech v projektu.

Kombinace obrázek vpravo / text vlevo nebo naopak a to samé může být použito i vertikálně.

Můj control měl enumeracemi nastavitelné umístění obrázku (vertikálně a horizontálně) a textu také.

Vizuálně něco jako toto:

http://www.codeproject.com/Articles/1642...

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