![]() |
Second Opinion
Folosind serviciul second opinion ne puteți trimite RMN-uri, CT -uri, angiografii, fișiere .pdf, documente medicale. Astfel vă vom putea da o opinie neurochirurgicală, fără ca aceasta să poată înlocui un consult de specialitate. Răspunsurile vor fi date prin e-mail în cel mai scurt timp posibil (de obicei în mai putin de 24 de ore, dar nu mai mult de 48 de ore). Second opinion – Neurohope este un serviciu gratuit. www.neurohope.ro |
Controll Collection
Last Updated: Jul 09 2011 19:57, Started by
cristi_ursu
, Jun 28 2011 20:04
·
0

#1
Posted 28 June 2011 - 20:04

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
Posted 28 June 2011 - 20:30

Daca cunosti numele controalelor ce te opreste sa le pui proprietatea visible pe true?
|
#3
Posted 28 June 2011 - 20:52

#4
Posted 28 June 2011 - 21:35

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
Posted 30 June 2011 - 16:27

#6
Posted 01 July 2011 - 15:58

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? De ex. as vrea ca un buton sa actioneze 8 controale un altul a2 si asa mai departe. |
#7
Posted 02 July 2011 - 19:42

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. Edited by MarianG, 02 July 2011 - 19:45. |
#8
Posted 02 July 2011 - 20:48

pune-le in frame-uri. 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
Posted 09 July 2011 - 10:27

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
Posted 09 July 2011 - 12:05

#11
Posted 09 July 2011 - 13:16

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
Posted 09 July 2011 - 13:57

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. 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
Posted 09 July 2011 - 14:34

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 HashtableIn 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 Subprocedura 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 SubProcedura 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
Posted 09 July 2011 - 19:57

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 HashtableIn 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 Subprocedura 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 SubProcedura 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! ![]() Multumesc mult . |
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users