Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 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-сайт: sham.clan.su
 Профиль | | #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-сайт: sham.clan.su
 Профиль | | #3
Добавлено: 08.05.07 20:32
Легко :)

например так:
Option Explicit

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


и в коде формы:
Option Explicit
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-сайт: sham.clan.su
 Профиль | | #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-сайт: sham.clan.su
 Профиль | | #8
Добавлено: 08.05.07 21:52
И используй в форме примерно так

    Dim clsExample As New MyClass
        Set clsExample.MyButton = Command1
        clsExample.Rezise_Button
ну ты зверь, а не скажешь что внутри MyClass писать надо?

Ответить

Страница: 1 |

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



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