|
Postada em 29/11/2004 17:56 hs
Pessoal, tudo bem?
Vamos supor que em um formulário tenha um CommandButton, e como vc's fariam para no evento Click, adicionar um TextBox, no Formulário?
Sem Mais
Nós somos uma família VBWEB, só prosperamos neste ambiente sensato. Meus votos de Felicidade à todos.
|
|
|
|
Sandro
não registrado
|
|
ENUNCIADA !
|
|
|
Postada em 29/11/2004 22:51 hs
Olá Léee, Você pode usar a coleção Controls do VB. Para isso, declare uma variável que ira conter a referência ao novo controle: Dim WithEvents ctlText As VB.TextBox No evento click do seu botão, digite o seguinte: Private Sub Command1_Click() Set ctlText = Controls.Add("VB.TextBox", "ctlText1", Form1) ctlText.Move 100, 100 ctlText.Visible = True End Sub 'Agora você terá que codificar os eventos manualmente, ou seja, digitar toda a declaração do evento, com seus parâmetros, se houverem: Private Sub ctlText_Change() MsgBox "oi" End Sub Pronto, agora você já pode criar controles dinamicamente. Ah, uma coisa, há algum tempo você me mandou um email sobre um problema que você teve com Options. Você recebeu a minha resposta? Como você não respondeu, fiquei sem saber o que houve. Neste email eu informava que o problema estava na linha que desmarcava a option, e recomendei que você colocasse o código de chamada a procedure dentro do evento MouseUp. Bem, se tiver mais algum problema, post, ok? Um abraço, Sandro.
|
|
|
léee
|
OURINHOS SP - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 30/11/2004 02:43 hs
Oi, Sandro, tudo bem ?
Eu, envie um e-mail de retorno acho que nao chegou então, cara gostei da sua aula, vc sabe mesmo das coisas. Então aqui vai o meu "Muito Obrigado". Mas eu estive meu doente, e comecei a usa-lo de novo. E já tive uns contra-tempo de novo. Mas me conta aqueles parâmetros dos comandos "SendMessage" ou "PostMessage", onde será que eu posso achar ?
Agora, vamos ao que vc me postou: Dim WithEvents ctlText As VB.TextBox
Estes "WithEvents ctlText" , sao 2 palavrinhas para um mesmo nome de variavél ? A propriedade Caption é ctlText1 ? Isto na criaçao ( está dentro do procedure Click do CommandButton.
Outro Abraço, Gente Boa.
Nós somos uma família VBWEB, só prosperamos neste ambiente sensato. Meus votos de Felicidade à todos.
|
|
|
Sandro
não registrado
|
|
ENUNCIADA !
|
|
|
Postada em 30/11/2004 23:11 hs
Fala Léee, A cláusula WithEvents significa que queremos que o VB nos retorne os eventos de um objeto. Quando não usamos esta cláusula, qualquer coisa que aconteça no objeto nós não somos notificados, ou seja, o Vb não nos dará acesso ao evento correspondente. Você pode usar esta cláusula para fazer referência, por exemplo, a um formulário qualquer e ter possibilidade de, de outro ponto do programa executar alguma ação assim que um evento naquele formulário acontecer. Isso é muito usado em classes que retornam eventos para outras classes, mas isso é outra história... Voltando às suas perguntas, ctlText é um nome que eu dei para uma variável que irá referenciar o novo TextBox que você quer criar. Você perguntou se o nome do novo Text seria ctlText1; não, o nome será ctlText mesmo. Cada variável será um único objeto. Quanto ao SendMessage e PostMessage, cara isso é complicado, pois essas APIs do Windows são usadas para enviar mensagens, ou seja, notificar objetos quaisquer de eventos que aconteceram ou que estão sendo "simulados" pelo programa. Acontece que cada controle pode receber tipos diferentes de mensagens (os parâmetros) e isso não tem muita lógica, pois quando se cria um componente (principalmente em C), não se tem qualquer obrigação de seguir as regras de parâmetros de outros componentes. Resumindo, varia para caramba. O que você quer fazer exatamente? Dependendo do que for eu tento te ajudar. Um abraço, Sandro.
|
|
|
léee
|
OURINHOS SP - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 01/12/2004 17:16 hs
Tudo bem, Sandro?
era aquela historia de simular um clique no CommandButton sem clica-lo. Queria apreender isto. Desculpa pela demora, mas estou com virus na maquina. E custou para retirar o danado daqui. Vou ter que instalar ate o VB.
E voltando para a questao original, se fosse bastante TextBox a criar. Teria de colocar a declaraçao numa matriz assim:
Dim WithEvents ctlText(x) As VB.TextBox 'x esta no lugar de um numero
No evento click do seu botão, digitaria o assim ( tá certo ? ): Private Sub Command1_Click() Set ctlText(x) = Controls.Add("VB.TextBox", "ctlText1", Form1) ctlText(x).Move (100+x*500), 100 'hipoteticamente assim fica afastado um do outro ctlText(x).Visible = True End Sub o "x" define qual é a variavel ?
Private Sub ctlText(x)_Change() MsgBox "oi" End Sub
Outro abraço.
Nós somos uma família VBWEB, só prosperamos neste ambiente sensato. Meus votos de Felicidade à todos.
|
|
|
|
Postada em 01/12/2004 17:38 hs
TB Leee,
Bom para você adicionar uma nova text com apenas um clique funciona da seguinte maneira... 1º o form tem que conter uma text(0) - index
adicionar novas texts
For I = 1 to 5
'comando para criar as texts Load text(I)
'este comando é para as novas texts não ser criadas no mesmo local text(i).top = text(i).top+text(i-1).top
next i
Falou até +,
|
|
|
|