Histórico da Página
...
Bloco de código | ||||
---|---|---|---|---|
| ||||
// Deficoes do treeview
{utp/ut-4gltreeview.i}
PROCEDURE afterDisplayFields :
RUN carregaTreeView.
RUN criaTreeView.
END PROCEDURE.
// Carregando o componente treeview
PROCEDURE carregaTreeView :
IF NOT VALID-HANDLE(h-4gltreeview) THEN DO:
// Instancia o treeview
RUN utp/ut-4gltreeview.w PERSISTENT SET h-4gltreeview.
// Indica a Frame "Pai" do componente
RUN setParentFrame IN h-4gltreeview (INPUT FRAME fPage0:HANDLE).
// Inicializa o treeview
RUN initializeObject IN h-4gltreeview.
// Faz a subscricao dos eventos do treeview
SUBSCRIBE TO "tvNodeEvent" IN h-4gltreeview.
// Reposiciona o treeview
RUN repositionObject IN h-4gltreeview (6.35, 2.00).
// Ajusta o tamanho do treeview
RUN resizeObject IN h-4gltreeview (10.70, 28.00).
END.
END PROCEDURE.
// Cria os nodes no treeview
PROCEDURE criaTreeView :
// Limpa o treeview
RUN emptyTree IN h-4gltreeview NO-ERROR.
ASSIGN c-codigo-node = "".
// Logica para criar nos nodes do treeview
...
RUN pi-create-node (cNodeId, cNodeIdPai, cDescNode, cImage, cOptn).
...
// Faz o refresh do treeview
RUN pi-atualizaTreeview.
// Coloca o cursor no treeview
RUN applyEntry IN h-4gltreeview (INPUT "").
END PROCEDURE.
// Procedure executada toda vez que ocorrer um evento de click em um node
PROCEDURE pi-ClickTreeView :
MESSAGE c-codigo-node VIEW_AS ALERT-BOX.
END PROCEDURE.
// Retira o treeview da memoria
PROCEDURE beforeDestroyInterface :
IF VALID-HANDLE(h-4gltreeview) THEN DO:
RUN destroyObject IN h-4gltreeview.
DELETE PROCEDURE h-4gltreeview.
END.
RETURN "OK":U.
END PROCEDURE. |
...
05. DICAS DE CONVERSÃO DO OCX PARA O 4GLTREEVIEW
xxxx
...
Segue abaixo uma tabela com algumas dicas para facilitar o processo de conversão dos programas que atualmente utilizar o TreeView OCX.
Processo | OCX | 4glTreeView |
---|---|---|
Definição de Variáveis | define variable chTreeView as com-handle no-undo. DEFINE VARIABLE CtrlFrame AS WIDGET-HANDLE NO-UNDO. | // Definições Treeview {utp/ut-4gltreeview.i} |
Carregar o Treeview | PROCEDURE control_load : | RUN carregaTreeView. |
Posicionar a Treeview na tela | CREATE CONTROL-FRAME CtrlFrame ASSIGN FRAME = FRAME fpage0:HANDLE ROW = 2.46 COLUMN = 1 HEIGHT = 13.5 WIDTH = 31 HIDDEN = no SENSITIVE = yes. | RUN repositionObject IN h-4gltreeview (2.46, 1.00). RUN resizeObject IN h-4gltreeview ( 13.5, 31.00). |
Menu Popup | define variable pop-menu as widget-handle no-undo. create menu pop-menu CtrlFrame:popup-menu = pop-menu | PROCEDURE pi-CtrlPopupTreeview : .... END PROCEDURE. |
Jogar o foco para o TreeView | APPLY "Entry":U TO CtrlFrame. | |
Apagar os nós do TreeView | ChTreeView:Nodes:Clear(). | RUN emptyTree IN h-4gltreeview. |
Expandir o nós e filhos | do i-cont = 1 to chTreeView:Nodes:Count: assign chTreeView:Nodes(i-cont):Expanded = l-expande. end. | RUN expandBranch IN h-4gltreeview (c-codigo-node). RUN pi-atualizaTreeview. |
Seleciontar um nó | assign chTreeView:SelectedItem = chTreeView:Nodes(1). if not error-status:error then | |
Verificar se existem nós | IF chTreeView:Nodes:COUNT > 0 THEN DO: RUN piExcel IN THIS-PROCEDURE. END. | IF DYNAMIC-FUNCTION('hasNodes' IN h-4gltreeview) THEN DO: RUN piExcel IN THIS-PROCEDURE. END. APPLY "ENTRY":U TO btExcel IN FRAME fPage0. |
Verificar se o nó está expandido | assign exp-con:label = if chTreeView:SelectedItem:Expanded = false then cExpande | |
Pegar a chave do nó selecionado | c-tag-tree = chTreeView:SelectedItem:key(). | assign rRow = to-rowid(c-codigo-node). |
Monitorar o evento de click | PROCEDURE CtrlFrame.TreeView.NodeClick : ... END PROCEDURE. | PROCEDURE pi-ClickTreeView : .... END PROCEDURE. |
Incluir um nó | chTreeView:Nodes:Add (,, "i" + string(i-cont), string(ttDados.cod-oficial) + " - " + ttDados.desc-dimensao, i-img) . | RUN pi-create-node (cNodeId, cNodeIdPai, string(ttDados.cod-oficial) + " - " + ttDados.desc-dimensao, cImage, "") NO-ERROR. |
Gravar e recuperar a TAG | assign chTreeView:Nodes:Item ("i" + string(i-cont)):Tag = string(rowid(ttDados)) + ",1," + string(ttDados.r-rowid). assign rRowid = to-rowid(entry(1,chTreeView:SelectedItem:Tag)). | DYNAMIC-FUNCTION('setNodeTag' IN h-4gltreeview, cNodeId, ttDados.p-image). assign rRow = to-rowid(entry(1,DYNAMIC-FUNCTION('getNodeTag' IN h-4gltreeview, c-codigo-node))). |
Criar um relacionamento entre a TreeView e a TempTable de Negócio | assign rRow = to-rowid(entry(1,chTreeView:SelectedItem:Tag)) | assign rRow = to-rowid(c-codigo-node). |
Definir a imagem do nó |
06. TELAS DO TREEVIEW
07. DOCUMENTAÇÃO COMPLEMENTAR DO COMPONENTE
...