Programando quadros de diálogo. A linguagem DCL. Códigos fonte de exemplos diversos, começando com quadros muito simples até os mais complicados... |
Em DCL, todas as palavras reservadas devem estar em minúsculas.
|
dup1_01 : dialog { label = "E.Fernal Software"; initial_focus = "ins-val"; : edit_box { label = "Insira valor"; key = "ins-val"; edit_width = 12; } ok_cancel_help; }
dup1_02 : dialog { label = "E.Fernal Software"; initial_focus = "ins-val"; : edit_box { label = "Insira valor"; key = "ins-val"; edit_width = 12; } : radio_row { label = "Unidade métrica"; : radio_button { label = "Milímetros"; key = "mm"; value = 1; } : radio_button { label = "Centímetros"; key = "cm"; } : radio_button { label = "Metros"; key = "me"; } } : spacer { width = 0.75; } ok_cancel_help; }
dup1_03 : dialog { label = "E.Fernal Software"; initial_focus = "ins-val"; : edit_box { label = "Insira valor"; key = "ins-val"; edit_width = 12; } : radio_row { label = "Unidade métrica"; : radio_button { label = "Milímetros"; key = "mm"; value = 1; } : radio_button { label = "Centímetros"; key = "cm"; } : radio_button { label = "Metros"; key = "me"; } } : spacer { width = 0.75; } : row { : button { label = "Layer >"; key = "la"; fixed_width = true; } : text { label = ""; key = "LA"; width = 35; } } : spacer { width = 0.75; } ok_cancel_help; }
;| INÍCIO DE COMENTÁRIOS 'dup1_03' é o nome do quadro de diálogo. Este nome deverá ser digitado, em sua rotina AutoLISP, exatamente como está neste arquivo dcl, no trecho (NEW_DIALOG "dup1_03" dcl_id) Caso contrário, o carregamento deste quadro de diálogo fracassará. 'initial_focus' ativa o campo 'edit_box' cuja 'key' é "ins-val". Ao ser lançado, o usuário poderá imediatamente digitar o valor deste campo. 'radio_row' abre uma caixa para uma linha de radio_buttons. Neste caso, inserimos 3 destes componentes. Eles são excludentes : sòmente um poderá estar assinalado. O retorno é "1" para assinalado e "0" para vasio. Neste caso poderemos também atribuir à uma variável, no caso 'unidade_metrica', a chave do componente assinalado EXEMPLO : (FOREACH x '("mm" "cm" "me") (ACTION_TILE x "(SETQ unidade_metrica $key)") ) Colocamos um espaçamento de 0.75 simplesmente por motivos estéticos... 'row' nos permite colocar uma série de componentes em uma linha: neste caso, temos um 'button' e um 'text'. Finalmente, usamos um componente definido no arquivo "BASE.DCL" do AutoCAD©, neste caso 'ok_cancel_help', que insere um botão "OK", cuja chave é "accept", um botão "Cancel", cuja chave é "cancel" e, finalmente, um botão "Help", cuja chave é "help" FIM DE COMENTÁRIOS |;
Palavras chave da linguagem DCL Em AZUL, palavras reservadas que indicam componentes Em VERMELHO, palavras reservadas que indicam atributos dos componentes @include diretiva de inclusão, permite que você defina clusters em um arquivo à parte, e o inclua em todas os demais arquivos .DCL SINTAXE @include "c:\\curso\\dcl\\base.dcl" alignment define o alinhamento de componentes de quadros de diálogo. EXEMPLO : text { label = "Componente 'text' com alinhamento normal"; } : text { label = "Componente 'text' com alinhamento 'centered'"; alignment = centered; } : text { label = "Componente 'text' com alinhamento 'right'"; alignment = right; } O default é alinhamento pela esquerda.allow_accept propriedade dos tiles tipo 'edit_box', 'image_button' e 'list_box' ativa o botão cuja propriedade 'is_default' seja 'true', quando um destes componentes, com 'allow_accept = true', for selecionado EXEMPLO : edit_box { label = "Digite texto"; key = "texto"; edit_width = 40; edit_limit = 55; allow_accept = true; } aspect_ratio define a proporção entre largura e altura de um componente 'image' ou 'image_button' SINTAXE : image { key = "i1"; width = 40; aspect_ratio = 0.75; } big_increment aplica-se ao componente do tipo 'slider' e define o menor valor incremental ao se deslizar o botão interno deste componente EXEMPLO : slider { key = "Temperatura"; min_value = 0; max_value = 100; small_increment = 1; big_increment = 10; } boxed_column abre uma caixa de enquadramento para uma coluna de componentes diversos, permitindo um rótulo. SINTAXE : boxed_column { label = "Lineweights"; [...demais componentes aqui...] } boxed_radio_column abre uma caixa de enquadramento para uma coluna de 'radio_button', permitindo um rótulo. SINTAXE : boxed_radio_column { label = "Caixa de enquadramento"; [...demais componentes aqui...] } boxed_radio_row abre uma caixa de enquadramento para uma coluna de 'radio_button' SINTAXE : boxed_radio_row { label = "Iso&metric Snap/Grid"; : radio_button { label = "&left"; key = "left"; } : radio_button { label = "&Top"; key = "top"; } : radio_button { label = "&right"; key = "right"; } } boxed_row abre uma caixa de enquadramento para uma linha de componentes diversos SINTAXE : boxed_radio_row { label = "boxed_row"; [...demais-componentes aqui...] } button insere um botão SINTAXE : button { label = "Cores"; key = "btn1"; width = 12; } cancel_button insere um botão "Cancel" SINTAXE cancel_button; centered propriedade de um alinhamento EXEMPLO : text { label = "Escolha bloco"; alignment = centered; } color define a cor de um quadro de imagem 'image' ou 'image_button' SINTAXE : image { key = "i1"; color = 0; width = 40; aspect_ratio = 0.5; } color_palette_1_7 vide no BASE.DCL do AutoCAD color_palette_1_9 vide no BASE.DCL do AutoCAD color_palette_0_9 vide no BASE.DCL do AutoCAD color_palette_250_255 vide no BASE.DCL do AutoCAD column abre uma coluna para componentes diversos SINTAXE : column { [...demais componentes aqui...] } concatenation concatena strings em um componente 'text' EXEMPLO : concatenation { default_button vide no BASE.DCL do AutoCAD default_dcl_settings dialog define um quadro de diálogo SINTAXE MEU_DCL_01 : dialog { label = "Dcl número 1"; : text { label = "Teste de dcl"; alignment = centered; } ok_only; } edit12_box vide no BASE.DCL do AutoCAD edit32_box vide no BASE.DCL do AutoCAD edit_box abre um campo de edição de texto SINTAXE : edit_box { label = "edit_box"; key = "raio"; edit_width = 12; edit_limit = 16; } edit_width define a largura de um componente 'edit_box' - vide acima errtile abre um campo 'text' padronizado, cujo 'key' é "error". SINTAXE errtile; heigth define a altura de componentes. EXEMPLO : list_box { label = "Opções"; height = 12; width = 40; key = "lista"; } false fcf_ebox vide no BASE.DCL do AutoCAD fcf_ebox1 vide no BASE.DCL do AutoCAD fcf_ibut vide no BASE.DCL do AutoCAD fcf_ibut1 vide no BASE.DCL do AutoCAD files_bottomdf vide no BASE.DCL do AutoCAD files_topdfM vide no BASE.DCL do AutoCAD fixed_width assegura que o componente tenha somente a largura mínima necessária EXEMPLO : button { label = "Largura"; key = "btn1"; fixed_width = true; } help_button insere um botão "Help" padronizado, cujo 'key' é "help" SINTAXE help_button; icon_image image abre um quadro de imagem SINTAXE : image { key = "img35"; width = 40; aspect_ratio = 0.77; color = -15; } image_block image_button abre um quadro de imagem clicável SINTAXE : image_button { key = "img36"; width = 40; aspect_ratio = 0.77; color = -15; } info_button insere um botão "Info" padronizado, cujo 'key' é "info" SINTAXE info_button; initial_focus lança o foco sobre o tile especificado SINTAXE initial_focus = "componente"; is_cancel define um componente qualquer como componente de saida EXEMPLO : button { label = "Encerra"; key = "sair"; is_cancel = true; } is_default is_tab_stop is_error_tile vide no BASE.DCL do AutoCAD key define a chave para cada um dos componentes EXEMPLO : edit_box { label = "Altura em mm"; key = "altura"; edit_width = 12; edit_limit = 16; } label define o rótulo de um componente - vide acima list insere um 'list_box' ou 'popup_list' com uma lista de strings EXEMPLO : popup_list { label = "Opções"; key = "pop"; width = 30; list = "Bloco 1\nBloco 2\nBloco 3\nBloco 4\nBloco 5"; } list_box abre um componente 'list' SINTAXE : list_box { label = "AutoLISP"; key = "lista"; width = 28; height = 16; } multiple_select permite selecionar mais de uma linha em componentes 'list_box' e/ou 'popup_list' EXEMPLO : list_box { label = "AutoLISP"; key = "lista"; width = 28; height = 16; multiple_select = true; } o default é 'false' e não precisa ser inserido ok_button insere um botão 'OK' padronizado, cujo 'key' é "accept" SINTAXE ok_button; ok_cancel insere um par de botões padronizados, sendo o primeiro 'OK' e o segundo 'Cancel', e cujos 'key' são "accept" e "cancel" SINTAXE ok_cancel; ok_cancel_help insere três botões padronizados, sendo o primeiro 'OK', o segundo 'Cancel' e o terceiro 'Help', e cujos 'key' são "accept", "cancel" e "help" SINTAXE ok_cancel_help; ok_cancel_err insere dois botões, o primeiro 'OK', cujo 'key' é "accept", o segundo 'Cancel', com 'key' igual a "cancel" e uma linha 'errtile', cujo 'key' é "error" ok_cancel_help_errtile idem acima, com mais um botão "Help", cujo 'key' é "help" ok_cancel_help_info insere os botoes 'OK', 'Cancel', 'Help' e 'Info', cujos 'keys' são, respectivamente, "accept", "cancel", "help" e "info" ok_only insere um botão 'OK' cujo 'key' é "accept", pré-definido no BASE.DCL do AutoCAD© paragraph popup_list insere um componente tipo lista SINTAXE : popup_list { label = "popup_list"; key = "pop1"; } radio_column abre uma coluna de 'radio_button' SINTAXE : radio_column { : radio_button { label = "Opção 1"; key = "opt1"; } : radio_button { label = "Opção 2"; key = "opt2"; } : radio_button { label = "Opção 3"; key = "opt3"; } : radio_button { label = "Opção 4"; key = "opt4"; } } radio_row abre uma linha de 'radio_button' SINTAXE : radio_row { : radio_button { label = "radio_button 1"; key = "opt1"; } : radio_button { label = "radio_button 2"; key = "opt2"; } } retirement_button right row abre uma linha de componentes SINTAXE : row { [...demais componentes aqui...] } slider insere um componente deslizante SINTAXE : slider { key = "sli"; min_value = 1; max_value = 100; big_increment = 10; small_increment = 1; } small_increment aplica-se ao componente do tipo 'slider' e define o menor valor incremental ao se deslizar o botão interno deste componente EXEMPLO : slider { key = "Temperatura"; min_value = 0; max_value = 100; small_increment = 1; big_increment = 10; } spacer define um espaçamento entre componentes SINTAXE : spacer { width = 3; } spacer_0 um 'spacer' com espaçamento 0 SINTAXE spacer_0; spacer_1 um 'spacer' com espaçamento 1 SINTAXE spacer_1; std_rq_color vide no BASE.DCL do AutoCAD swatch tabs aplica-se somente a componentes 'list_box' e 'popup_list', e define, nestes componentes, os espaços de tabulação de um texto. EXEMPLO : list_box { label = "Tabela 1"; key = "tabela1"; width = 80; height = 12; tabs = "8 16 24 32 40"; } text_part text_25 vide no BASE.DCL do AutoCAD toggle define um componente assinável SINTAXE : toggle { label = "Deseja cotar?"; key = "cotar"; value = 1; } true define uma propriedade como verdadeira EXEMPLO : list_box { label = "Selecione"; key = "lista"; width = 40; height = 12; multiple_select = true; } value inicializa o valor de retorno do componente EXEMPLO : toggle { label = "Deseja cotar?"; key = "cotar"; value = 1; } acima, o 'toggle' estará assinalado na abertura do quadro de diálogo e abaixo, estará desmarcado. : toggle { label = "Deseja cotar?"; key = "cotar"; value = 0; } o default é 0 width define a largura de um componente EXEMPLO : button { label = "Botão"; key = "b1"; width = 30; }
Exemplos diversos
////////// código fonte do quadro de diálogo da esquerda alo1 : dialog { label = "Como criar quadros de diálogo"; : text { label = "Um quadro bem simples..."; alignment = centered; } : button { key = "accept"; is_default = true; label = "OK"; fixed_width = true; alignment = centered; } } ////////// código fonte do quadro de diálogo da direita alo2 : dialog { label = "Como criar quadros de diálogo"; : text { label = "Um quadro bem simples..."; alignment = centered; } ok_button; }
Exemplos de rotinas do curso |
Exemplos de listas |
O BASE.DCL do AutoCAD© |
Home |