Form z proměnné   zodpovězená otázka

VB.NET, WinForms, Databáze

Dobrej,

nedaří se mi přijít na toto:

od někud, např. z SQL přijmu název Formu, který má být spuštěn,

vytvořit novou instanci tohoto formu a spustit ho.

REM Název formu z SQL
Dim fofo As String = Firmy_vyber.Rows(0).Item("Form")
Dim frm As New fofo
frm.ShowDialog()

ALE POZOR, nefunguje to. Není mi jasné jak zabezpečit, aby byla vzata v potaz hodnota uložená v proměné.

Díky za radu.

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

Technika, kterou chcete použít se nazývá makrosubstituce. Pokud je mi známo, VB.NET tuto funkčnost přímo nepodporuje.

Je nutné sáhnout po nějakém jiném řešení. Často se v této souvislosti používá ActiveX komponenta MSSCRIPT.OCX. Ta pochází z dílny Microsoftu.

Pokud ji někde ve Windowsech již nemáte, zkuste "zagooglit" a určitě ji najdete včetně návodu či popisu, jak ji správně použít.

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

Pokud chcete vytvořit instanci objektu (formuláře) z názvu jeho typu (uloženém jako String například v SQL Serveru), můžete postupovat takto:

'Úplný název typu načtený z SQL Serveru
Dim typeName As String = "WindowsApplication1.Form2"
'Vytvoření instance formuláře Form2
Dim obj As Object = Activator.CreateInstance(Type.GetType(typeName))
'Instance třídy Form2 bude uložena v proměnné typu Object
'takže ji buď musíte přetypovat na požadovaný typ nebo
'použít Late Binding (nedoporučuji)
Dim form2 As Form = DirectCast(obj, Form2)

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

Chvíli jsem s tím zápasil,

protože jsem nepřikládal jsem správnou důležitost velikosti písma a ona je "PODSTATNÁ" v názvu typu!

Jenom malinká kosmetiscká úpravička:

Dim form2 As Form = DirectCast(obj, Form)

Jinak děkuji, pomohlo na 100%.

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