Využití služeb formuláře   otázka

VB.NET

Dobrý den, mám problém. Muj program načte knihovny DLL s funkcemy, vše funguje jak má až na jednu drobnost, chtěl bych z knihovny DLL zavolat přehravač umístěný na Form1 a na tom samem formuláři i vypsat kontrolu do Label1.text ale to se mi nedaří. Nevíte prosím někdo jak na to?

(přehravač i label jsou podtrhavány v kodu knihovny což je logicke jelikož ona neví že to na formuláři je já jen nevím jak ji to zdělit, pokut to jde)

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

Problém je pravděpodovně v tom, že komponenty jsou standardně na formuláři deklarované jako Friend. Takto označené vlastnosti jsou viditelné pouze v rámci stejné assembly. Přidejte formuláři public vlastnosti, které budou vracet požadované komponenty (přehrávač a label).

Příklad:

Public ReadOnly Property PublicLabel() As Label
  Get
    Return LabelTest
  End Get
End Property

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

Obávám se že mi to nefunguje, po prvotnim neuspěchu jsem to zkoušel i jinde ale vysledek stejnej. Pro upřesnění aby nedošlo k nedorozumění, tento kod ma byt umístěn ve formuláři, knihovně co obsluhuje pluginy nebo v samotnem pluginu? (nevyšlo mi ani jedno z toho)

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

Kód byl samozřejmě pouze příklad. Musíte ho upravit, aby vracel požadovanou komponentu. Má být umístěn ve formuláři. Netuším jakým tam máte systém pluginů, o tom jste v původním dotazu nic nepsal.

Jaký je výsledek? Visual Studio podtrhne odkaz na prehrávač a label? Tam, kde se na tyto vlastnosti odkazujete, tak musíte použít tyto nově vytvořené public vlastnosti (proto tam jsou). Jakou chybu přesně hlásí Visual Studio?

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

Ano, label i wmp je podtržen a klasicka hlaska "is not declared".

Netuším jak na to, toto dělam poprvé. Mám aplikaci (exe) a ta obsluhuje pluginy, je to upraveny kod z přikladu zde na vbnet.cz = program->PlugInterf->Plugin

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

Napište mi, co jste přesně přidal do formuláře a jakým způsobem se potom v aplikaci odkazujete na label a wmp.

Není problém v tom, že v aplikaci pracuje s proměnnou, která je deklarována jako obecné rozhraní pluginu? Potom samozřejmě kompilátor tyto přidané vlastnosti nevidí. Buď musíte proměnnou přetypovat na třídu Form1, nebo přidat tyto vlastnosti do rozhraní pluginu. Bez znalosti kódu a jeho smyslu se nedá konkrétněji takto na dálku poradit.

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

Z kodu toho moc vykoukat nepujde, použil jsem vaš kod ve form1, upravil jsem jej na label1 (to vypada v pořadku bez chyby ale wmp takto upravit nešel) a volám jej klasicky v pluginu jako Label1.text = ....

Zde bude nejspiš ta chyba, začinam přemyšlet nad možnosti jestli se da v knihovne DLL vytvořit wmp, tim padem by nemusel být na formuláři. Otazkou je ale jestli by rychlost kodu byla stejná nebo ne...

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

Znovu: Jak jste pojmenoval veřejné vlastnosti, které jse přidal do formuláře? Předpokládam, že Label1 se jmenuje komponenta. Pojmenoval jste jí jako v mém příkladu PublicLabel1?

Na label se nemůžete odkazovat Label1.text ... Musíte se odkazovat přes proměnnou, kde máte form1 a tato proměnná musí být typu form1 (jak jsem psal v minulé odpovědi). Takže nějak takto:

form1.PublicLabel1.text = ...

Bez náhledu do zdrojového kódu se asi nepohneme. Můžete mi ho poslat mailem - masek <zavináč> skeleton <tečka> cz).

Mimchodem máte dost nepřehledné pojmenování tříd a vlastností (form1, label1). Nechápu jak se v tom můžete vyznat.

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

Tohle není nutné, komponenátm se dá nastavit, jestli mají být jako Friend nebo jako Public někde v okně vlastností.

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