- Vamos utilizar vocabulários. Portanto, copie o arquivos de definição de vocabulários do Dialog System na primeira linha do seu programa:
copy dslang.cpy.
- Defina as seguintes classes, na class-control:
class-control.
....CharacterArray is class "chararry"
....Filename is class "filename"
....Listbox is class "listbox".
- Na working-storage section, defina as variáveis que serão utilizadas:
working-storage section.
77 handle8 pic 9(08) comp-x value zeros.
77 handle9 pic 9(09) comp-5 value zeros.
77 umaMascara object reference value null.
77 umaColecao object reference value null.
77 umListbox object reference value null.
- Esse exemplo requer que você tenha um listbox na janela de sua aplicação. Em nosso exemplo, o listbox foi definido na GS com o nome LB-ARQUIVOS. É nele que será colocada a lista de arquivos. Depois que a window de sua aplicação for criada, capture o listbox utilizando um método da classe Listbox:
CapturarListbox section.
....move-object-handle lb-arquivos handle8
....move handle8 to handle9
....invoke Listbox "fromHandleWithClass" using handle9 Listbox
...........returning umListbox
- Depois de capturado o listbox, vamos criar então a coleção de arquivos com uma determinada máscara e em seguida setar a coleção no objeto listbox:
CriarColecaoDeArquivos section.
....invoke CharacterArray "withValue" using z"c:\windows\*.bmp"
...........returning umaMascara
....invoke Filename "expandWildCards" using umaMascara
...........returning umaColecao
....invoke umListbox "setContents" using umaColecao
....invoke umaColecao "deepFinalize" returning umaColecao
....invoke umaMascara "finalize" returning umaMascara
Seguindo esse mesmo exemplo, você pode mudar a máscara de arquivos e mostrar outras listas, de acordo com a sua necessidade.
4 comentários:
Olá, Alexandre.
Muito legal este seu blog. Muito útil e interassante. Gostaria de lhe perguntar uma coisa. Eu tentei montar e executar o exemplo da Lista de Arquivos em um ListBox e obtive uma mensagem de erro quando tentei executá-lo. Na linha do Invoke ListBox fromHandleWithClass" using handle9 Listbox returning umListbox ele me dá a mensagem de Programa não encontrado no drive/diretorio ListBox.
Olá, André...
Isso aconteceu porque você não carregou a Class Library, a partir do Dialog System. Estou pesquisando há algum tempo uma forma de fazer isso pelo fonte COBOL, mas por enquanto, vou "quebrando o galho" carregando a Class Library por dentro do Dialog System. No evento SCREENSET-INITIALIZED da sua GS, insira o seguinte código:
CALLOUT-PARAMETER 1 CONFIG-FLAG $NULL
CALLOUT-PARAMETER 2 CONFIG-VALUE $NULL
MOVE 15 CONFIG-FLAG
MOVE 1 CONFIG-VALUE
CALLOUT "dsrtcfg" 3 $PARMLIST
Isso faz com que a Class Library seja "carregada" pelo Dialog System, e assim, todas as chamadas às classes do NetExpress vão funcionar normalmente.
Valeu pela visita, André. Abraços.
E aí, Alexandre, Blz ?
Você vê como são as coisas, né.
Este foi, se não o primeiro, uns dos primeiros artigos publicado por você e eu fui o primeiro a fazer um comentário.
Agora estou aqui novamente comentando.
Devido à dúvida de nossa amiga IanaMorte, eu voltei a este artigo e você nem imagina a utilidade que achei pra este recurso. Desta vez consegui fazê-lo funcionar.
Vou montar um programa com a utilidade que estou falando e depois vou enviá-lo completo pra você e espero sua avaliação sobre o mesmo, ok ? Valeu ! Té mais !!!
André - Sertãozinho - SP
ótimo, André... fico muito contente com a sua iniciativa em utilizar o recurso... aguardo o seu projeto, para minha apreciação, ok ?.. grande abraço !
Postar um comentário