Název Picturebox   zodpovězená otázka

VB.NET, Algoritmy

Dobrý den, máme aplikaci, která vyhodnocuje stav 3x128 informací a výstup by měl být grafický ANO-NE. Je možné nějakým způsobem nazvat třeba Picturebox(1), Picturebox(2)... a podobně s indexem, aby bylo možné jejich atributy upravovat v cyklu a nemuselo se to všechno manuálně vypisovat?

Děkuji za pomoc a radu.

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

Ano, vložte na formulář jeden PictureBox, zkopírujte jej do schránky a vložte. Visual Basic se zeptá, jestli z prvků chcete vytvořit kolekci. Tím k PictureBoxům můžete přistupovat přes PictureBox1(0) atd.

Anebo si PictureBoxy vygenerujte dynamicky kódem.

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

Dobrý den, zkoušel jsem to podle Vás zkopírovat a vložit, ale při vložení se to neptá na nic, prostě se vloží další objekt a je mu automaticky přiřazeno jméno s dalším číslem - Picturebox2,3,4,...

K dynamickém vygenerování Pictureboxů jsem se bohužel jako začátečník zatím nedostal, zkouším hledat, zatím bez výsledků.

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

Pokouším-li se například o toto

DIM policko(5) As New PictureBox, vypíše mně to chybu, že pole není možné dimenzovat pomocí NEW. Pokud tam NEW nedám, při běhu programu to zase definování pomocí NEW chce. Poradíte prosí, co dělám špatně a jak by to mělo být? Děkuji

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

Dobrý den, pokud používáte VB6 tak by měla fungovat rada Tomáše Hercega. Zkuste ještě nastavit vlastnost index a další vložené pictureboxy budou automaticky indexovány.

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

Aha, takže začátek problému je zřejmě tady, používám

Microsoft Visual Studio 2008 Version 9.0.21022.8 RTM Microsoft .NET Framework Version 3.5 Installed Edition: Enterprise Microsoft Visual Basic 2008 a chybně jsem zadal dotaz do fóra pro VB6. Sorry

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

V tom případě je jediná možnost vytvořit komponenty dynamicky.

Dim obrazky(5) As PictureBox   'vytvořit pole PictureBoxů
For i As Integer = 0 To 5
    obrazky(i) = New PictureBox()  'New je potřeba zavolat pro každý prvek pole
    'nastavíme komponentě vlastnosti
    obrazky(i).Size = New Size(100, 100)
    obrazky(i).Top = 20
    obrazky(i).Left = i * 100

    'přidáme ji na formulář
    Me.Controls.Add(obrazky(i))
Next
nahlásit spamnahlásit spam 0 odpovědětodpovědět

Díky za pomoc a věnovaný čas. Tuto variantu jsem už zkoušel a pořád mně to nešlo, do Vaší nápovědy jsem si myslel, že je něco špatně v kódu. Po této nápovědě jsem zkoušel znovu, až jsem konečně přišel na to, kde dělám chybu.

Měl jsem špatně vytvořenou instanci objektu obrazky(5), v proceduře, kde jsem ji chtěl používat, nebyla viditelná, pomohlo definování jako public.

Děkuji, označte prosím jako vyřešeno.

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