Page 1 of 2

combobox não encerra

Posted: Thu Feb 21, 2008 2:29 pm
by rogerio
Olá

após atualizar para FWH 8.02 surgiu-me um problema:

Nos diálogos aproveitados em vários relatórios, quando preciso encerrar um COMBOBOX eles deixaram de ser encerrados.
ex.:

REDEFINE COMBOBOX oList1 VAR matriz[3] ID 125 of oT430a

...

ACTIVATE DIALOG oT430a NOWAIT VALID ( oT430a := nil, .t. ) ON INIT ( oList1:end() )


end() deixou de encerrar o combo

Alguém sabe o motivo e como corrigir?


[]'s

Rogerio

Posted: Thu Feb 21, 2008 6:21 pm
by ADBLANCO
Exactamente no entiendo el caso, Pero;

Tienes solo el combobox en el dialogo?

Posted: Thu Feb 21, 2008 7:27 pm
by rogerio
Adblanco

no diálogo existem vários controles.
Os Get's, say's, button's, etc., que mando encerrar (:end() ) são encerrados.
Somente os combobox que deixaram de ser encerrados em todos os diálogos de todo o programa.
Como aproveito um mesmo desenho de janela para vários relatórios, conforme o caso preciso encerrar determinados controles.

[]'s

Rogerio

Posted: Thu Feb 21, 2008 7:31 pm
by karinha
O Botão está com a clausula CANCEL Rogerio?

Quando Voce valida, usa o comando GETASYNCKEY()?

Ex:

IF GETASYNCKEY( VK_UP )
RETURN( .F. )
ENDIF

RETURN( .T. )

QUAL É O ESTILO DO COMBO QUE ESTAIS USANDO?

Posted: Thu Feb 21, 2008 7:41 pm
by rogerio
karinha

estou usando o seguinte:

CONTROL "", IDC_COMBOBOX4, "COMBOBOX", CBS_DROPDOWNLIST | WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_TABSTOP, 5, 75, 91, 87


[]'s

Rogerio

Posted: Thu Feb 21, 2008 8:31 pm
by ronaldo
você podera oculta-lo, mas ficar na memoria usando o camento Hide() e para voltar a aparecer SHOW()

REDEFINE COMBOBOX oObj ...
oObj:Hide() ///ira oculta-lo

Posted: Thu Feb 21, 2008 9:02 pm
by karinha
Rogerio,

CBS_DROPDOWNLIST -> 16 Bits.

CBS_DROPDOWN -> 32 Bits, automaticamente, o <enter< aciona-se.

Abraços, porque não te vejo no FIVEWIN BRASIL?

Posted: Fri Feb 22, 2008 2:38 am
by rogerio
Ronaldo

Hide() funciona, obrigado, mas isso me fará ter que varrer todo código atrás de end() nos combos.
Sempre usei end() para encerrar os combos desde o FiveWin 1.9


Karinha,
uso o Workshop para criar os diálogos e ele cria automaticamente o CBS_DROPDOWNLIST , mas tem funcionado perfeitamente.
Eu antes acessava o fórum do virtualobject mas esse acabou. Não tenho o endereço do fivewinbrasil. Manda ele.

[]'s

Rogerio

Posted: Fri Feb 22, 2008 12:03 pm
by karinha
rogerio wrote:Ronaldo

Hide() funciona, obrigado, mas isso me fará ter que varrer todo código atrás de end() nos combos.
Sempre usei end() para encerrar os combos desde o FiveWin 1.9


Karinha,
uso o Workshop para criar os diálogos e ele cria automaticamente o CBS_DROPDOWNLIST , mas tem funcionado perfeitamente.
Eu antes acessava o fórum do virtualobject mas esse acabou. Não tenho o endereço do fivewinbrasil. Manda ele.

[]'s

Rogerio

Rogerio, Mude Nas Propriedades do combo, Para DROPDOWN.

Fivewin Brasil.

http://www.fivewin.com.br

Abraços.

Posted: Fri Feb 22, 2008 12:34 pm
by rogerio
João

Mudei e continuou na mesma.

Faça o seguinte teste:

Na pasta Samples do FWH tem COMBOS.PRG

Altere a última linha da função Main para
ACTIVATE DIALOG oDlg CENTERED ON INIT oCbx2:end()

você verá que o controle permanecerá ativo.

[]'s

Rogerio

Posted: Fri Feb 22, 2008 1:03 pm
by karinha
rogerio wrote:João

Mudei e continuou na mesma.

Faça o seguinte teste:

Na pasta Samples do FWH tem COMBOS.PRG

Altere a última linha da função Main para
ACTIVATE DIALOG oDlg CENTERED ON INIT oCbx2:end()

você verá que o controle permanecerá ativo.

[]'s

Rogerio
Rogerio meu querido, Porque no ON INIT, Porque queres fechar o COMBO, ao ENTRAR no DIALOGO??

O Correto, é VALID(), Fechas o COMBO, ao sair.

Posted: Fri Feb 22, 2008 1:12 pm
by rogerio
João

porque um mesmo diálogo, é utilizado em inúmeras funções.
Então em determinadas não uso certos controles, como get's, say's, combos.
Então ao iniciar o diálogo, eu encerro o que não vou usar na função.
Isso simplifica pacas o código.
No caso de relatórios repetitivos, um mesmo diálogo serve para dezenas.
P. Ex. um relatório tem que haver seleção de Fornecedores e Vendedores, então existem dois combos. Em outro relatório somente seleção de Vendedor. Então utilizo somente um combo e o outro é encerrado na carga do diálogo.

[]'s

Rogerio

Posted: Fri Feb 22, 2008 1:20 pm
by karinha
rogerio wrote:João

porque um mesmo diálogo, é utilizado em inúmeras funções.
Então em determinadas não uso certos controles, como get's, say's, combos.
Então ao iniciar o diálogo, eu encerro o que não vou usar na função.
Isso simplifica pacas o código.
No caso de relatórios repetitivos, um mesmo diálogo serve para dezenas.
P. Ex. um relatório tem que haver seleção de Fornecedores e Vendedores, então existem dois combos. Em outro relatório somente seleção de Vendedor. Então utilizo somente um combo e o outro é encerrado na carga do diálogo.

[]'s

Rogerio
ENTENDI ROGERIO, MAS NESTE CASO, NAO TEM COMO VOCE FINALIZAR O COMBO COM O END(), JÁ QUE VOCE ESTA ATIVANDO O DIALOGO, O QUE VOCE DEVE FAZER, EM MINHA MODESTA OPINIAO, E ESCONDER O COMBO, E APRENSENTA-LO QUANDO O MESMO FOR NECESSARIO.

ESCONDER: OCBX:HIDE()
MOSTRAR: OCBX:SHOW()

Ou voce tambem pode ter quantos COMBOS sejam necessarios no mesmo lugar, usando apenas IDS diferentes e ESCONDE quem nao quer e MOSTRA quem voce quer em tempo real.

Abraços.

Posted: Fri Feb 22, 2008 1:30 pm
by rogerio
OK, João

o hide() funciona.

Porém como sempre foi utilizado end(), desde o FW1.9 em TODOS os prg's de TODOS os sistemas, que dará várias centenas de prg's diferentes, terei que fazer a mudança de end() para hide() isso somente nos combos, pois os demais controles continuam sendo encerrados com end().

Isso aconteceu somente agora na atualização para o FWH 8.02.

Se o Antonio Linares estiver lendo esta discussão talvez ele saiba porque o end() deixou de ser utilizado para encerrar combos.

Eu simplesmente queria evitar um trabalho imenso ao substituir os end() por hide()..

[]'s

Rogerio

Posted: Fri Feb 22, 2008 5:45 pm
by karinha
rogerio wrote:OK, João

o hide() funciona.

Porém como sempre foi utilizado end(), desde o FW1.9 em TODOS os prg's de TODOS os sistemas, que dará várias centenas de prg's diferentes, terei que fazer a mudança de end() para hide() isso somente nos combos, pois os demais controles continuam sendo encerrados com end().

Isso aconteceu somente agora na atualização para o FWH 8.02.

Se o Antonio Linares estiver lendo esta discussão talvez ele saiba porque o end() deixou de ser utilizado para encerrar combos.

Eu simplesmente queria evitar um trabalho imenso ao substituir os end() por hide()..

[]'s

Rogerio
ROGERIO, EU USO A VERSAO 2.7, E TAMBÉM NÃO FUNCIONA O END(), SOMENTE O HIDE()/SHOW().


Abraços.