Características de todas as tags visuais¶
Características de todas as tags visuais¶
O SDK3 utiliza o conceito de orientação a objetos nos componentes visuais e todos os componentes visuais são objetos do tipo “controle” (herança, em orientação a objetos).
Isto significa que todos os componentes e tags visuais de arquivo LFM (edit, label, button, layout, etc..) possuem as características, propriedades e métodos descritos nesta seção.
Propriedades e atributos de todas as tags visuais¶
| Propriedade | Tipo | Valor Padrão | Descrição |
|---|---|---|---|
| visible | Boolean | true | Define se o controle está visível ou invisível. Um controle pode existir invisível e ser exibido quando alguma condição ou ocasião acontecer. |
| enabled | Boolean | true | Define se o controle está ativo ou não. Um controle inativo é exibido na interface, mas não é possível interagir com ele, como se tivesse bloqueado. |
| name | String | \<string vazio> | Define um nome para o controle. O nome deve ser único, isto é, dentro de um form, não é possível existir 2 controles com o mesmo nome. Se não for definido um nome para o controle no arquivo LFM, um nome único será gerado para ele em tempo de compilação. Nomear controles é especialmente útil quando se quer trabalhar com códigos LUA. |
| align | Enumerado: “none” “top” “left” “bottom” “right” “client” | “none” | Define o alinhamento visual do controle na interface. Com esta propriedade é possível definir um comportamento padrão de posicionamento e tamanho para os controles. none – O controle não sofrerá nenhum tipo de posicionamento e redimensionamento automático. top – O controle será posicionado no topo de seu pai e a largura será calculada para preencher o espaço. Os valores de left, top e width são calculados automaticamente, mas é possível definir a altura (height). left – O controle será posicionado à esquerda de seu pai e a altura será calculada para preencher o espaço. Os valores de “left”, “top” e “height” são calculados automaticamente, mas é possível definir a largura (width). bottom - O controle será posicionado no rodapé de seu pai e a largura é calculada para preencher o espaço. Os valores de left, top e width são calculados automaticamente, mas é possível definir a altura (height). right – O controle será posicionado à direita de seu pai e a altura será calculada para preencher o espaço. Os valores de “left”, “top” e “height” são calculados automaticamente, mas é possível definir a largura (width). client – O controle será posicionado de forma que ocupe toda a área de seu pai. Os valores de left, top, width e height são automaticamente calculados. |
| left | Float | 0.0 | Define a posição X do controle. A posição é relativa a seu pai. Veja Posição e Tamanho dos Controles. |
| top | Float | 0.0 | Define a posição Y do controle. A posição é relativa a seu pai. Veja Posição e Tamanho dos Controles. |
| width | Float | Depende do controle | Define a largura do controle. Veja Posição e Tamanho dos Controles. |
| height | Float | Depende do controle | Define a altura do controle. Veja Posição e Tamanho dos Controles. |
| margins | Bounds (Objeto Lua) | {} | Define o tamanho das margens do controle, isto é, o tamanho da “borda invisível” que existe ao redor do controle que o separa do outros. Especialmente útil quando se usa a propriedade “align”. O valor desta propriedade é uma tabela lua com os campos “left”, “right”, “top” e “bottom”, onde a omissão de algum campo representa o valor 0.0. Exemplos de valores: {} - left, right, top e bottom 0.0 {left = 5} - left 5, demais valores 0 {left = 5, top = 5} – left 5, top 5, right 0, bottom 0 {left = 5, right = 5, top = 5, bottom = 5} – todos os valores 5 |
| padding | Bounds (Objeto Lua) | {} | Define o tamanho do preenchimento do controle, isto é, o tamanho da “borda invisível” que existe no interior do controle entre sua periferia e seu conteúdo. O valor desta propriedade é uma tabela lua com os campos “left”, “right”, “top” e “bottom”, onde a omissão de algum campo representa o valor 0.0. |
| anchors | Conjunto de: left top right bottom | “left top” | Define como o controle é ancorado em seu pai. Quando o pai do controle é redimensionado, o controle mantém sua posição relativa baseado em sua âncora. Exemplos: “left” presente, ”right” ausente: O controle manterá sempre a mesma posição X. “left” ausente, “right” presente: A posição X será calculada automaticamente para manter sempre a mesma distância entre sua borda direita e a borda direita de seu pai. “left” e “right” presentes: O controle manterá tanto a distância entre (1) sua borda esquerda com a borda esquerda de seu pai; (2) como sua borda direita com a borda direita de se pai. Para isso, a largura do componente será alterada conforme o pai é redimensionado. “left” e “right” ausentes: O controle não está ancorado e ocorrerá um efeito similar ao de centralização. O comportamento das âncoras “top” e “bottom” é o mesmo das âncoras “left” e “right”, porém agora no eixo Y. |
| hitTest | Boolean | Depende do controle | Define se o clique e movimento do mouse e o touch são capturados por este controle. |
| cursor | Enumerado: "default" "arrow" "handPoint" "hourGlass" "IBeam" "size" "sizeNESW" "sizeNS" "sizeNWSE" "sizeWE" "upArrow" "drag" "noDrop" "hSplit" "vSplit" "multiDrag" "sqlWait" "no" "appStart" "help" "cross" | "default" | Define qual cursor de mouse deve ser apresentado quando o mouse estiver em em cima do controle. OBS: hitTest deve ser "true" para esta propriedade ter efeito. "default" - Cursor padrão, uma seta padrão. "arrow" - Uma seta padrão. "handPoint" - Uma mão com um dedo apontando para cima. Normalmente é usado para identificar um item selecionável/clicável "hourGlass" - Uma ampulheta para indicar um processo em andamento. "IBeam" - Cursor que sinaliza a possibilidade de entrar com texto no controle. "size" - Indicação de possibilidade de redimensionamento. "sizeNESW" - Indicação de possibilidade de redimensionamento no sentido Nordeste-Sudoeste "sizeNS" - Indicação de possibilidade de redimensionamento no sentido Norte-Sul "sizeNWSE" - Indicação de possibilidade de redimensionamento no sentido Noroeste-Sudeste "sizeWE" - Indicação de possibilidade de redimensionamento no sentido Leste-Oeste "upArrow" - Uma seta apontando para cima. "drag" - Um cursor indicando que itens estão sendo arrastados. "noDrop" - Indicação de que não é possível arrastar para este alvo. "hSplit" - Indicação de splitter horizontal "vSplit" - Indicação de splitter vertical. "multiDrag" - Indicação de que vários itens estão sendo arrastados. "sqlWait" - Ampulheta indicando um processo de banco de dados em andamento. "no" - Uma indicação de negação, de que não é possível fazer algo. "appStart" - Combinação de "default" e "hourGlass", normalmente usado para indicar que um aplicativo está sendo aberto. "help" - Uma seta com um ponto de interrogação. "cross" - Um cursor em formato de cruz, usado para indicar um posicionamento preciso. |
| hint | String | "" | Define um texto de ajuda que é exibido quando o usuário deixar o mouse por um certo tempo em cima do controle. Esta propriedade só tem efeito se o atributo "hitTest" do controle for true. |
| canFocus | Boolean | Depende do controle | Define se o controle pode receber o foco do teclado. |
| tabOrder | Integer | \<automático> | Define um número que representa a ordem de tabulação do controle, isto é, quando o usuário apertar TAB no teclado para pular para o próximo controle de edição. |
| opacity | Float | 1.0 | Define a transparência do controle. É um número real que varia de 0.0 a 1.0, onde: 0.0 – totalmente transparente 0.25 0.5 – parcialmente transparente 0.75 1.0 – totalmente opaco. |
| rotationAngle | Float | 0.0 | Define o ângulo de rotação do controle. O ângulo é medido em graus. |
| rotationCenterX | Float | \<centro X do controle> | Define o valor X da coordenada (X, Y) do pivô de rotação do controle. Usado em conjunto com “rotationAngle” |
| rotationCenterY | Float | \<centro Y do controle> | Define o valor Y da coordenada (X, Y) do pivô de rotação do controle. Usado em conjunto com “rotationAngle” |
| scaleX | Float | 1.0 | Define o fator de escala que deve ser aplicado à largura do controle. |
| scaleY | Float | 1.0 | Define o fator de escala que deve ser aplicado à altura do controle. |
| scale | Float | 1.0 | Define o fator de escala que deve ser aplicado à largura e altura do controle. |
| parent | Um objeto | nil | Define ou retorna o objeto parent deste controle. Não há necessidade de utilizar este atributo em tags de arquivos ".lfm", pois o parent de cada tag já é setada automaticamente conforme seu aninhamento. Veja também: Posição e Tamanho dos Controles |
Métodos de todas as tags visuais¶
É possível invocar métodos dos controles usando código LUA.
| Método | Descrição |
|---|---|
| controle:destroy(); | Destrói o controle, liberando a memória usada por ele. Após a chamada “destroy”, não é mais possível utilizar o controle. Normalmente você não precisa se preocupar em destruir os controles, pois isto é feito automaticamente. |
| controle:setFocus(); | Coloca o foco do teclado neste controle. |
| controle:beginUpdate(); | Coloca o controle num estado de “em alteração”. Neste estado, as alterações feitas nas propriedades não serão apresentadas na interface. É útil quando se pretende alterar várias propriedades ou várias vezes, pois o processo fica mais rápido, já que as mudanças não serão apresentadas na tela de imediato. Para cada chamada de “beginUpdate”, deve haver uma chamada de “endUpdate”. |
| controle:endUpdate(); | Tira o controle do estado “em alteração”, voltando a seu comportamento normal. Para cada chamada de “beginUpdate”, deve haver uma chamada de “endUpdate”. |
| controle:needRepaint(); | Sinaliza o SDK3 que o controle precisa ser redesenhado na tela. Normalmente você não precisa se preocupar em chamar este método! |
| controle:getChildren(); | Retorna um array (tabela lua com chaves de 1 a QUANTIDADE) contendo os controles que são filhos destes controles. Exemplo: |
| --- | |
| controle:getParent(); | Retorna o controle pai deste controle ou nil se não houver. |
| controle:setParent(parent); | Define o controle pai deste controle. Parâmetros: parent – O objeto controle que será pai deste controle ou nil. |
| controle:isChildFocused(); | Retorna um boolean (true ou false) indicando se este controle ou algum dos controles filhos está com o foco do teclado. |
| controle:isFocused(); | Retorna um boolean (true ou false) indicando se este controle está com o foco do teclado. |
| controle:isMouseOver(); | Retorna um boolean (true ou false) indicando se o mouse está por cima do controle (não necessariamenteclicado). |
| controle:isVisible(); | Retorna um boolean (true ou false) indicando se o controle está visível. |
| controle:findControlByName( controlName); | Procura outro controle através do nome passado pelo parâmetro “controlName” em toda a hierarquia de controles onde este está. Retorna o controle ou nil caso não encontre. |
| controle:getClassName(); | Retorna o nome da classe/tipo da tag deste controle. Exemplos: "edit", "label", "layout", etc.. |
Eventos de todas as tags visuais¶
| Nome do evento | Descrição |
|---|---|
| onClick | Este evento é invocado quando ocorre um click com o botão esquerdo do mouse no controle, ou quando ocorre um “tap touch” no controle. |
| onDblClick | Este evento é invocado quando ocorre um clique duplo com o mouse no controle. |
| onMouseDown | Este evento é invocado quando um botão do mouse é pressionado sobre o controle ou quando o dedo toca a tela (touchscreen). Parâmetros: event - uma tabela Lua que contém os seguintes atributos: button – indica qual botão do mouse foi pressionado, e pode conter um dos seguintes valores: “left”, “middle” ou “right”... Quando o dedo é pressionado (touchscreen), este valor é “left”. x – posição X (relativa a este controle) indicando onde o mouse foi pressionado. y – posição Y (relativa a este controle) indicando onde o mouse foi pressionado. shiftKey - true se a tecla shift estiver pressionada também ctrlKey - true se a tecla control estiver pressionada também altKey - true se a tecla alt estiver pressionada também. Observações: Este evento só é disparado se a propriedade hitTest do controle for "true" |
| onMouseMove | Este evento é invocado quando o mouse se movimenta pelo controle ou quando o dedo (touchscreen) é arrastado. Parâmetros: event - uma tabela Lua que contém os seguintes atributos: x – posição X (relativa a este controle) indicando para onde o mouse moveu. y – posição Y (relativa a este controle) indicando para onde o mouse moveu. shiftKey - true se a tecla shift estiver pressionada também ctrlKey - true se a tecla control estiver pressionada também altKey - true se a tecla alt estiver pressionada também. Observações: Este evento só é disparado se a propriedade hitTest do controle for "true" |
| onMouseUp | Este evento é invocado quando um botão do mouse é liberado sobre o controle ou quando o dedo solta da tela (touchscreen). Parâmetros: event - uma tabela Lua que contém os seguintes atributos: button – indica qual botão do mouse foi liberado, e pode conter um dos seguintes valores: “left”, “middle” ou “right”... Quando o dedo é levantado (touchscreen), este valor é “left”. x – posição X (relativa a este controle) indicando onde o mouse foi liberado. y – posição Y (relativa a este controle) indicando onde o mouse foi liberado. shiftKey - true se a tecla shift estiver pressionada também ctrlKey - true se a tecla control estiver pressionada também altKey - true se a tecla alt estiver pressionada também. Observações: Este evento só é disparado se a propriedade hitTest do controle for "true" |
| onMouseEnter | Este evento é invocado quando o mouse entra na área do controle. Observações: Este evento só é disparado se a propriedade hitTest do controle for "true" |
| onMouseLeave | Este evento é invocado quando o mouse sai da área do controle. Observações: Este evento só é disparado se a propriedade hitTest do controle for "true"' |
| onResize | Este evento é invocado quando o controle é redimensionado |
| onEnter | Este evento é invocado quando o controle recebe o foco do teclado |
| onExit | Este evento é invocado quando o controle perde o foco do teclado. |
| onKeyDown | Este evento é invocado quando uma tecla (teclado) é pressionada. Parâmetros: event - uma tabela Lua que contém os seguintes atributos key - Cadeia de caracteres contendo a letra do teclado que foi pressionada keyCode – Código numérico da tecla que foi pressionada (algumas teclas, como F7, por exemplo, não representam uma letra, daí a necessidade do keyCode) shiftKey - true se a tecla shift estiver pressionada também ctrlKey - true se a tecla control estiver pressionada também altKey - true se a tecla alt estiver pressionada também. Observações: Se você alterar o valor de key e/ou keyCode, a mudança é incorporada. Caso queira suprimir/ignorar a tecla que acabou de ser pressionada, atribua event.key = "" e event.keyCode = 0. Se a combinação de teclas pressionada puder ser um atalho, então event.key virá com valor "" (string vazio) e event.keyCode com valor diferente de 0. Se a combinação de teclas pressionada puder ser tratada como um caractere exibível, event.key vira com uma string contendo apenas este caracter e event.keyCode virá com valor igual a 0. |
| onKeyUp | Este evento é invocado quando uma tecla (teclado) é liberada. Parâmetros: event - uma tabela Lua que contém as mesmas propriedades descritas no evento onKeyDown mas com informações sobre a tecla liberada. |
| onMenu | Este evento é invocado quando o usuário deseja exibir o Menu do controle. Pode ser que o usuário clicou com botão direito do mouse, pressionou a tecla menu ou segurou por um longo tempo o dedo na tela (LongTouch). Parâmetros: x - Número contendo onde, no eixo X da tela do usuário, o menu deve ser exibido. y - Número contendo onde, no eixo Y da tela do usuário, o menu deve ser exibido. |
| onStartDrag | Evento que é chamado quando o usuário deseja iniciar o processo de arrastar-e-soltar informações partindo deste controle e você deseja informar quais ações ou dados existem em um determinado ponto do controle. Parâmetros: drag - Objeto Drag o qual você deve preencher as informações para o RRPG acasalar o drag com o drop. x - Numero contendo a posição do eixo X de onde o drop está tentando ser feito. y - Numero contendo a posição do eixo y de onde o drop está tentando ser feito. Por favor, consulte Arrastando-e-Soltando Informações / Drag and Drop para conhecer melhor sobre o processo drag and drop. Observações: hitTest deve ser "true" para este evento poder ser chamado. |
| onStartDrop | Evento que é chamado quando alguém arrasta uma informação em cima do controle e você deseja informar quais ações ou dados existem em um determinado ponto do controle. Parâmetros: drop - Objeto Drop o qual você deve preencher as informações para o RRPG acasalar o drag com o drop. x - Numero contendo a posição do eixo X de onde o drop está tentando ser feito. y - Numero contendo a posição do eixo y de onde o drop está tentando ser feito. drag - Objeto Drag representando a informação que está sendo arrastada. Você não deve alterar as propriedades deste objeto. Por favor, consulte Arrastando-e-Soltando Informações / Drag and Drop para conhecer melhor sobre o processo drag and drop. Observações: hitTest deve ser "true" para este evento poder ser chamado. |
Veja também:¶
Created with the Personal Edition of HelpNDoc: Don't be left in the past: convert your WinHelp HLP help files to CHM with HelpNDoc