|
Postada em 21/10/2008 17:39 hs
Ola pessoal, Estou precisando de uma ajudinha eu preciso desenvolver um sistema que crie dinâmicamente um numero determinado de botões em tempo de execução.Bom para criar os botões eu utilizei este comando: For i=0 to 10 "Set btn = Controls.Add("Forms.CommandButton.1", nome_btn & i)" next O meu problema é depois que eu crio esses 10 botoes não consigo criar os eventos dinamicamente para cada botao criado. Se alguem puder me ajudar ficarei muito grato.
__________________________________ [ Milhomens ]
|
|
|
|
Natanael
não registrado
|
|
ENUNCIADA !
|
|
|
Postada em 21/10/2008 19:14 hs
Porq não deixa eles com a função Visible = false assim quando quiser mostrar é só fazer Visible = True
|
|
|
Treze
não registrado
|
|
ENUNCIADA !
|
|
|
Postada em 22/10/2008 09:14 hs
Estes eventos são diferentes em cada botão, se sim faça de forma diferente para para criar estes botões veja: insira em em seu projeto um commandbutton, na propriedade index coloque zero, na propriedade viseble coloque false. e crie seus botões desta forma. For i= 1 to 10 Load CommandButton1(i) CommandButton1(i).Top = Valor desejado CommandButton1(i).Left = Valor desejado CommandButton1(i).Visible = True Next i bom criado os botões da forma acima basta você fazer o seguinte, de no evento clique do botão que você inseriu no seu projeto cole Select Case Index Case 1 ' função do evento 1 Case 2 ' função do evento 2 Case 3 ' Função do evento 3 ' e assim vai até o 10 End Select faz um teste, e veja se funciona da forma esperada
|
|
|
|
Postada em 22/10/2008 19:38 hs
Galera, Agradeço a atenção, mas, não é bem isso o q preciso. Vejam só: Qnto a adicionar os 'n' botoes, tudo bem, tranquilo, mas, como criar 'n' eventos MouseDown para os 'n' botões gerados dinamicamente? o conteúdo do evento MouseDown segue abaixo: Private Sub CommandN_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim rec& If Button And 1 Then ReleaseCapture rec& = SendMessage(CommandN.hWnd, &HA1, 2, 0&) End If End Sub é aí q a coisa pega!
|
|
|
Treze
|
SÃO VICENTE SP - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 23/10/2008 02:37 hs
Então colega faça exatamente o que eu disse veja: primeiro insira no projeto um CommandButton e na propriedade index deste coloque 0 (zero) ele irá se tornar uma array ex: Command1(0) agora cole este código Private Declare Function SendMessage Lib _ "user32" Alias "SendMessageA" (ByVal _ hWnd As Long, ByVal wMsg As Long, _ ByVal wParam As Long, lParam As Any) _ As Long Private Declare Function ReleaseCapture Lib _ "user32" () As Long Private Sub Form_Load() For f = 1 To 3 Load Command1(f) Command1(f).Top = 100 If f = 1 Then Command1(f).Left = 100 Else Command1(f).Left = Command1(f - 1).Left + Command1(f).Width + 100 End If Command1(f).Visible = True Next f End Sub Private Sub Command1_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single) Dim rec& If Button And 1 Then ReleaseCapture rec& = SendMessage(Command1(Index).hWnd, &HA1, 2, 0&) End If End Sub bom agora arraste qualquer um dos botões que vai funcionar
|
|
|
|
Postada em 27/10/2008 15:16 hs
Treze, Vlw, realmente foi suficiente! Obrigado.
|
|
|
|