Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Info Coronavirus/Vaccinare vs Fake News

Mașini mici fașneț...

La multi ani @persona695!

La Multi Ani de Sfantul Andrei!
 Trebuie sa economisim energie sau...

That '90s Show (2023 - ...)

Recomandare cablu display-port (p...

Aparat pentru masurare radiatii t...
 Unde vedem parada militara Bucure...

Inregistrare audio fara consimtam...

Cum pun protectie in Google Walle...

Soba din tabla pentru atelier.
 HIT and RUN - (Fuga dupa adevar)

Proiect Erasmus -Vaccin si test pcr

Identificare dioda zenner

Cont SPV pentru PFA?
 

Controll Collection

- - - - -
  • Please log in to reply
13 replies to this topic

#1
cristi_ursu

cristi_ursu

    New Member

  • Grup: Members
  • Posts: 19
  • Înscris: 05.12.2007
Pls help,
Am un form cu 7 labels,4 butons si 3 text boxes.Toate sunt invizibile.
As vrea acum prin metoda "for each control In Me.Controls"
sau prin oricare alta metoda sa pot face vizibile  de ex, 3 lables si 2 butoane si un textbox.
Multumesc anticipat.

#2
macaz

macaz

    Junior Member

  • Grup: Members
  • Posts: 108
  • Înscris: 14.06.2007
Daca cunosti numele controalelor ce te opreste sa le pui proprietatea visible pe true?

#3
cristi_ursu

cristi_ursu

    New Member

  • Grup: Members
  • Posts: 19
  • Înscris: 05.12.2007

 macaz, on 29th June 2011, 05:00, said:

Daca cunosti numele controalelor ce te opreste sa le pui proprietatea visible pe true?
As vrea sa folosesc in acest form mult mai multe controale si anume, cu un buton sa pot sa pornesc alte labels ,butoane sau text boxuri.

#4
macaz

macaz

    Junior Member

  • Grup: Members
  • Posts: 108
  • Înscris: 14.06.2007
Pai si ce, te pomenesti ca ai vreo cateva sute de controale si e greu sa scrii pentru fiecare: control.visible=True, sau tu vrei dintr-un foc sa le pui pe toate pe visible?

#5
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 28,219
  • Înscris: 10.08.2005

 cristi_ursu, on 28th June 2011, 21:52, said:

As vrea sa folosesc in acest form mult mai multe controale si anume, cu un buton sa pot sa pornesc alte labels ,butoane sau text boxuri.
cu atat mai mult, scrii pentru fiecare, dupa caz

#6
cristi_ursu

cristi_ursu

    New Member

  • Grup: Members
  • Posts: 19
  • Înscris: 05.12.2007

 macaz, on 29th June 2011, 06:05, said:

Pai si ce, te pomenesti ca ai vreo cateva sute de controale si e greu sa scrii pentru fiecare: control.visible=True, sau tu vrei dintr-un foc sa le pui pe toate pe visible?
Asa e am aproximativ 68 de controale intr-un form si trebuie sa le grupez.e fff mult de lucru pt. a le face una cate una.
De ex. as vrea ca un buton sa actioneze 8 controale un altul a2 si asa mai departe.

#7
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 28,219
  • Înscris: 10.08.2005
cine a spus ca programarea este usoara si nu necesita munca?

pune-le in frame-uri.

Quote

as vrea ca un buton sa actioneze 8 controale un altul a2 si asa mai departe.
cu atat mai mult trebuie sa lucrezi cate un control pe care dai click si sa-i spui ce sa faca .visible = [BOOLEAN]

Edited by MarianG, 02 July 2011 - 19:45.


#8
macaz

macaz

    Junior Member

  • Grup: Members
  • Posts: 108
  • Înscris: 14.06.2007

 MarianG, on 2nd July 2011, 20:42, said:

pune-le in frame-uri.
evident este cea mai buna solutie, poate enumera direct pe container sau schimba starea de visible pe container si atunci rezolva cu logica pe care o vrea el. Posibil sa nu poata face asta ( controale dispersate pe form, etc.)  si atunci va trebui ori sa scrie kilometri de cod pentru fiecare control ori sa faca niste liste cu controalele care vor trebui activate/dezactivate pe diversele stari.

Presupun ca initiatorul topicului lucreaza in VB.NET

Personal propun un hashtable cu intrari pentru fiecare stare logica, urmand sa returneze o matrice cu controalele care vor fi vizibile in secventa respectiva.
Dupa care enumerand toate intrarile in hashtable, si avand un index care determina starea logica a controalelor componente, poate activa/dezactiva dupa necesitate.

Pare greu dar in realitate este destul de simplu si rapid.

Edited by macaz, 02 July 2011 - 20:51.


#9
cristi_ursu

cristi_ursu

    New Member

  • Grup: Members
  • Posts: 19
  • Înscris: 05.12.2007

 macaz, on 3rd July 2011, 05:18, said:

evident este cea mai buna solutie, poate enumera direct pe container sau schimba starea de visible pe container si atunci rezolva cu logica pe care o vrea el. Posibil sa nu poata face asta ( controale dispersate pe form, etc.)  si atunci va trebui ori sa scrie kilometri de cod pentru fiecare control ori sa faca niste liste cu controalele care vor trebui activate/dezactivate pe diversele stari.

Presupun ca initiatorul topicului lucreaza in VB.NET

Personal propun un hashtable cu intrari pentru fiecare stare logica, urmand sa returneze o matrice cu controalele care vor fi vizibile in secventa respectiva.
Dupa care enumerand toate intrarile in hashtable, si avand un index care determina starea logica a controalelor componente, poate activa/dezactiva dupa necesitate.

Pare greu dar in realitate este destul de simplu si rapid.


Te rog da-mi o idee cum pot sa incep asa ceva.(despre ce index e vorba?)

#10
cristi_ursu

cristi_ursu

    New Member

  • Grup: Members
  • Posts: 19
  • Înscris: 05.12.2007

 cristi_ursu, on 9th July 2011, 18:57, said:

Te rog da-mi o idee cum pot sa incep asa ceva.(despre ce index e vorba?)
Lucrez cu vb 2010 nu exista index.

#11
macaz

macaz

    Junior Member

  • Grup: Members
  • Posts: 108
  • Înscris: 14.06.2007
Ai posibilitatea sa asezi controalele pe grupe? de ex. pui un panel pe form iar in acel panel pui toate controalele care te intereseaza a fi vizibile/invizibile apoi alt panel cu alta grupa de controale si tot asa.
Si faci panelx.visible=false/true si devine vizibila/invizibila toata grupa aia de controale. Eventual pune un screenshot cu fereastra in cauza sa vedem si noi despre ce este vorba.

Edited by macaz, 09 July 2011 - 13:19.


#12
cristi_ursu

cristi_ursu

    New Member

  • Grup: Members
  • Posts: 19
  • Înscris: 05.12.2007

 macaz, on 9th July 2011, 21:46, said:

Ai posibilitatea sa asezi controalele pe grupe? de ex. pui un panel pe form iar in acel panel pui toate controalele care te intereseaza a fi vizibile/invizibile apoi alt panel cu alta grupa de controale si tot asa.
Si faci panelx.visible=false/true si devine vizibila/invizibila toata grupa aia de controale. Eventual pune un screenshot cu fereastra in cauza sa vedem si noi despre ce este vorba.
Partea rea este ca ,controalele sunt dispersate pe intreg formul.
Am mai incercat sa folosesc metoda

For Each ctl In Me.Controls
            If TypeOf ctl Is Button Then
                ctl.Visible = True
            End If
        Next
dar din pacate nu pot sa aleg controalele pe care vreau sa le folosesc.

#13
macaz

macaz

    Junior Member

  • Grup: Members
  • Posts: 108
  • Înscris: 14.06.2007
Ok, o sa-ti arat doua metode. Prima se bazeaza pe o lista cu grupe de controale, a doua se bazeaza pe un marcaj al fiecarui control.

Metoda 1.

Declari global:
Private list As New Hashtable
In form_load initializezi lista:
		list.Add(0, {TextBox1, TextBox2, TextBox3, TextBox4, TextBox5, TextBox6})
		list.Add(1, {TextBox7, TextBox8, TextBox9, TextBox10, TextBox11, TextBox12})
		list.Add(2, {TextBox13, TextBox14, TextBox15, TextBox16, TextBox17, TextBox18})
		list.Add(3, {TextBox19, TextBox20, TextBox21, TextBox22, TextBox23, TextBox24})
		list.Add(4, {TextBox25, TextBox26, TextBox27, TextBox28, TextBox29, TextBox30})
		list.Add(5, {TextBox31, TextBox32, TextBox33, TextBox34, TextBox35, TextBox36})
		list.Add(6, {TextBox37, TextBox38, TextBox39, TextBox40, TextBox41, TextBox42})
		list.Add(7, {TextBox43, TextBox44, TextBox45, TextBox46, TextBox47, TextBox48})
aici adaptezi dupa nevoile tale, eu am pus 8 grupe(0-7) de cate 6 controale, tu pui cate grupe vrei si cu numele controalelor tale(o grupa poate contine un numar variabil de controale)

Adaugi in cod urmatoarea procedura:
   Private Sub Enable(ByVal index As Integer)
		For i As Integer = 0 To list.Count - 1
			For Each c As Control In list(i)
				c.Visible = (i = index)
			Next
		Next
	End Sub
procedura asta primeste ca argument un indicator privind grupa de controale care va trebui sa fie vizibila, itereaza lista de controale, pune pe vizibil grupa corespunzatoare indexului primit iar pe celelalte le pune pe invizibil.

In cod, unde ai nevoie, apelezi procedura astfel:
Enable(2)'pune pe vizibil grupa nr.2

Metoda 2.

Renunti la acea lista si adaugi fiecarui control un marcaj. Marcajul consta in atribuirea unei valori numerice proprietatiii Tag al fiecarui control (te uiti in proprietatile fiecarui control si la Tag  pui aceiasi valoare numerica ca sa le grupezi).

Procedura se modifica putin:
 Private Sub Enable(ByVal index As Integer)
		For Each c As Control In Me.Controls
			If c.Tag IsNot Nothing Then c.Visible = (CInt(c.Tag) = index)
		Next
	End Sub
Procedura o apelezi ca cea de mai sus. Face acelasi lucru numai ca enumera toate controalele din form si daca gaseste o valoare numerica in proprietatea Tag atunci vede pe ce grupa este si activeaza/dezactiveaza in consecinta.

Succes!

Edited by macaz, 09 July 2011 - 14:44.


#14
cristi_ursu

cristi_ursu

    New Member

  • Grup: Members
  • Posts: 19
  • Înscris: 05.12.2007

 macaz, on 9th July 2011, 23:04, said:

Ok, o sa-ti arat doua metode. Prima se bazeaza pe o lista cu grupe de controale, a doua se bazeaza pe un marcaj al fiecarui control.

Metoda 1.

Declari global:
Private list As New Hashtable
In form_load initializezi lista:
		list.Add(0, {TextBox1, TextBox2, TextBox3, TextBox4, TextBox5, TextBox6})
		list.Add(1, {TextBox7, TextBox8, TextBox9, TextBox10, TextBox11, TextBox12})
		list.Add(2, {TextBox13, TextBox14, TextBox15, TextBox16, TextBox17, TextBox18})
		list.Add(3, {TextBox19, TextBox20, TextBox21, TextBox22, TextBox23, TextBox24})
		list.Add(4, {TextBox25, TextBox26, TextBox27, TextBox28, TextBox29, TextBox30})
		list.Add(5, {TextBox31, TextBox32, TextBox33, TextBox34, TextBox35, TextBox36})
		list.Add(6, {TextBox37, TextBox38, TextBox39, TextBox40, TextBox41, TextBox42})
		list.Add(7, {TextBox43, TextBox44, TextBox45, TextBox46, TextBox47, TextBox48})
aici adaptezi dupa nevoile tale, eu am pus 8 grupe(0-7) de cate 6 controale, tu pui cate grupe vrei si cu numele controalelor tale(o grupa poate contine un numar variabil de controale)

Adaugi in cod urmatoarea procedura:
   Private Sub Enable(ByVal index As Integer)
		For i As Integer = 0 To list.Count - 1
			For Each c As Control In list(i)
				c.Visible = (i = index)
			Next
		Next
	End Sub
procedura asta primeste ca argument un indicator privind grupa de controale care va trebui sa fie vizibila, itereaza lista de controale, pune pe vizibil grupa corespunzatoare indexului primit iar pe celelalte le pune pe invizibil.

In cod, unde ai nevoie, apelezi procedura astfel:
Enable(2)'pune pe vizibil grupa nr.2

Metoda 2.

Renunti la acea lista si adaugi fiecarui control un marcaj. Marcajul consta in atribuirea unei valori numerice proprietatiii Tag al fiecarui control (te uiti in proprietatile fiecarui control si la Tag  pui aceiasi valoare numerica ca sa le grupezi).

Procedura se modifica putin:
 Private Sub Enable(ByVal index As Integer)
		For Each c As Control In Me.Controls
			If c.Tag IsNot Nothing Then c.Visible = (CInt(c.Tag) = index)
		Next
	End Sub
Procedura o apelezi ca cea de mai sus. Face acelasi lucru numai ca enumera toate controalele din form si daca gaseste o valoare numerica in proprietatea Tag atunci vede pe ce grupa este si activeaza/dezactiveaza in consecinta.

Succes!
Suuper merge :)
Multumesc mult .

Anunturi

Bun venit pe Forumul Softpedia!

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate