Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: Dynamiczne tworzenie kontrolek w Corelu i obsługa events
anonim




Typ: Nie zarejestrowany
Dynamiczne tworzenie kontrolek w Corelu i obsługa events

Mam taki problem, chcę dynamicznie tworzyć kilka kontrolek (CheckBox) tak abym mógł stworzyć dla nich tylko jedną procedure zdarzenia i w niej dopiero rozróżniał, o który z nich chodzi.

Stworzenie takiej pojedyńczej kontrolki nie stwarza problemu, jednak jeżeli chcę przy tworzeniu użyć tablicy to nie mogę podpiąć do kontrolek obsługi zdarzeń.

kod który działa:
Dim WithEvents test As CheckBox

Set test = trasy.Controls.Add("Forms.CheckBox.1", "test"
test.Left = 5
test.Top = 85 + (i * 15)
test.Caption = "test"
test.Name = nazwa

Private Sub test_Change()
jakieś polecenia
End Sub

a to co chciałbym osiągnąć a nie mogę:
Dim WithEvents test(10) As CheckBox
jednak vba nie pozwala mi na taką delkarację mogę jedynie wybierać pomiędzy:
Dim test(20) As Control
lub
Dim WithEvents test As CheckBox
czyli albo tablica albo obsługa zdażeń

dalej kod który owszem tworzy kontrolki albe bez obsługi zdarzeń:
For i = 1 to 10
Set test(i) = trasy.Controls.Add("Forms. CheckBox.1", "test"
test(i).Left = 5
test(i).Top = 85 + (i * 15)
test(i).Caption = linia
test(i).Tag = i
test(i).Name = nazwa
Next

no i na koniec procedura zdarzenia która nie jest wywoływana ;( (odrazu zanaczam, że nie wiem czy tak to powinno wyglądać)

Private Sub test_Change(i)
jakieś polecenia zależne od i
End Sub

Mam nadzieję, że nie zakręciłem zbytnio i da się zrozumieć sedno mojego problemu.
Będę wdzięczny za wszelkie sugestie.
Marud

09-05-2005 13:10
  
karolinavb




Typ: neutral
Postów: 468
Zarejestrowany: Jan 2003

Ponieważ:
You cannot create arrays of WithEvents variables.


Nie mogę odnieść się do Corela, nie mam niestety, odnoszę się wobec tego do Excela (Office XP).

Zrobiłbym tak tak:
- dołączyła klasę o nazwie przykładowo jak niżej:

' clsCheckBox- kod klasy

Option Explicit

Public WithEvents KaroCheckBox As MSForms.CheckBox
Public index As Integer

Private Sub KaroCheckBox_Click()

    ' tu można Select Case ze względu na indem i tylko w kodzie klasy - Tylko w 1-dnym zatem miejscu !!!!
    MsgBox KaroCheckBox.Name & " " & CStr(Me.index)
End Sub


A w kodzie UserForm napisała, przykładowo tworzymy kontrolki w zdarzeniu Click CommanButtona:

Option Explicit

Dim Chk(3) As clsCheckBox

Private Sub CmdAddCtrl_Click()

Dim test As Object
Dim i As Integer
For i = 0 To 3
    Set Chk(i) = New clsCheckBox
    Set Chk(i).KaroCheckBox = Me.Controls.Add("Forms.CheckBox.1", "test" )
    With Chk(i)
        .index = i
        With .KaroCheckBox
            .Left = 5
            .Top = 85 + (i * 15)
            .Caption = "test" + CStr(i)
        End With
    End With
Next
End Sub


nic innego nie przychodzi mi do głowy w VBA.

[Post edytowany dnia 09-05-2005 15:56 przez karolinavb]


_____________________________________________
Karolina

09-05-2005 15:43
Pokaż profil karolinavb  Wyślij email do karolinavb   
Marud




Typ: neutral
Postów: 1
Zarejestrowany: May 2005

Wielkie dzięki, działa perfekcyjnie, co jak się zdążyłem zorientować nie jest ewenementem wśród twoich odpowiedzi.
Pozdrawiam Marud.

10-05-2005 08:08
Pokaż profil Marud  Wyślij email do Marud   Odwiedź stronę Marud  
Wszystkich odpowiedzi: 2 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1