Страница: 1 |
Страница: 1 |
Вопрос: вопрос про Классы
Добавлено: 08.05.07 18:39
Автор вопроса: KreAtoR
Да я объявил кнопку в коде программы
Dim Button1 as VB.CommandButton
Set Button1 = Form1.Controls.Add("VB.CommandButton","Button1",Form1)
она работает все прекрасно.
могу сделать такое объявление в самом классе и вывести кнопку на Form1
но как сделать чтоб объявленную кнопку в Form1 можно было изменить в классе
Sub класса
public sub Rezise_Button()
main.button1.move 100,100,1111,2222
main.button1.visible = true
End sub
Такое не катит, говорит что переменная не объявлена.
Что сделать подскажите
Ответы
Всего ответов: 8
Номер ответа: 1
Автор ответа:
-АлександР-
Вопросов: 55
Ответов: 1008
Web-сайт:
Профиль | | #1
Добавлено: 08.05.07 19:01
тут http://sham.clan.su/publ/8-1-0-5 вроде нормально написано, я старался... (правда на вб6, но идея та же)
А если кратко - передавай кнопку как объект в модуль класса, а потом работай
Номер ответа: 2
Автор ответа:
KreAtoR
Вопросов: 120
Ответов: 438
Профиль | | #2
Добавлено: 08.05.07 19:36
я твой пример расмотрел и у меня возник такой вот вопросик.
Те текстбоксы которые появляются они все ведут к одному Сабу
DemoTxtBox_Change и какой бы ты не нажал происходит одно и тоже!!!!!
Есть ли возможность сделать Select Case?
и что бы
Form1.Caption = номер индекса текстбокса ?????
Номер ответа: 3
Автор ответа:
-АлександР-
Вопросов: 55
Ответов: 1008
Web-сайт:
Профиль | | #3
Добавлено: 08.05.07 20:32
Легко
например так:
Private WithEvents DemoTxtBox As TextBox
Dim ind As Integer
Property Let Component(DemoTxtBox2 As Object)
Set DemoTxtBox = DemoTxtBox2
End Property
Sub DemoTxtBox_Change()
Form1.Caption = Me.Index
End Sub
Property Let Index(i As Integer)
ind = i
End Property
Property Get Index() As Integer
Index = ind
End Property
и в коде формы:
Private textWidt() As VB.TextBox
Dim numLab As Byte
Dim myTxtBox() As New Vrapper
Private Sub Form_Load()
Me.Show
Text1.SetFocus
Text1.SelLength = 1
End Sub
Private Sub Text1_Change()
Dim topLab As Integer
topLab = Label1.Top + 600
ReDim textWidt(Val(Text1))
ReDim myTxtBox(Val(Text1))
While numLab < Val(Text1)
Set textWidt(numLab) = Me.Controls.Add("VB.TextBox", "lineWidth" & numLab, Me)
With textWidt(numLab)
.Visible = True
.Left = Text1.Left
.Width = 350
.Top = topLab
.FontSize = 14
.Text = 1
End With
topLab = topLab + 600
myTxtBox(numLab).Component = textWidt(numLab)
myTxtBox(numLab).Index = numLab
numLab = numLab + 1
Wend
textWidt(0).SetFocus
textWidt(0).SelLength = 1
End Sub
Можешь еще поискать пример CyRaxа, там насколько я помню как-то по-другому реализован поиск массива
Номер ответа: 4
Автор ответа:
-АлександР-
Вопросов: 55
Ответов: 1008
Web-сайт:
Профиль | | #4
Добавлено: 08.05.07 20:34
я хотел сказать индекса массива...
Номер ответа: 5
Автор ответа:
Сашок
ICQ: 387093431
Вопросов: 1
Ответов: 70
Профиль | | #5
Добавлено: 08.05.07 20:55
Привет KreAtoR! Ща дам инструкцию как решить твою проблему с классами.
Номер ответа: 6
Автор ответа:
Сашок
ICQ: 387093431
Вопросов: 1
Ответов: 70
Профиль | | #6
Добавлено: 08.05.07 21:14
Короче добавляешь новый Модуль Класса. Дальше, в нашем случай, даешь ем у ему имя MyClass. В нем пишешь код
Public MyButton As VB.CommandButton
Public Sub Rezise_Button()
MyButton.Move 100, 100, 1111, 2222
MyButton.Visible = True
End Sub
И используй в форме примерно так
Dim clsExample As New MyClass
Set clsExample.MyButton = Command1
clsExample.Rezise_Button
Номер ответа: 7
Автор ответа:
Сашок
ICQ: 387093431
Вопросов: 1
Ответов: 70
Профиль | | #7
Добавлено: 08.05.07 21:16
Этот пример справедливый для ВБ и ВБА, а для ВБ.НЕТ все идет по-другому
Номер ответа: 8
Автор ответа:
-АлександР-
Вопросов: 55
Ответов: 1008
Web-сайт:
Профиль | | #8
Добавлено: 08.05.07 21:52
Dim clsExample As New MyClass
Set clsExample.MyButton = Command1
clsExample.Rezise_Button