Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Группировка и использование похожих элементов Добавлено: 14.02.10 14:48  

Автор вопроса:  V1RR | Web-сайт: V1RR.us | ICQ: 636580 
Суть в чем. В проекте мне нужно частенько менять свойства элементов т.е. visible, enabled, locked и т.п.
Можно ли например сгруппировать как-то в виде какой-то переменной группу объектов как в массив, чтобы потом обращаться к ней для изменения свойств например
s.visible=true
при этом переменная s включает в себя группу текстовых полей например.

Вот такой вопрос :)

Ответить

  Ответы Всего ответов: 15  

Номер ответа: 1
Автор ответа:
 ηikolaŠ~rus



ICQ: 604058327 

Вопросов: 50
Ответов: 287
 Профиль | | #1 Добавлено: 14.02.10 15:51
А не пробовал например
  1. For i=0 to 10
  2. Text1(i).Visible = true
  3. next i

Мне кажется так проще, чем группировать их.

Ответить

Номер ответа: 2
Автор ответа:
 V1RR



ICQ: 636580 

Вопросов: 8
Ответов: 29
 Web-сайт: V1RR.us
 Профиль | | #2
Добавлено: 14.02.10 16:04
а если мне нужно разные свойства изменять в течение программы (это еще может изменяться в процессе)
Так многовариантов циклов не придумать :) Даже если циклы запихнуть в процедуры и вызывать :)

Ответить

Номер ответа: 3
Автор ответа:
 ηikolaŠ~rus



ICQ: 604058327 

Вопросов: 50
Ответов: 287
 Профиль | | #3 Добавлено: 14.02.10 16:20
А что у тебя за програмка что такое надо делать?

Ответить

Номер ответа: 4
Автор ответа:
 Just



Вопросов: 4
Ответов: 330
 Профиль | | #4 Добавлено: 15.02.10 09:39
V1RR
вчера прочитал твой пост и вспомнил что сам хотел давно сделать похожее ченить
короче написал уже прогу и отправил сюда исходник
так что через денек второй погляди в исходниках должен появиться
ну или если срочно могу скинуть тебе напрямую...

Ответить

Номер ответа: 5
Автор ответа:
 V1RR



ICQ: 636580 

Вопросов: 8
Ответов: 29
 Web-сайт: V1RR.us
 Профиль | | #5
Добавлено: 16.02.10 19:34
Это не срочно :) Но будет интересно посмотреть :)

Ответить

Номер ответа: 6
Автор ответа:
 Just



Вопросов: 4
Ответов: 330
 Профиль | | #6 Добавлено: 16.02.10 19:55
ну тогда смотри )

вообще я обычно называю контролы так:
TextBox - txtName
Label - lblName
и тд
но для наглядности в примере использовал первые 3 символа контролов с названиями по умолчанию

вот весь исходник что я скинул на этот сайт! тока без формы... )

форма:
  1.  
  2. 'Программа перечисляет все контролы на форме, сравнивая
  3. 'первые три символа имени контролов с параметром поиска,
  4. 'если совпадает, тогда производит заданное действие.
  5.  
  6.  
  7. 'использование:
  8. 'SetControls форма, "первые три символа имени контрола", "действие", "параметр действия"
  9.  
  10. 'действия:
  11. 'cEnabled - разрешить/запретить
  12. 'cVisible - показать/спрятать
  13. 'cFont - указать шрифт
  14. 'cBackColor - установить цвет фона
  15.  
  16.  
  17. Option Explicit
  18.  
  19.  
  20. Private Sub Form_Load()
  21. ' пример вызова функции возвращая переменную
  22. Dim bRet As Boolean
  23. bRet = SetControls(Me, "Com", cFont, "Comic Sans MS")
  24. If Not bRet Then MsgBox "Функция завершена с ошибкой!", vbCritical
  25. End Sub
  26.  
  27.  
  28. Private Sub cmdFontAndBackColor_Click()
  29. SetControls Me, "Tex", cFont, "Arial"
  30. SetControls Me, "Lab", cFont, "Arial"
  31. SetControls Me, "HSc", cFont, "Arial"
  32. SetControls Me, "Dri", cFont, "Arial"
  33. SetControls Me, "Com", cFont, "Arial"
  34. SetControls Me, "Lis", cFont, "Arial"
  35. SetControls Me, "Pic", cFont, "Arial"
  36.  
  37. SetControls Me, "Tex", cBackColor, vbGreen
  38. SetControls Me, "Lab", cBackColor, vbGreen
  39. SetControls Me, "HSc", cBackColor, vbGreen
  40. SetControls Me, "Dri", cBackColor, vbGreen
  41. SetControls Me, "Com", cBackColor, vbGreen
  42. SetControls Me, "Lis", cBackColor, vbGreen
  43. SetControls Me, "Pic", cBackColor, vbGreen
  44. End Sub
  45.  
  46. Private Sub cmdFontAndBackColor2_Click()
  47. SetControls Me, "Tex", cFont, "Comic Sans MS"
  48. SetControls Me, "Lab", cFont, "Comic Sans MS"
  49. SetControls Me, "HSc", cFont, "Comic Sans MS"
  50. SetControls Me, "Dri", cFont, "Comic Sans MS"
  51. SetControls Me, "Com", cFont, "Comic Sans MS"
  52. SetControls Me, "Lis", cFont, "Comic Sans MS"
  53. SetControls Me, "Pic", cFont, "Comic Sans MS"
  54.  
  55. SetControls Me, "Tex", cBackColor, vbRed
  56. SetControls Me, "Lab", cBackColor, vbRed
  57. SetControls Me, "HSc", cBackColor, vbRed
  58. SetControls Me, "Dri", cBackColor, vbRed
  59. SetControls Me, "Com", cBackColor, vbRed
  60. SetControls Me, "Lis", cBackColor, vbRed
  61. SetControls Me, "Pic", cBackColor, vbRed
  62. End Sub
  63.  
  64.  
  65. Private Sub cmdDisabled_Click()
  66. SetControls Me, "Tex", cEnabled, False
  67. SetControls Me, "Lab", cEnabled, False
  68. SetControls Me, "HSc", cEnabled, False
  69. SetControls Me, "Dri", cEnabled, False
  70. SetControls Me, "Com", cEnabled, False
  71. SetControls Me, "Lis", cEnabled, False
  72. SetControls Me, "Pic", cEnabled, False
  73. End Sub
  74.  
  75. Private Sub cmdEnabled_Click()
  76. SetControls Me, "Tex", cEnabled, True
  77. SetControls Me, "Lab", cEnabled, True
  78. SetControls Me, "HSc", cEnabled, True
  79. SetControls Me, "Dri", cEnabled, True
  80. SetControls Me, "Com", cEnabled, True
  81. SetControls Me, "Lis", cEnabled, True
  82. SetControls Me, "Pic", cEnabled, True
  83. End Sub
  84.  
  85.  
  86. Private Sub cmdHideAll_Click()
  87. SetControls Me, "Tex", cVisible, False
  88. SetControls Me, "Lab", cVisible, False
  89. SetControls Me, "HSc", cVisible, False
  90. SetControls Me, "Dri", cVisible, False
  91. SetControls Me, "Com", cVisible, False
  92. SetControls Me, "Lis", cVisible, False
  93. SetControls Me, "Pic", cVisible, False
  94. End Sub
  95.  
  96. Private Sub cmdShowAll_Click()
  97. SetControls Me, "Tex", cVisible, True
  98. SetControls Me, "Lab", cVisible, True
  99. SetControls Me, "HSc", cVisible, True
  100. SetControls Me, "Dri", cVisible, True
  101. SetControls Me, "Com", cVisible, True
  102. SetControls Me, "Lis", cVisible, True
  103. SetControls Me, "Pic", cVisible, True
  104. End Sub



модуль:
  1.  
  2. Option Explicit
  3.  
  4. Public Const cEnabled = 1&
  5. Public Const cVisible = 2&
  6. Public Const cFont = 3&
  7. Public Const cBackColor = 4&
  8.  
  9. Private bErr As Boolean
  10.  
  11.  
  12. Public Function SetControls(xForm As Form, strType As String, strOperation As String, strParam As String) As Boolean
  13. On Error GoTo xErr
  14. Dim lCount As Long
  15. strType = LCase(strType)
  16.  
  17.   lCount = xForm.Controls.Count
  18.   For lCount = 0 To xForm.Controls.Count - 1
  19.      If GetName(xForm, lCount) = strType Then SelectCase xForm, lCount, strOperation, strParam
  20.   Next lCount
  21.   
  22. If Not bErr Then SetControls = True
  23. Exit Function
  24. xErr:
  25. bErr = True
  26. 'MsgBox "Ошибка!", vbCritical, "SetControls"
  27. Resume Next
  28. End Function
  29.  
  30.  
  31. Private Function GetName(xForm As Form, lCount As Long) As String
  32. On Error Resume Next
  33.   GetName = LCase(Left$(xForm.Controls(lCount).Name, 3&))
  34. End Function
  35.  
  36.  
  37. Private Sub SelectCase(xForm As Form, lCount As Long, strOperation As String, strParam As String)
  38. On Error GoTo xErr
  39.  
  40.  Select Case strOperation
  41.  
  42.     Case cEnabled
  43.         xForm.Controls(lCount).Enabled = strParam
  44.         
  45.     Case cVisible
  46.         xForm.Controls(lCount).Visible = strParam
  47.         
  48.     Case cFont
  49.         xForm.Controls(lCount).Font = strParam
  50.         
  51.     Case cBackColor
  52.         xForm.Controls(lCount).BackColor = strParam
  53.         
  54.     Case Else
  55.         bErr = True
  56.         'MsgBox "Действие не найдено!", vbCritical, "SetControls"
  57.  
  58.  End Select
  59.  
  60. Exit Sub
  61. xErr:
  62. bErr = True
  63. 'MsgBox "Действие не поддерживается!", vbCritical, "SetControls"
  64. Resume Next
  65. End Sub



p.s. обрати внимания что некоторые контролы не поддерживают определенные свойства

Ответить

Номер ответа: 7
Автор ответа:
 ηikolaŠ~rus



ICQ: 604058327 

Вопросов: 50
Ответов: 287
 Профиль | | #7 Добавлено: 16.02.10 20:37
Just
Жди.....
Может через годик придет!!!
Сайт забит примерами наверно,потому что я тоже не одну прогу пытался сюда отправить!

Ответить

Номер ответа: 8
Автор ответа:
 Just



Вопросов: 4
Ответов: 330
 Профиль | | #8 Добавлено: 16.02.10 20:45
2 nikolas-rus

ага )
мне уже прислали письмо на английском что рассмотр моего исходника задерживается, поэтому и выложил исходник в форуме

кстати хорошо что хоть уведомление прислали на английском...
когда регился мне пришло письмо (логин\пароль) с каракулями ))
наверное была попытка на русском рассказать мне о всех прелестях сайта ))

Ответить

Номер ответа: 9
Автор ответа:
 ηikolaŠ~rus



ICQ: 604058327 

Вопросов: 50
Ответов: 287
 Профиль | | #9 Добавлено: 16.02.10 21:00
=))))

Ответить

Номер ответа: 10
Автор ответа:
 ηikolaŠ~rus



ICQ: 604058327 

Вопросов: 50
Ответов: 287
 Профиль | | #10 Добавлено: 16.02.10 21:05
А все-равно жалко что, нельзя сюда прогу отправить(((

Ответить

Номер ответа: 11
Автор ответа:
 AWP



ICQ: 345685652 

Вопросов: 96
Ответов: 1212
 Web-сайт: xawp.narod.ru
 Профиль | | #11
Добавлено: 18.02.10 15:56
Можно массив Хендлов сделать или адресов переменных, но нужны Api функции.

Ответить

Номер ответа: 12
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #12
Добавлено: 18.02.10 18:54
AWP, можно сделать коллекцию объектов, тогда апи не надо

Ответить

Номер ответа: 13
Автор ответа:
 AWP



ICQ: 345685652 

Вопросов: 96
Ответов: 1212
 Web-сайт: xawp.narod.ru
 Профиль | | #13
Добавлено: 19.02.10 03:45
коллекцию объектов
Это как?

Ответить

Номер ответа: 14
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #14
Добавлено: 19.02.10 20:45
AWP, ну как обычно, стандартная коллекция
Dim col as new collection
col.add Text1
col.add Text2
col.add Text3
типа того, а потом обращаешься к элементам коллекции в цикле

Ответить

Номер ответа: 15
Автор ответа:
 AWP



ICQ: 345685652 

Вопросов: 96
Ответов: 1212
 Web-сайт: xawp.narod.ru
 Профиль | | #15
Добавлено: 22.02.10 12:56
никогда не использовал, буду знать, спасибо.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам