Página 1 de 1
remover/Destruir o browse/controle
Enviado: 11 Jan 2024 19:29
por JoséQuintas
Código: Selecionar todos
#include "hwgui.ch"
#define DEFAULT_FONTNAME "MS Sans Serif"
PROCEDURE Main
LOCAL oFont
LOCAL xDlg, cTitle := "test"
LOCAL aList := { "um", "dois", "tres" }
oFont := HFont():Add( DEFAULT_FONTNAME, 0, -11 )
INIT DIALOG xDlg ;
CLIPPER ;
FONT oFont ;
NOEXIT ;
TITLE cTitle ;
AT 0, 0 ;
SIZE 1024, 768
// BACKCOLOR COLOR_WHITE
ACTIVATE DIALOG xDlg CENTER ON ACTIVATE { || BrowseMenuBr( xDlg, 10, 10, aList ) }
RETURN
STATIC FUNCTION BrowseMenuBr( xDlg, nRow, nCol, aList )
LOCAL xBrowse, aBrowseList := {}, cItem
hb_Default( @nRow, 0 )
hb_Default( @nCol, 0 )
FOR EACH cItem IN aList
AAdd( aBrowseList, { cItem } )
NEXT
@ nCol, nRow BROWSE xBrowse OF xDlg ;
ARRAY ;
SIZE 100, (Len(aList)+2)*20 ;
STYLE WS_BORDER + WS_VSCROLL + WS_HSCROLL ;
ON CLICK { || xBrowse:End(), xDlg:Refresh() }
hwg_CREATEARLIST( xBrowse, aBrowseList )
xBrowse:aColumns[1]:Heading := "titulo"
xBrowse:aColumns[1]:length := 50
RETURN Nil
Estou tentando destruir o browse, mas ele continua lá vazio.
Tem como remover/destruir um controle da dialog?
remover/Destruir o browse/controle
Enviado: 12 Jan 2024 00:26
por alxsts
Olá!
Pelo que consta na documentação da HWGUI, o método
End() é interno. Deve ter funções específicas do controle.
JoséQuintas escreveu:Estou tentando destruir o browse, mas ele continua lá vazio.
Tem como remover/destruir um controle da dialog?
Não fica clara a tua intenção ao "destruir" um controle. Se for para que ele desapareça da tela, no caso do controle
Browse, use o método
hide:
remover/Destruir o browse/controle
Enviado: 12 Jan 2024 08:32
por JoséQuintas
alxsts escreveu:Não fica clara a tua intenção ao "destruir" um controle. Se for para que ele desapareça da tela, no caso do controle Browse, use o método hide:
Destruir é jogar fora mesmo, ficou inútil, precisa ser descartado.
No Windows seria enviar a mensagem WM_CLOSE pra janela do controle.
Mas é lógico, também precisa destruir os objetos criados pela hwgui.
A intenção é criar um sistema de menus usando o browse.
remover/Destruir o browse/controle
Enviado: 12 Jan 2024 10:40
por JoséQuintas
Parece que deu certo.
Precisa testar mais pesado.
Código: Selecionar todos
STATIC FUNCTION Destroy( xDlg, xBrowse )
LOCAL hWnd
hWnd := xBrowse:Handle
xBrowse:End()
hwg_SendMessage( hWnd, WM_CLOSE, 0, 0 )
xDlg:Refresh()
(xDlg)
RETURN Nil
Código: Selecionar todos
#include "hwgui.ch"
#define DEFAULT_FONTNAME "MS Sans Serif"
PROCEDURE Main
LOCAL oFont
LOCAL xDlg, cTitle := "test"
LOCAL aList := { "um", "dois", "tres" }
oFont := HFont():Add( DEFAULT_FONTNAME, 0, -11 )
INIT DIALOG xDlg ;
CLIPPER ;
FONT oFont ;
NOEXIT ;
TITLE cTitle ;
AT 0, 0 ;
SIZE 1024, 768
// BACKCOLOR COLOR_WHITE
ACTIVATE DIALOG xDlg CENTER ON ACTIVATE { || BrowseMenuBr( xDlg, 10, 10, aList ) }
RETURN
STATIC FUNCTION BrowseMenuBr( xDlg, nRow, nCol, aList )
LOCAL xBrowse, aBrowseList := {}, cItem
hb_Default( @nRow, 0 )
hb_Default( @nCol, 0 )
FOR EACH cItem IN aList
AAdd( aBrowseList, { cItem } )
NEXT
@ nCol, nRow BROWSE xBrowse OF xDlg ;
ARRAY ;
SIZE 100, (Len(aList)+2)*20 ;
STYLE WS_BORDER + WS_VSCROLL + WS_HSCROLL ;
ON CLICK { || Destroy( xDlg, xBrowse ) }
hwg_CREATEARLIST( xBrowse, aBrowseList )
xBrowse:aColumns[1]:Heading := "titulo"
xBrowse:aColumns[1]:length := 50
RETURN Nil
STATIC FUNCTION Destroy( xDlg, xBrowse )
LOCAL hWnd
hWnd := xBrowse:Handle
xBrowse:End()
hwg_SendMessage( hWnd, WM_CLOSE, 0, 0 )
xDlg:Refresh()
(xDlg)
RETURN Nil