CONTROLE PAI

 Tópico anterior Próximo tópico Novo tópico

CONTROLE PAI

VB / VBA

 Compartilhe  Compartilhe  Compartilhe
#446047 - 21/04/2015 23:54:24

SINCLAIR
CRICIUMA
Cadast. em:Janeiro/2001


Colegas, sobre VB6 que ando enferrujado.

Tenho um form com 3 controles, sendo

1 frame
1 textbox
1 boto de comando

Tanto o textbox quanto o boto de comando esto dentro do frame.

No click do boto de comando, coloquei o cdigo

msgbox text1.parent.name


com objetivo de pegar o nome do frame no qual o textbox est inserido. Mas []parent.name[] traz o nome do formulrio e no do frame.

Tem como pegar o nome do frame?

Grato, colegas.


Euzbio Cruz
Cricima - SC


#446054 - 22/04/2015 08:40:26

SINCLAIR
CRICIUMA
Cadast. em:Janeiro/2001


Colegas,

Com...

Public Declare Function GetParent Lib []user32[] (ByVal hWnd As Long) As Long

Dim m_hWnd As Long
m_hWnd = GetParent(Text1.hWnd)
If m_hWnd = Frame1.hWnd Then
        MsgBox ([]sim[])
    Else
        MsgBox ([]nao[])
End If


Eu consigo saber se o pai de Text1 Frame1, mas se houver muitos frames no formulrio, terei que avaliar um a um. At ai sem problemas, porque posso colocar em um lao For Each. Mas ocorre que no bastar saber o nome, no caso Frame1, porque pode haver um array, teria que ser o ndice do Frame1 tambm, ou seja, Frame1(0). Mesmo que []Frame1[] e o ndice []0[] venham em variveis separadas.

Alguma luz, colegas?



Euzbio Cruz
Cricima - SC


#446059 - 22/04/2015 09:23:13

SINCLAIR
CRICIUMA
Cadast. em:Janeiro/2001


Última edição em 22/04/2015 09:23:49 por ZEUZEBIO3

Colegas,

Consegui com o cdigo abaixo. Mas antes de fechar o tpico, aguardarei mais algumas horas, para o caso de algum colega ter uma soluo mais simples.


      
        Dim m_hWnd                      As Long
        Dim intContadorDeIndices        As Integer
        Dim intIndiceDoFramePai         As Integer
        Dim Controle                    As Control
        
        []Pegar o hWnd do controle
        m_hWnd = GetParent(Text1.hWnd)
        
        []Procurar em todos os frames o nome e ndice do frame pai
        For Each Controle In Me.Controls
                        
                []Inicializa a varivel (ficar -1 para o caso de o controle no ter um frame_scroll pai)
                intIndiceDoFramePai = -1
                
                []Frame Scroll
                If TypeOf Controle Is Frame Then
                
                        []Fazer loop nos ndices
                        For intContadorDeIndices = Frame1.LBound To Frame1.UBound
                        
                                []Se coindicidir o hWnd
                                If m_hWnd = Frame1(intContadorDeIndices).hWnd Then
                                        
                                        []Armazenar qual o ndice do frame_scroll pai
                                        intIndiceDoFramePai = intContadorDeIndices
                                
                                        []Pode sair do for
                                        GoTo AchouIndice
                                
                                End If
                        
                        Next intContadorDeIndices
                
                End If
        Next
        
AchouIndice:
        
        []Caso tenha achado um ndice de frame_scroll
        If intIndiceDoFramePai >= 0 Then
                MsgBox ([]Frame [] & intIndiceDoFramePai)
        End If


Tudo de bom a todos.


Euzbio Cruz
Cricima - SC


#446086 - 22/04/2015 17:29:30

SINCLAIR
CRICIUMA
Cadast. em:Janeiro/2001


Última edição em 22/04/2015 17:30:25 por ZEUZEBIO3

Colegas,

A soluo acima no funcionou.

Descobri que (ao menos olhando as propriedades depois do ponto) nem todos os controles possuem a propriedade hWnd (uso uma ocx chamada ActiveText).

O [].parent[] sempre retorna o nome do form. Queria que retornasse o nome do frame em que a text1 est dentro e o ndice do frame tambm porque tenho frame(0) at frame(x).

Alguma luz, colegas?



Euzbio Cruz
Cricima - SC


#446106 - 23/04/2015 13:49:45

SINCLAIR
CRICIUMA
Cadast. em:Janeiro/2001


Colegas,

A resposta

.container.name

e

.container.index


Euzbio Cruz
Cricima - SC


 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por SINCLAIR em 23/04/2015 13:49:57