TEXTO STRING COMO COMANDO EM VB6

JEISONANTONI 13/12/2010 18:01:36
#359465
Boa tarde,

Estou com o seguinte problema...

ex.:

dim x as string
dim ctrl as control
dim l as listitem

x = [Ô]frmListaPedidos[Ô]

for each ctrl in x
if typeof ctrl is commandbutton then
set l = ListView1.listitems.add

l.text = ctrl.Caption
l.tag = ctrl.name
end if
next

isso é oq eu queria fazer, porém o problem e q o programa nao entende o que esta dentro do l.tag ([Ô]frmListaPedidos[Ô]) como o nome do form, dai gera erro.

se alguem puder ajudar
FININHO 13/12/2010 22:29:26
#359488
Experimenta desta forma

dim x As Form
dim ctrl as control
dim l as listitem

Set x = frmListaPedidos

for each ctrl in x
if typeof ctrl is commandbutton then
set l = ListView1.listitems.add

l.text = ctrl.Caption
l.tag = ctrl.name
end if
next
JEISONANTONI 14/12/2010 11:40:12
#359504
sim, desta forma funciona, mas é q o nome dos forms eu trago de uma tabela do banco de dados e fica no .tag da listview quando eu carrego ela. por isso precisava q o programa entendesse como um form, mas nao consigo, assim eu iria percorrer a listview pegando o nomes dos forms e buscando os botoes q ele contem....
RRANGON 14/12/2010 14:54:14
#359535
O jeito é você utilizar um caracter especial que informe que aquele controle é um Form.

Por exemplo a nomenclatura inicial ai: FRM
JEISONANTONI 14/12/2010 15:00:05
#359537
ta mais de q forma isso vai resolver meu problema?
RODRIGOFERRO 14/12/2010 15:14:55
#359539
Amigo tente listar todos os forms do projeto e compara com a string que voce recebe do banco tipo assim oh

For I = 0 To Forms.Count - 1

if Forms(I).Name = strNomeForm
Set x = Forms(I)

Next I


se nao retornar os forms acima da uma zoiada por ai com a expressão: [Ô]Get A List Of Total Forms In The Project[Ô]

Abraços
JEISONANTONI 14/12/2010 15:52:30
#359545
pois é amigo, essa maneira eu ja havia tentado, mas ele só percorre os forms que estão em execução.

dai nao adianta.

e referente a [Ô]Get A List Of Total Forms In The Project[Ô] dei uma olhada na net mas nao entendi muito bem, oq seria isso?
RODRIGOFERRO 14/12/2010 16:47:06
#359555
hmm tenho de instalar o vb em casa pra solucionar esses e outros que estou devendo aos amigos, vou tentar mexer nesse em casa a noite, caso ainda nao tenha sido solucionado.

Abraços
LUIS.HERRERA 14/12/2010 19:06:31
#359562
Jeison eu faço assim para saber se um form está carregado:

Public Function Form_Esta_Carregado(NomeForm As String) As Boolean
Dim FRM As Form
For Each FRM In Forms
If FRM.Name = NomeForm Then
Form_Esta_Carregado = True
Exit Function
End If
Next
Form_Esta_Carregado = False
End Function

Então você poderia adaptar para se localizar, ou seja, o form que precisa está em uso, você devolve o form para a variável que declarou assim:

[ô] Declarada função em Módulo
Public Function Devolve_Formulario(NomeForm As String) As Form
Dim FRM As Form
For Each FRM In Forms
If FRM.Name = NomeForm Then
Devolve_Formulario = FRM.Name
Exit Function
End If
Next
Devolve_Formulario = Noting
End Function

[ô]Na rotina que precisa, use:
dim x As Form
dim ctrl as control
dim l as listitem

Set x = Devolve_Formulario ([Ô]frmListaPedidos[Ô]) [ô]aqui você passa o nome do form desejado como string e vindo de onde desejar, seja um TXT, um DB, etc...

If Not x = Noting then
for each ctrl in x
if typeof ctrl is commandbutton then
set l = ListView1.listitems.add

l.text = ctrl.Caption
l.tag = ctrl.name
end if
next
End If

Veja se funciona?
JEISONANTONI 15/12/2010 11:44:02
#359594
blz, mas o meu problema esta aki...

for each FRM in Forms
if FRM.Name = NomeForm then
Devolve_Formulario = FRM.Name
end if
next

essa rotina funciona bem, porém ele só consegue enxergar os forms carregados.

ex.:

eu tenho o frmListaPedidos.

essa função para listar os forms esta no formNovoUser, entao quando eu estou neste form, os seguintes forms estão abertos.

o MDI - formPrincipal
o Lista Usuários - formListaUser
o Cadastro de usuários - formNovoUser

quando executa a função ele traz somente estes tres forms q são os q estao carregados no momento.

por isso nao consigo conforme vc disse, pois dai quando eu for buscar o frmListaPedidos nao vai encontrar, pois a função não vai passar por ele.
LUIS.HERRERA 15/12/2010 18:36:28
#359633
Jeison não entendi.
Você quer pegar uma rotina de um formulário que não está aberto? Que lógica tem isso?

Primeiro se você usa funções, elas devem ser publicas e estarem em módulos e não formulários. As funções em formulários devem ser privadas, só para eles.
Desta forma não estou entendendo porque quer usar algo em um form fechado.

Se entendi bem quando você diz: [Ô]....essa função para listar os forms esta no formNovoUser...[Ô] quer dizer que tem uma função que carrega de algum lugar os forms que precisa?
Se for isso transfere a tal função de carregar os forms para um Módulo e deixa como pública. Então chama de qualquer lugar, assim não terá problemas.

Acho que é isso.
Página 1 de 2 [14 registro(s)]
Tópico encerrado , respostas não são mais permitidas