CONTROLES EM TEMPO DE EXECUCAO

LUIS.FLAVIO 20/04/2011 14:19:15
#372016
Fala pessoal,

Seguinte preciso da ajuda de vocês para o seguinte problema que não estou conseguindo resolver.

Preciso criar os controles dos forms em tempo de execução, este sistema para CheckList de Auditoria em Empresas e usuário vai dando uma pontuação em cada item e conforme o Peso do Item ele vai dando uma nota final para cada item.

Com isso estou criando três tipo de controles em tempo de execução (Combobox- Onde o usuário irá informar a nota que varia de 1 a 3) , (Label que ira aparecer o nome do Item que está sendo avaliado) , (Textbox - que irá fazer um calculo baseado na nota que ele selecionou no Combobox).

Então no banco de dados tem todos os item que serão avaliados quando o form é aberto ele verifica a quantidade de item que existe e cria a quantidade de controles conforme a quantidade de itens no banco de dados.

Estou conseguindo realizar a criação e a quantidade de itens perfeitamente, agora preciso associar para cada ComboBox que foi criado no evento LostFocus uma rotina para calcular a nota e gravar no Textox correspondente.

Segue rotina que estou fazendo para criação dos controles, conto muito com ajuda de vocês.

Dim WithEvents ctlText As VB.TextBox
Dim WithEvents ctlcombo As VB.ComboBox

[ô]
Private Sub form_load()

Dim e As Integer
Dim i As Integer

For e = 1 To 10

Set ctlText = Controls.Add([Ô]VB.TextBox[Ô], [Ô]txt[Ô] & e & [Ô][Ô])
Set ctlcombo = Controls.Add([Ô]VB.ComboBox[Ô], [Ô]cb[Ô] & e & [Ô][Ô])
Set ctllabel = Controls.Add([Ô]VB.Label[Ô], [Ô]lbl[Ô] & e & [Ô][Ô])


[ô]cria controle combobox
With ctlcombo
.Visible = True
.Top = e * 600
.Left = 1200
For i = 1 To 3
.AddItem i
Next i
[ô] .ListIndex = 0
End With

[ô]cria controle label
With ctllabel
.Visible = True
.Width = 8000
.Caption = [Ô]Item do CheckList:[Ô] & e
.Top = e * 600
.Left = 3000
End With

[ô]cria controle textbox
With ctlText
.Visible = True
.Width = 1000
.Height = 375
[ô] .Text =
.Top = e * 600
.Left = 8000
End With


Next e
End Sub
LUIS.FLAVIO 20/04/2011 17:55:40
#372060
Galera preciso muito da ajuda de vocês.

Preciso terminar esse projeto na semana que vem.

Grande abraço

Luís Flávio
MARCELO.TREZE 20/04/2011 19:35:48
#372069
Luis primeiro eu aconselharia um grid pra fazer isso, mas se realmente precisa destes controles, aconselho a criar de outra maneira:

você diz que pretente colocar um textbox para exibir o calculo conforme o que for selecionado no combo, vc pretende alterar este valor, se não então não aconselho textbox.

no lugar do combo eu colocaria um text box com uam função para permitir apenas numeros de 1 a 3, pois se vc tiver 100 itens, e ter de carregar estes 100 combos, vai tirar um pouco do desempenho não acha?

bom torno a sugerir que crie um grid exibindo os dados, no ai sim no local onde vc terá de digitar a nota, ai sim vc poderá colocar um unico combo com os tres valores e bastará para vc dar a nota.

JOYYY 02/12/2016 20:20:20
#469379
Pegando uma carona nesse tópico. Como fazer as rotinas funcionarem para um OBJETO em tempo de execução.

Exemplo: Criei 10 TEXTBOX em tempo de execução, e gostaria que rodasse uma rotina no evento CHANGE deles, porém mesmo as rotinas já estando previamente adicionadas elas não rodam, o que fazer ?

KERPLUNK 02/12/2016 23:13:52
#469385
Em primeiro lugar, um grid seria o mais apropriado para o seu problema, como o MARCELO-TREZE falou. Mas como é muito comum usuários aqui terem suas razões para manter o que estão fazendo, para seu caso o melhor seria criar um UserControl, contendo os controles que você quer. Assim, ao invés de adicionar múltiplos controles em tempo de execução, você adiciona apenas os controles personalizados. Facilita a manipulação.

JOYYY, você precisa criar delegates para os eventos dos controles que quer manipular, muito simples.
Tópico encerrado , respostas não são mais permitidas