4D v15 - Update (edição standard)

Tamanho: px
Começar a partir da página:

Download "4D v15 - Update (edição standard)"

Transcrição

1 4D v15 - Update (edição standard) Bem vindo a 4D v15. Este manual descreve todas as funções e implementações adicionados neste novo grande lançamento de 4D. 4D v15 representa um passo crucial no processo de integrar os aplicativos 4D com novas tecnologias, tanto de hardware quanto de software, ao mesmo tempo que oferece novas funcionalidades esperadas pela comunidade de desenvolvedores 4D: Novo tipo de campo "Objet", Multiplas otimizações (pesquisar via SQL engine e arrays ordenados, a nova capa de rede ServerNet, níveis elevados de segurança de rede, suporte estendido para Unicode, etc.) Novas funcionalidades que fazem o código 4D independente das configurações locais (modo Unicode e modo internacional para métodos), Abertura à novas tecnologias: 4D Mobile para conexão com os aplicativos Wakanda, LDAP para conexão com diretórios empresariais, novas tags 4D como alternativas às tecnologias XSLT, que está sendo abandonada, Adição de muitos novos comandos e funções para gerenciar formas e seus objetos, tais como list boxes, para ajudar com o design de interfaces modernas e dinâmicas, Novo objeto 4D Write Pro para edição e processamento de texto integrados, Adição de funcionalidaes para monitorar e instrospecção de código e pesquisas, Novas versões OS X 64-bit: 4D v15 entrega não apenas a versão OS X 64-bit de 4D Server (preview), como também de 4D Internet Commands, 4D Pack, 4D For OCI, 4D ODBC Pro e 4D ODBC Driver, permitindo que você construa um ambiente completo nas máquinas mais poderosas de Apple (Note entretanto que 4D Server 64-bit para OS X está sendo oferecido como um lançamento introdutório e não é recomendado que se use como um ambiente de produção). Nota: Se você for um membro do programa 4D de entrega contínua (R-release), já tevve a oportunidade de realizar diveras atualizações progressivas nos seus aplicativos 4D e esta versão é apenas mais um lançamento. Por exemplo, se você estiver usando a versão v14 R5, já tem todas as novas funcionalidades etiquetadas "v14 Rx" que estão incluidas neste manual e que estão cobertas nos manuais anteriores de upgrade da versão R. Neste caso, veja o manual 4D v15 - Upgrades (edição R- release). Modo Desenho Language 4D Server 4D SQL Server Optimizations 4D Write Pro 4D Internet Commands 4D View 4D SVG 4D Pack Company Directory (LDAP) Lista alfabética dos comandos

2 Modo Desenho Interface de Command Line estendida Tipo de dados campo de de Objeto Índice obrigatório para campos únicos Formulários Comandos obsoletos ocultos Modo Unicode para métodos Configuração Inglês-US no Editor de Métodos Debugger e Runtime Explorer Editor de pesquisas Arquivo de dados por padrão en aplicativos fusionados

3 Interface de Command Line estendida Originalmente introduzido em 4D v14 R3 O analisador de linhas de comando da aplicação, anteriormente suportado para OS X unicamente, melhorou para ser executado em OS X e Windows. Agora pode escrever em Windows por exemplo: %HOMEPATH%\Desktop\4D\4D.exe --structure %HOMEPATH%\Documents\myBase.4dbase --data %HOMEPATH%\Documents\data\myData.4DD

4 Tipo de dados campo de de Objeto A partir de 4D v15, um novo tipo de campo objeto é suportada pelos dados do motor de banco de dados 4D. Desde 4D v14, você pode manipular objetos em suas aplicações 4D, mas apenas através da linguagem (ver Objetos (Linguagem)). O tipo de campo Objeto permite-lhe ir mais longe: armazenar objetos no arquivo de dados, adicionar, modificar ou excluir de forma dinamica atributos de objetos, fazer pesquisas de objetos por atributo, Os valores de importação / exportação de objetos, etc. Nota de Execução: alguns recursos não suportam atualmente os campos objeto (veja o próximo parágrafo Limitações atuais). Por que usar campos Objeto? O tipo objeto permite definir campos sem esquema dinâmico. Estes campos objeto podem ser considerados como campos "definidos pelo usuário" ou "personalizados". Em 4D v15, agora tem que escolher entre os modelos de dados com ou sem esquema. Em ambos os casos, você pode executar pesquisas indexadas rápidas. Observe também que os campos objeto podem simplificar os modelos de dados padrão. Por exemplo, para uma tabela "Contatos" convencional, apenas um campo de tipo objeto permite evitar a criação de dezenas de campos que representam todos os valores possíveis, a maioria dos quais não são usados em 90% dos casos. O modelo de informação em tempo real é criado somente se necessário. Definição de campo Objeto O novo campo de tipo de objeto pode ser definido como qualquer tipo de dados, utilizando o Inspector no editor de estrutura: Os campos objetos 4D armazenam pares atributo / valor de diferentes tipos, sem esquemas de dados predefinidos. A estrutura de dados armazenados não é necessariamente a mesmo entre os diferentes registos. Por exemplo, um campo objeto [Person]Address pode conter atributos diferentes, dependendo da cidade, país, etc.: record1= {"street1":"cotton Treasure Grounds", "street2":"place Corners", "state":"md",...} <p>record2= {"street1":"umber Road", "Number":"28", "state":"mo",...} A estrutura dos objetos 4D é baseada no princípio de pares "atributo / valor". A sintaxe destes objectos baseia-se na notação JSON, mas não a segue completamente: Um nome de atributo é sempre um texto, como "Nome". Um valor de atributo pode ser dos seguintes tipos: número (Real, Inteiro, etc.) texto array (texto, real, inteiro longo, inteiro, booleano, objeto, ponteiro)

5 array (texto, real, inteiro longo, inteiro, booleano, objeto, ponteiro) nulo Booleano ponteiro (armazenado como tal, avaliado usando o comando JSON Stringify ou ao copiar) data (formato "YYYY-MM-DDTHH:mm:ssZ" ) objeto (os objetos podem ser inseridos em vários níveis). Aviso: Lembre-se que nomes de atributos são sensíveis a maiúsculas e minúsculas. Campos de objeto podem ser tão grandes quanto 2 GB. Ao trabalhar com um registro que contém um campo Objeto, todo o objeto é carregado na memória. Da mesma maneira que para os campos do tipo Texto, Imagem ou BLOB, os campos objeto podem ser armazenados no arquivo de dados (com os registros ou não) ou fora do arquivo de dados; esta opção é descrita na seção Armazenamento externo dos dados do Manual de Design. Um campo objeto pode ser indexado (apenas opção Automática), o que significa que todos os caminhos de atributos são automaticamente indexados. Também pode ser Invisible ou ter o atributo Expor com o serviço 4D Mobile. Além disso, o campo de objeto não pode ser definido como único. Use o comando 4D Objetos (Linguagem) para gerenciar os campos objeto. Use os comandos OB Get e OB SET para ler e gravar dados nos campos de tipo Objeto. Você também pode armazenar e ler arrays como atributos usando os comandos OB SET ARRAY e OB GET ARRAY. Como campos de tipo de Objeto são baseados em texto, o conteúdo de um campo Objeto é exibida em um formulário 4D como padrão como texto e com formato JSON (veja o próximo parágrafo). Nota: Para trabalhar com objetos JSON, você pode usar os comandos da"json". Exibir e inserir campos Objetos em Formulários Como padrão, os campos objeto são representados como áreas de texto nos formulários 4D. Dentro destas áreas, os dados objeto deve ser undefined, ou devem ser formatados em texto JSON; caso contrário, um erro é retornado. Por exemplo, se você definiu o campo [Rect]Desc como um campo objeto, você pode escrever: CREATE RECORD([Rect]) <p>[rect]name:="blue square" OB SET([Rect]Desc;"x";"50";"y";"50";"color";"blue") SAVE RECORD([Rect]) Quando o campo [Rect]Desc estiver incluído no seu formulário, os seguintes conteúdos são exibidos: Você pode editar os valores que são exibidos diretamente no campo texto ou digitar dados objeto diretamente com a notação padrão; será formatado em JSON automaticamente quando pulsar a tecla [Tab]: No entanto, a edição direta deve ser feita com cautela, já que os espaços fora de lugar, ou símbolos, irá resultar em um erro de análise JSON e não se salvam os dados editados:

6 Normalmente, ele é mais preciso para lidar com o conteúdo dos campos objeto através de comandosobjetos (Linguagem) e JSON. Obter e definir valores de Campos Objeto Todos os comandos do Objetos (Linguagem) agora aceitam um campo objeto como o primeiro parâmetro (objeto). Da mesma forma que objetos de linguagem padrão, os valores de campo objeto são manipulados pelos comandos do tema Objetos (Linguagem). Por exemplo: // Defina um valor OB SET([Pessoas] Identity_OB;"Nome";$ firstname) OB SET([Pessoas] Identity_OB,"Last Name",$ lastname) // Obter um valor $ FirstNameOB=Get([Pessoas] Identity_OB;"Nome") $ ApelidoOB=Get([Pessoas] Identity_OB,"Last Name") Os arrays também são suportados, por exemplo: ARRAY TEXT($arrGirls;3)</p><p>$arrGirls{1}:="Emma" $arrgirls{2}:="susan" $arrgirls{3}:="jamie" OB SET ARRAY([Persons]Children;"Girls";$arrGirls) Suporte de campos de Objeto na linguagem 4D A linguagem 4D foi atualizado para suportar campos de objeto. Em particular: Todos os comandos do Objetos (Linguagem) agora suportam campos de objetos como o primeiro parâmetro (objeto) Um novo comando foi adicionado para lidar com pesquisas em campos objeto: [QUERY BY ATTRIBUTE. Este comando é detalhado em uma seção separada. ComandosSELECTION TO ARRAY, SELECTION RANGE TO ARRAY e ARRAY TO SELECTION suportam campos Objeto através dearray OBJECT. Comandos Selection to JSON e JSON TO SELECTION suportam campos de objetos, que é automaticamente convertido de e para JSON. Note, no entanto, que a seguinte expressão 4D é ambígua: Selection to JSON([aTable];objectField) Pode ser interpretado como: - Produzir JSON de todos os valores campoobjeto na seleção atual da tabela

7 - Produzir JSON usando o valor de registro atual de 'objectfield' como um modelo 4D irá comportar-se como descrito no primeiro caso, já que é o caso mais utilizado. Os Comandos Old e Modified suportam campos Objeto. SET FIELD VALUE NULL apaga o conteúdo dos campo Objeto. GET FIELD PROPERTIES agora pode devolver Is object. PROCESS 4D TAGS suporta campos Objeto apenas em fórmulas 4D. Note, porém, que, por razões técnicas, alguns comandos não suportam campos Objeto. Estes comandos estão listados na seção "Limitações atuais". Formulas com Campos de Objeto Os campos de objeto pode ser usado em fórmulas (usando o editor de fórmulas padrão ou o comando EXECUTE FORMULA). No entanto, neste contexto, os campos de objectos podem ser manuseados apenas com os seguintes comandos: OB Get OB Is empty OB Is defined OB Get type Por exemplo, você pode executar a seguinte fórmula de pesquisa: OB Get([Rect]Desc;"color")="blue" Limitações atuais A maioria das características padrão de 4D suportam campos de tipo objeto. Mas algumas partes avançadas do aplicativo não está prontas para usar diretamente os campos objeto na versão atual. Estas peças são progressivamente atualizadas e estarão disponíveis em versões futuras. Compatibilidade parcial através de 4D formulas As seguintes funções ou comandos suportam parcialmente campos objeto através de fórmulas 4D: Função/Comando Editor de pesquisas Editor de ordenação Editor de importação/exportação 4D Write 4D Write Pro 4D View 4D Tags PROCESS 4D TAGS Sem suporte As seguintes funções e comandos 4D não admitem campos objeto: Funções/Comandos Editor de relatórios rápidos Editor de etiquetas SQL Data Definition Language (CREATE TABLE) SQL Data Manipulation Language (SELECT, INSERT, UPDATE) SQL EXPORT DATABASE e SQL EXPORT SELECTION Gráficos PHP Plugin SDK DISTINCT VALUES RELATE ONE RELATE MANY ORDER BY SCAN INDEX

8 Índice obrigatório para campos únicos Em 4D, os campos com o atributo Único devem ser indexados. No editor de estrutura já não será possível definir campos com um atributo único, se não têm um índice. Em versões anteriores, ainda era possível obter uma configuração deste tipo com fins de manutenção. O editor de estrutura foi atualizado: indica visualmente que será criado um índice (se não existe) quando se seleciona o atributo Único para um campo: lhe impede retirar o índice de um campo único (Nenhum ou eliminar opções que não estão disponíveis para os índices quando se seleciona um campo deste tipo): Se deseja eliminar o índice de um campo único, deve eliminar o atributo Único de antemão.

9 Formulários Novo ícone para formato de imagem improcessável Um novo ícone é mostrado para as imagens que se armazenam em um formato que não é "processável" na máquina. A extensão do formato faltante é escrito na parte inferior do ícone: Este ícone se utiliza de forma automática sempre que se visualizam as imagens: Indica que a imagem não pode ser mostrada ou processada localmente, mas pode ser armazenada para sua visualização em outra máquina. Este é o caso, por exemplo, das imagens em formato PDF em uma plataforma Windows ou imagens baseadas em PICT com um 4D Server 64 bits sob OS X (ver 4D Server 64 bits para OS X (versão pré)). Nova propriedade Rádio de esquina Você pode configurar o rádio de arredondar esquinas de objetos de formulário retângulo arredondado. A propriedade rádio define o rádio de cada esquina arredondada. Nota: em versões anteriores, esta propriedade não era personalizada (sempre 5 píxels). Esta propriedade está disponível através da nova opção Rádio de esquina na lista de propriedades do editor de formulários (descrito mais a frente), assim como o uso de dois novos comandos da linguagem (ver OBJECT SET CORNER RADIUS e OBJECT Get corner radius). Rádio de esquina A propriedade Rádio de esquina já está disponível no tema "Coordenadas e Tamanho" da Lista de propriedades para os objetos retângulo arredondado:

10 Por padrão, o valor do rádio de retângulos arredondados é 5 pixels. Pode mudar esta propriedade para desenhar retângulos arredondados com formas personalizadas: O valor mínimo é 0, neste caso se desenha um retângulo não arredondado. O valor máximo depende do tamanho de retângulo (que não pode exceder a metade do tamanho do lado mais curto do retângulo) e se calcula dinamicamente. Nomes mais longos para objetos formulários Os nomes de objetos de formulário agora podem conter até 255 bytes. Em versões anteriores, estes nomes se limitaram a 31 bytes. O uso de nomes maiores para os objetos de formulários oferece uma maior facilidade na definição e aplicação das normas de denominação específicas, como "xxxx_button" ou "xxx_mac".

11 Comandos obsoletos ocultos A partir de 4D v15, comandos 4D obsoletos têm consistentemente o prefixo "_o_" e são removidos a partir das listas 4D, assim como as listas de entrada preditivas. Nota: A lista de comandos obsoletos renomeado em 4D v15 está em "Comandos obsoletos renomeados". Nas versões anteriores, os comandos obsoletos nem sempre têm prefixos, como tal, e estavam disponíveis junto com os comandos normais, que podem ser uma fonte de confusão. Em 4D v15, só os comandos não obsoletos podem ser selecionados a partir de listas de comandos: As listas em questão são: Explorador / aba "Comandos" Listas de seleção do editor de métodos (lista de comandos e lista de comandos por tema), assim como a janela de entrada preditiva Listas de seleção editor de fórmulas. Claro que, em seu código existente, comandos obsoletos não são excluídos (só vai ter o prefixo "_o_") e continuarão a trabalhar como documentado anteriormente, enquanto forem suportados. Se for necessário, você pode adicionar um comando obsoleto simplesmente digitando seu nome em um método; ainda é interpretado corretamente Entretanto, lembre que não é recomendado usar comandos obsoletos no novo código (consulte Funcionalidades obsoletas e eliminadas).

12 Modo Unicode para métodos 4D v15 permite salvar strings de código nos métodos 4D em Unicode: Nos bancos de dados criados com 4D v15 e posteriores, o código dos métodos é salvo automaticamente em Unicode Nos bancos de dados convertidos a partir de uma versão anterior, a nova opção Salve métodos em Unicode das propriedades do banco de dados permite passar ao modo Unicode: Nota: Se você alterar essa configuração, você deve reiniciar o aplicativo para que as alterações sejam consideradas. Você pode ativar ou desativar essa opção a qualquer momento; apenas os métodos salvos posteriormente são afetados. Porque guardar código em Unicode? Em versões anteriores de 4D, as strings no código dos métodos (fórmulas, nomes de variáveis e métodos, comentários, etc.) são armazenados usando a codificação atual local. Essa codificação pode causar problemas, especialmente quando o código 4D é compartilhado entre os desenvolvedores de diferentes países: por exemplo, se um desenvolvedor francês escreveu código 4D com acentos e, em seguida, envia o banco de dados para um desenvolvedor de Inglês, esses acentos são perdidos. Problemas graves também podem ocorrer com o código escrito em versões em japonês. Salvar métodos como Unicode resolve todos esses tipos de problemas e torna possível a troca de código 4D que contém caracteres locais específicos. Nós recomendamos que você ative a opção do modo Unicode para métodos logo que seja possível em seus bancos de dados existentes, especialmente se você trabalhar em um ambiente internacional. Nota de implementação: este novo recurso se aplica a linguagem em si mesma e sua interpretação. Algumas janelas do editor 4D, tais como a lista de propriedades, ainda usam a codificação atual local e, portanto, podem mostrar algumas strings incorretamente. No entanto, isto não afeta a execução do código. Compatibilidade O armazenamento de métodos 4D em Unicode é transparente para os usuários (em um novo banco de dados 4D v15 ou em um banco de dados convertido se a opção Save methods as Unicode estiver selecionada). Entretanto, as mudanças internas necessárias criaram uma profunda mudança na representação dos ponteiros no código 4D. Os "novos" ponteiros foram melhorados internamente e também suportam funções adicionais, tais como elementos de um array 2D (ver RESOLVE POINTER). Para manter a compatibilidade com componentes e plug-ins pré-compilados, um novo tipo de ponteiro foi adicionado à linguagem 4D, ao invés de substituir o tipo existente. Este novo tipo é tratado de forma transparente em suas aplicações. No entanto, note que: RESOLVE POINTER agora retorna -1 em vez de 0 no quarto parâmetro para ponteiros para variáveis e arrays unidimensionais. Get pointer vai se comportar de maneira diferente em relação aos nomes de variáveis inválidos ou espaços adicionais.

13 Configuração Inglês-US no Editor de Métodos A partir de 4D v15, o editor método 4D usa como padrão o modo internacional "Inglês-US", independentemente da versão de 4D ou da configuração do sistema local. Essa nova funcionalidade neutraliza variações regionais, que possam comprometer a interpretação do código entre aplicações 4D (por exemplo formatos de data); e apenas nas versões francesa de 4D, os comandos e as constantes são agora escrito em "Inglês-US". Esta nova configuração pré-determinada oferece aos desenvolvedores 4D duas vantagens principais: Facilita o compartilhamento de código entre os desenvolvedores, independentemente do seu país, configuração regional, ou a versão 4D usada. Um método 4D agora pode ser compartilhada com um simples copiar/colar, ou salvos em um arquivo de texto sem problemas de compatibilidade. Ele também permite a inclusão de métodos 4D em ferramentas de controle de fontes, o que muitas vezes exigem que as exportações sejam independentes dos parâmetros regionais e de idiomas. Essa configuração pode ser desativado por desenvolvedores através de uma nova opção na caixa de diálogo Preferências de 4D. Nova opção de preferência A nova opção Use a configuração regional do sistema permite ativar /desativar os parâmetros do código "internacional" na caixa de diálogo de Preferências de 4D, na aba Métodos/Opções: Quando a opção for desativada (padrão em 4D v15), os parâmetros Inglés-US utilizados em métodos 4D para o aplicativo 4D atual. Quando esta opção for selecionada, a configuração regional é utilizada em métodos 4D para o aplicativo 4D atual, como nas versões anteriores de 4D. Se modificar esta opção, é necessário reiniciar a aplicação 4D para que a mudança seja levada em consideração. O que muda nas configurações English-US? As novas configurações de Inglês-US podem mudar significativamente seus métodos de escrita. Isso refere ao código em modo de de desenvolvimento, bem como as fórmulas introduzidas em aplicativos implementados. Neste novo modo, as seguintes regras se aplicam: o separador decimal para números reais é o ponto (".") em todas as versões (não vírgula (","), como é costume, em francês e português). as constantes de tipo data agora devem usar o formato ISO (!YYYY-MM-DD!) em todas as versões. os nomes de comandos e constantes devem ser em Inglês (esta alteração diz respeito somente às versões francesas 4D). Nota: o Method Editor inclui mecanismos específicos que corrigem automaticamente entradas incorretas, se for necessário.

14 A tabela a seguir ilustra as diferenças entre o código em 4D v15 e versões anteriores: Exemplo de código nos métodos/fórmulas 4D v15 (modo padrão, todas as versões) 4D v14 ou 4D v15 (preferência marcada, todas as versões exceto francês) 4D v14 ou 4D v15 (preferência marcada, versão em francês) a:=12.50 b:=! ! Current date a:=12.50 b:=!12/31/2013! Current date a:=12,50 b:=!31/12/2013! Date du jour Nota: em 4D v14 y en 4D v15 quando esta preferencia estiver selecionada, os formatos de data e real varíam dependendo da configuração do sistema. Mudanças na versão francesa Algumas alterações específicas afetam apenas a versão francesa de 4D. Esta versão antes oferecia a linguagem francesa (comandos e constantes), bem como ajuda on-line e documentação em francês. Veja a versão francesa desse manual. Compatibility issues Em aplicativos convertidos de versões anteriores, as configurações inglês-ús do código 4D em 4D v15 às vezes pode exigir adaptações. Os problemas podem surgir no contexto no qual o código é interpretado em tempo real e não é tokenizado. Isso não se aplica somente ao modo Desenvolvimento 4D, mas também aos produtos de implantação (4D em modo remoto e aplicativos 4D fusionados). A tabela a seguir mostra as diferenças de operação entre os aplicativos 4D v15, dependendo da linguagem de execução (outros idiomas serão afetados da mesma forma que a versão dos EUA): Impacto ao operar Impacto ao operar na Funções Impacto ao operar na linguagem FR na linguagem US linguagem DE Editor de fórmulas Relatórios rápidos 4D Write 4D View PROCESS 4D TAGS EXECUTE FORMULA METHOD GET CODE/METHOD SET CODE nas fórmulas: formato data unicamente nas fórmulas: formato data unicamente nas fórmulas: formato data unicamente nenhum formato data unicamente formato data unicamente formato data unicamente nas fórmulas: linguagem dos comandos (US) e separador date/time/dec nas fórmulas: linguagem dos comandos (US) e separador date/time/dec nas fórmulas: linguagem dos comandos (US) e separador date/time/dec nas fórmulas (ao utilizar comandos 4D, não 4D View): linguagem dos comandos (US) Comandos (se não utilizar :Cxxx) separador date/time/dec linguagem dos comandos (US) e separador date/time/dec command language (US) and date/time/dec separator nas fórmulas: formato de data + separador dec nas fórmulas: formato de data + separador dec nas fórmulas: formato de data + separador dec nenhum formato de data + separador dec formato de data + separador dec formato de data + separador dec Lembre que, se for necesário a nova preferência de opção Usar configuración del sistema regional permite reverter ao comportamento 4D v14. Sobre implementação Já que a nova preferência é local para a máquina, ela deve ser definida em cada máquina onde a aplicação 4D vai ser executada se você quiser restaurar o comportamento 4D v14. No contexto das aplicações fusionadas, você deve editar o arquivo de preferências 4D v15 em cada máquina local e definir a chave "use_localized_language" como "true". Nota: um exemplo de código 4D que modifica o arquivo de preferências está disponível na versão francesa deste manual.

15 Debugger e Runtime Explorer Página Processo A interface da página Processo foi modificada e mostra informação diferente: Introduzido em 4D v14 R3 A lista de processos é agora similar a página Processo da janela 4D Server Administration. Os valores de ID, nome, estado e hora se oferecem sem mudança em comparação com versões anteriores. A seguinte informação foi modificada: CPU: a vista gráfica não está disponível. Um degradado de cor vermelha no fundo indica o nível de atividade de um processo. Cada processo também é identificado por um ícone, cuja cor e forma indicam o tipo de processo: Servidor de aplicações Servidor SQL Servidor DB4D Server (motor de base) Servidor web Servidor SOAP Processo de cliente 4D protegido (processo de desenvolvimento de um 4D conectado) Processo de cliente 4D principal (processo principal de um 4D conectado; processo colaborativo, equivalente no servidor do processo criado na equipe cliente) Processo base de cliente 4D (processo paralelo a um processo cliente 4D; processo de preferência responsável para controlar o processo principal cliente 4D correspondente) Processo Spare (anterior ou futuro "processo base cliente 4D") Processo 4D client (processo executado no 4D conectado) Procedimento armazenado (processo lançado por 4D conectado e executado no servidor) Web method (lançado por 4DACTION por exemplo) Método SOAP (lançado por um serviço web) Método SQL (lançado por uma petição SQL) A frequência de atualização pode ser definida utilizando um menu contextual (clique direito na linha): A barra de ferramentas na parte inferior da página também foi atualizada. O botão "Opções" (com uma lista deslocado) que se encontra nas versões anteriores foi substituída por três botões separados:

16 Estes botões afetam a seleção de tarefas. Agora pode selecionar várias tarefas de forma simultânea (Maiús+clique para uma seleção contínua e Comando/Ctrl+clique para uma seleção descontínua). Contagem de registros bloqueados Originalmente introduzido em 4D v14 R4 A contagem de registros bloqueados para cada tabela agora é mostrado no painel Seguimento do Explorador de execução e no depurador 4D:Esta informação está disponível em 4D monoposto e 4D Server. Depurador 4D: Valores dos objetos do formulário atual Originalmente introducido en 4D v14 R4 A nova lista Valores do formulário atual está disponível no depurador e no Explorador de execução. Esta lista contém o nome de cada objeto dinâmico incluído no formulário atual, assim como o valor de sua variável associada: Alguns objetos, tais como os list box arrays, podem estar presentes como dois elementos diferentes (a variável do objeto em si e sua fonte de dados). Esta nova lista é particularmente útil quando seus formulários utilizam variáveis dinâmicas intensivamente: é fácil de identificar as variáveis dinâmicas através dos nomes de objetos de formulário.

17 Nas versões anteriores de 4D, esta informação pode encontrado na lista Variáveis/Processo, onde se faz referência as variáveis dinâmicas através de seu nome interno (por exemplo, $form.9.8). As variáveis dinâmicas já não se mostram nesta lista; só podem ler através da lista Valores do formulário atual. Ainda pode mostrar o nome interno das variáveis dinâmicas selecionando o comando Mostrar tipos no menu contextual: Os nomes das variáveis dinâmicas são da forma "$form.4b9.42":

18 Editor de pesquisas Pesquisas pré-definidas O editor de pesquisas de 4D v15 suporta pesquisas pré-definidas. Da mesma maneira que uma busca padrão salva, uma consulta predefinida contém uma definição de pesquisa completa, incluindo todos os critérios, e pode ser carregada no editor de consulta a qualquer momento. Pesquisas pré-definidas podem ser inseridas em aplicativos implementados e estão listadas diretamente em um novo sub-menu do editor de pesquisas. Para definir uma pesquisa pré-definido: 1. Crie uma subpasta "pesquisas" na pasta "Resources"de seu banco de dados 2. Adicione todos os arquivos de pesquisa salvos (.4df) nesta pasta que serão usados como pesquisas pré-definidas: Quando pelo menos um arquivo de pesquisa.4df associado com a tabela atual estiver na pasta Resources / Queries, um novo elemento Carregar> é adicionado ao final do editor Editar do menu consulta, fornecendo acesso a todas as pesquisas prédefinidas como elementos submenu: Se selecionar um item de submenu, carrega a pesquisa correspondente no editor de consultas. Lembrete: apenas arquivos de pesquisa relacionadas com a tabela atual são exibidos no submenu. Adaptação para usuários de japonês O editor de consultas foi atualizado especificamente para lidar com pesquisas em japonês com mais precisão. Em particular, aplica-se uma ordem específica para os critérios e pesquisas recentes. Essas mudanças se aplicam apenas a versão japonesa do 4D.

19 Arquivo de dados por padrão en aplicativos fusionados A gestão de um arquivo de dados, por padrão em aplicativos fusionados/merged (aplicações de um único usuário ou clienteservidor) foi modificada em 4D v15: Agora os desenvolvedores podem definir um "arquivo de dados padrão" na fase de construção da aplicação. Quando não há um arquivo de dados, se for detectado um "arquivo de dados padrão", ele se abrirá automaticamente em silêncio no modo de somente leitura por 4D. Esses novos recursos dão aos desenvolvedores mais controle sobre a criação e / ou abertura dos arquivos de dados durante o lançamento inicial de um aplicativo fusionado Mais especificamente, estão cobertos os seguintes casos: Evita exibir a caixa de diálogo de abertura de arquivos de dados 4D durante o lançamento de uma nova aplicação fusionada ou atualizada. Pode detectar, por exemplo, no método de banco de dados On Startup, que o arquivo de dados padrão foi aberto e, portanto, executar seu próprio código e / ou caixas de diálogo para criar ou selecionar um arquivo de dados local. Permite a distribuição de aplicativos fusionados com dados somente leitura (por exemplo, para aplicações de demonstração). Definir uma pasta de dados padrão Agora v15 4D oferece uma maneira simples de incomporar um arquivo de dados, por padrão, em uma aplicação fusionada, para que o aplicativo possa ser instalado ou atualizado em máquinas dos usuários finais sem necessidade de usar uma caixa de diálogo adicional. Para definir um arquivo de dados padrão: O desenvolvedor deve oferecer um arquivo de dados por padrão (chamado de "Default.4DD") e salve-o em uma pasta específica (chamado "Default Data") dentro do pacote do banco de dados (4dbase). Este arquivo padrão deve ser apresentado juntamente com todos os outros arquivos necessários, dependendo da configuração do índice do banco de dados(.4dindx), BLOB externo, jornal, etc. Cabe ao desenvolvedor oferecer arquivos de dados válidos. No entanto, note que uma vez que o arquivo de dados padrão for aberto no modo de somente leitura, é recomendado desativar a opção "Usar arquivo de registro" no arquivod de estrutura original, antes de criar o arquivo de dados. Cuando se crea la aplicación, la carpeta de datos predeterminada está integrada en la aplicación fusionada por el proceso de creación de la aplicación. Todos los archivos dentro de esta carpeta de datos predeterminada también están anidados. Quando o aplicativo forcriado, a pasta de dados padrão é integrada ao aplicativo fusionado através do processo de criação do aplicativo. Todos os arquivos dentro desta pasta de dados padrão também são incorporados. O gráfico a seguir ilustra essa nova funcionalidade: Quando o arquivo de dados padrão for detectado no primeiro lançamento, se abrirá silenciosamente em modo de somente leitura, o que permite que você execute qualquer operação personalizada que não modifique o próprio arquivo de dados. Nova sequência de abertura Quando lançar um aplicativo fusionado pela primeira vez, 4D tenta selecionar um arquivo de dados válido. Nas versões anteriores, se nenhum arquivo de dados padrão era encontrado (mesmo nome e mesma localização que o arquivo.4dc) era mostrada uma caixa de diálogo padrão para selecionar o arquivo de dados é exibido (pedindo ao usuário para criar um arquivo de dados na pasta Aplicativos). Em 4D v15, uma nova etapa foi adicionada para a seqüência de abertura, permitindo aos desenvolvedores aproveitar a nova função de pasta de dados padrão (veja acima). Na etapa 2, o aplicativo agora é aberto sem qualquer caixa de diálogo padrão "Abrir arquivo de dados" e os desenvolvedores podem executar código personalizado. A nova sequência de abertura para o lançamento de um aplicativo fusionado é:

20 A nova sequência de abertura para o lançamento de um aplicativo fusionado é: 1. 4D tenta abrir o último arquivo de dados que foi aberto 2. Se não for encontrado, 4D tentar abrir o arquivo de dados em uma pasta de dados padrão ao lado do arquivo.4dc em modo de somente leitura (novo em 4D v15). 3. Se não for encontrado, 4D tenta abrir o arquivo de dados padrão ao lado do arquivo de estrutura com o mesmo nome. 4. Se não for encontrado, 4D mostra a caixa de diálogo padrão "Abrir arquivo de dados".

21 Language WEB GET OPTION e WEB SET OPTION Application version Comandos obsoletos renomeados Comandos XSLT em desuso DELAY PROCESS Etiquetas de transformação 4D FORM GET OBJECTS FORM GET PROPERTIES GET ACTIVITY SNAPSHOT Get database parameter e SET DATABASE PARAMETER GET FIELD PROPERTIES Get pointer Is licence available LDAP List box, use arrays objeto nas colunas (4D View Pro) Listbox, criar colunas com variáveis dinâmicas MAXIMIZE WINDOW METHOD GET CODE e METHOD SET CODE Números Reais, redução do número de dígitos significativos OBJECT GET COORDINATES On Scroll form event OPEN URL (novo nome para OPEN WEB URL) PROCESS 4D TAGS QR Get text property e QR SET TEXT PROPERTY RESOLVE POINTER Subrecords conversion Toolbar form windows TRANSFORM PICTURE WA GET PREFERENCE e WA SET PREFERENCE WEB SET HTTP HEADER Clickcount EXPORT STRUCTURE Find in sorted array Get database measures Get locked records info IMPORT STRUCTURE LISTBOX GET CELL COORDINATES METHOD GET ATTRIBUTES METHOD SET ATTRIBUTES MOBILE Return selection OBJECT Get corner radius OBJECT SET CORNER RADIUS OPEN DATABASE QUERY BY ATTRIBUTE WEB Is server running

22 WEB GET OPTION e WEB SET OPTION WEB GET OPTION ( selector ; value ) WEB SET OPTION ( selector ; value ) Descrição Um novo valor está disponível para o parâmetro seletor para os comandos WEB GET OPTION e WEB SET OPTION: Constante Tipo Valor Web Session enable IP address validation Inteiro longo 83 Alcance: servidor web local Se conserva entre duas sessões: Não Descrição:Permite desativar ou ativar a validação de endereços IP para as cookies de sessão. Por razões de segurança, por padrão o servidor Web de 4D verifica a direção IP de cada petição que contém uma cookie de sessão e rejeita a petição se não coincide com o endereço IP utilizada para criar a cookie. Em algumas aplicações específicas, é possível que deseje desativar esta validação e aceitar a cookie de sessão, inclusive se os endereços IP não coincidem. Por exemplo, quando os dispositivos móveis mudam entre redes WiFi e 3G/4G, seu IP muda. Neste caso, pode passar 0 nesta opção para permitir que os clientes possam seguir utilizando suas sessões Web, inclusive quando mudam os endereços IP. Tenha em conta que esta configuração reduzirá os níveis de segurança da aplicação. Quando estiver definido, este parâmetro é efetivo imediatamente (não é necessário reiniciar o servidor HTTP). Valores possíveis: 0 (desativado) ou 1 (ativado) Valor por padrão: 1 (os endereços IP se verificam) Descrição Uma nova constante está disponível em 4D v15 para o parâmetro seletor: Web debug log (84). Este seletor permite obter ou definir o status do novo arquivo de histórico de pedidos HTTP do servidor Web 4D. Quando for ativado, este arquivo, chamado "HTTPDebugLog_nn.txt", é armazenado na pasta "Logs" do aplicativo (nn é o número de arquivos). É útil para problemas de depuração relacionados com o servidor Web. Registra cada pedido e cada resposta em modo raw. Todos os pedidos, incluindo cabeçalhos, são registrados; opcionalmente, você pode registrar os corpos das petições. Quando Web debug log em selector é passado no parâmetro valor pode ter valores diferentes, em função da informação a ser gravada. As seguintes novas constantes estão disponíveis no "Web Server": Constante (valor) Tipo Descrição wdl disable (0) Inteiro Longo O arquivo de histórico de petições HTTP está desativado wdl enable without body (1) Inteiro longo O arquivo de histórico de petições HTTP está ativado sem os corpos (o tamanho dos corpos se proporcionam neste caso) wdl enable with Inteiro response body (3) longo O arquivo de histórico de petições HTTP está ativado com os corpos da in response only wdl enable with request body (5) Inteiro longo O arquivo de histórico de petições HTTP está ativado com os corpos com o corpo da resposta únicamente wdl enable with all body parts (7) Inteiro longo O arquivo de histórico de petições HTTP está ativado com os corpos da petição e a resposta Nota: O arquivo de histórico de petições HTTP apenas pode ser ativado ou desativado usando o comando WEB SET OPTION. Exemplo 1 // Desativação da validação do endereço IP WEB SET OPTION(Web session enable IP address validation;0)... // código específico // Validar as direções IP WEB SET OPTION(Web session enable IP address validation;1) Exemplo 2

23 A ativação do arquivo de histórico de depuração das petições HTTP sem as partes body: WEB SET OPTION(Web debug log;wdl enable without body) Uma entrada registrada se vê dessa maneira: # REQUEST # SocketID: 1592 # PeerIP: # PeerPort: # TimeStamp: GET /4DWEBTEST HTTP/1.1 Connection: Close Host: User-Agent: 4D_HTTP_Client/ # RESPONSE # SocketID: 1592 # PeerIP: # PeerPort: # TimeStamp: (tempo transcorrido: 1 minuto) HTTP/ OK Accept-Ranges: bytes Connection: close Content-Length: 3555 Content-Type: text/plain; charset=utf-8 Date: Tue, 20 Jan :51:29 GMT Expires: Tue, 20 Jan :51:29 GMT Pragma: no-cache Server: 4D/ [Body Size: 3555]

24 Application version Application version {( buildnum {; *} )} -> Resultado da função Descrição Originalmente introduzido em 4D v14 R2 Para suportar os novos lançamentos "R" de 4D, os valores devolvidos pelo comando Application version (tema "Ambiente 4D") foram atualizados. Basicamente, no caso de um lançamento "R", o número de atualização será o número "R" e o número de revisão sempre será "0". Este princípio será utilizado para números de versões longas e curtas. Exemplo para um número de versão curta: value:=application version // número da versão curta Versões Valor devolvido 4D v14 R2 "1420" 4D v14 R3 "1430" 4D v14.1 "1401" Primeira revisão de bug fix de 4D v14 4D v14.2 "1402" Segunda revisão de bug fix de 4D v14 Exemplo para um número de versão longa: value:=application version(*) // número da versão longa Versões 4D v14 beta R2 4D v14 final R3 4D v14.1 beta Valor devolvido "B " "F " "B " Exemplo Você quer usar o número pequeno de versão da aplicação retornado pelo comando para mostrar o nome do "release" da aplicaçao 4D. Para fazer isso, simplesmente execute o código abaixo: C_LONGINT($Lon_build) C_TEXT($Txt_info;$Txt_major;$Txt_minor;$Txt_release;$Txt_version) $Txt_version:=Application version($lon_build) $Txt_major:=$Txt_version[[1]]+$Txt_version[[2]] //número de versão, por exemplo14 $Txt_release:=$Txt_version[[3]] //Rx $Txt_minor:=$Txt_version[[4]] //.x $Txt_info:="4D v"+$txt_major If($Txt_release="0") //4D v14.x $Txt_info:=$Txt_info+Choose($Txt_minor#"0";"."+$Txt_minor;"") Else //4D v14 Rx $Txt_info:=$Txt_info+" R"+$Txt_release End if

25 Comandos obsoletos renomeados Para maior clareza em 4D v15, cada comando obsoleto tem um prefixo "_o_", se este já não era o caso. Como os comandos obsoletos não estão mais disponível nas listas 4D (ver secção Comandos obsoletos ocultos), você não pode selecioná-los. Só serão renomeados no código existente. A tabela a seguir lista os comandos obsoletos renomeados em 4D v15 e, portanto, removidos das listas de 4D:

26 Nombre anterior ADD DATA SEGMENT ADD SUBRECORD ALL SUBRECORDS APPLY TO SUBSELECTION ARRAY STRING ARRAY TO STRING LIST Before subselection C_STRING Convert case Create resource file CREATE SUBRECORD DATA SEGMENT LIST DELETE RESOURCE DELETE SUBRECORD DISABLE BUTTON ENABLE BUTTON End subselection FIRST SUBRECORD Font name Font number Get component resource ID Get platform interface INVERT BACKGROUND ISO to Mac LAST SUBRECORD Mac to ISO Mac to Win MODIFY SUBRECORD NEXT SUBRECORD ORDER SUBRECORDS BY PICTURE TYPE LIST PREVIOUS SUBRECORD QT COMPRESS PICTURE QT COMPRESS PICTURE FILE QT LOAD COMPRESS PICTURE FROM FILE QUERY SUBRECORDS Records in subselection REDRAW LIST SAVE PICTURE TO FILE SET PICTURE RESOURCE SET PLATFORM INTERFACE SET RESOURCE SET RESOURCE NAME SET RESOURCE PROPERTIES SET STRING RESOURCE SET TEXT RESOURCE USE EXTERNAL DATABASE USE INTERNAL DATABASE Win to Mac Nuevo nombre en 4D v15 _o_add DATA SEGMENT _o_add SUBRECORD _o_all SUBRECORDS _o_apply TO SUBSELECTION _o_array STRING _o_array TO STRING LIST _o_before subselection _o_c_string _o_convert case _o_create resource file _o_create SUBRECORD _o_data SEGMENT LIST _o_delete RESOURCE _o_delete SUBRECORD _o_disable BUTTON _o_enable BUTTON _o_end subselection _o_first SUBRECORD _o_font name _o_font number _o_get component resource ID _o_get platform interface _o_invert BACKGROUND _o_iso to Mac _o_last SUBRECORD _o_mac to ISO _o_mac to Win _o_modify SUBRECORD _o_next SUBRECORD _o_order SUBRECORDS BY _o_picture TYPE LIST _o_previous SUBRECORD _o_qt COMPRESS PICTURE _o_qt COMPRESS PICTURE FILE _o_qt LOAD COMPRESS PICTURE FROM FILE _o_query SUBRECORDS _o_records in subselection _o_redraw LIST _o_save PICTURE TO FILE _o_set PICTURE RESOURCE _o_set PLATFORM INTERFACE _o_set RESOURCE _o_set RESOURCE NAME _o_set RESOURCE PROPERTIES _o_set STRING RESOURCE _o_set TEXT RESOURCE _o_use EXTERNAL DATABASE _o_use INTERNAL DATABASE _o_win to Mac Comandos XSLT Os comandos XSLT foram renomeados em 4D v14 R4: Nome anterior Novo nome 4D v15 XSLT APPLY TRANSFORMATION _o_xslt APPLY TRANSFORMATION XSLT GET ERROR _o_xslt GET ERROR XSLT SET PARAMETER _o_xslt SET PARAMETER Para saber mais, veja Comandos XSLT em desuso. Comandos 4D Pack

27 Vários comandos 4D Pack também estão em desuso desde 4D v14 R5: Nome anterior Novo nome AP FCLOSE _o_ap FCLOSE AP fopen _o_ap fopen AP FPRINT _o_ap FPRINT AP fread _o_ap fread AP Save BMP 8 bits _o_ap Save BMP 8 bits AP Add table and fields _o_ap Add table and fields AP Create relation _o_ap Create relation AP Get file MD5 digest _o_ap Get file MD5 digest AP ShellExecute _o_ap ShellExecute Para mais informação, consulte a seção Comandos obsoletos renomeados. Comandos que não são mais obsoletos Por outro lado, alguns comandos que anteriormente foram declarados obsoletos na documentação, mas que não se enquadram na definição dada acima, foram "reintegrados". Esses comandos são agora de limitado interesse, porque eles correspondem aos antigos modos de programação ou podem ser substituídos por um código mais eficiente, mas a sua continuidade não está em questão: Activated Outside call After Before Deactivated In header In footer In break Modified Document type

28 Comandos XSLT em desuso Os comandos de transformação XSL estão em desuso e por isso se adicionou o prefixo _o_ Nome anterior Novo nome 4D v14 R4 XSLT APPLY TRANSFORMATION _o_xslt APPLY TRANSFORMATION XSLT GET ERROR _o_xslt GET ERROR XSLT SET PARAMETER _o_xslt SET PARAMETER Por razões de compatibilidade, as transformações XSL seguem suportando em 4D, mas seu uso agora não se recomenda. O uso de tecnologia XSLT será eliminado em futuras versões de 4D. Nota 4D Server 64-bit OS X: O XSLT não está disponível com 4D Server 64 bits para OS X. Em consequência, a execução de um destes comandos desta aplicação irá gerar o erro 33 "Método ou função não implementado". Para substituir a tecnologia XSLT em suas bases de dados, 4 oferece duas soluções: utilizar as funções equivalentes do módulo PHP libxslt, instalado em 4D desde a versão D produziu um documento específico para lhe ajudar a utilizar o XSL de PHP como uma substituição dos comandos XSLT de 4D: Baixar o documento técnico XSLT com PHP (PDF) utilizar as novas possibilidades oferecidas pelo comando PROCESS 4D TAGS, cujas capacidades foram ampliadas de maneira significativa em 4D v14 R4.

29 DELAY PROCESS DELAY PROCESS (processo ; duração ) Parâmetro Tipo Descrição processo Inteiro longo -> Número de processo duração Real -> Duração expressada em tic Descrição Originalmente introduzido em 4D v14 R3 O comando DELAY PROCESS agora aceita um parâmetro duracao de tipo Real (em versões anteriores, se esperava um valor Inteiro longo). A unidade de tempo é ainda o tic (1 tic = 1/60avo de segundo). No entanto, agora pode atrasar a execução de um processo por uma duração menor a um tic. Por exemplo, se passar de 0.5 em duracao, o processo se atrasará por 1/2 tic, ou seja, 1/120avo de segundo.

30 Etiquetas de transformação 4D Originalmente introduzido em 4D v14 R4 As etiquetas de transformação 4D (anteriormente chamadas Etiquetas HTML 4D) foram estendidas: uma nova etiqueta 4DEVAL foi adicionado a etiqueta 4DLOOP agora é compatível com qualquer expressão 4D ou com um ponteiro a um array como parâmetro. Nota: o comando PROCESS 4D TAGS foi estendido também em 4D v14 R4. Para obter mais informação, consulte a seção PROCESS 4D TAGS. 4DEVAL (nova etiqueta) Sintaxe: <!--#4DEVAL VarName--> o <!--#4DEVAL 4DExpression--> A nova etiqueta 4DEVAL lhe permite avaliar uma variável ou uma expressão 4D. Igualmente que a etiqueta 4DHTML existente, 4DEVAL não escapa os caracteres HTML ao devolver texto. No entanto, a diferença de 4DHTML ou 4DTEXT, 4DEVAL lhe permite executar toda instrução 4D válida, incluindo atribuições e expressões que não devolvem nenhum valor. Por exemplo, pode executar: $input:="<!--#4deval a:=42-->" //assignment $input:=$input+"<!--#4deval a+1-->" //calculation PROCESS 4D TAGS($input;$output) //$output = "43" Pode utilizar os comandos ou funções 4D diretamente como expressões. Neste caso, é uma boa ideia inserir o código de escape do número de comando no parâmetro Expresion4D. Desta maneira a expressão será avaliada corretamente sem importar a versão da linguagem 4D utilizada, ou se o nome do comando muda em um lançamento 4D futuro. A sintaxe a utilizar é "<nome_comando>:c<número_comando>. Por exemplo, para chamar Current time Current time, escreva "Current time:c178". Nota: os números dos comandos podem ser encontradas na página Comandos do Explorador: Em caso de um erro de avaliação, o texto inserido será da forma: <!--#4DEVAL expression--> : ## error # error code. Nota: a execução de um método 4D via um 4DEVAL desde uma petição Web requer que a opção "Disponível através das etiquetas 4D e URLs (4DACTION...)" esteja selecionada nas propriedades do método. Para obter mais informação, consulte a seção Segurança das conexões. 4DLOOP A etiqueta 4DLOOP agora aceita dois novos tipos de condições (além disso de tabela, array e método): uma expressão 4D e um ponteiro de array. <!--#4DLOOP 4DExpression-->

31 Com esta sintaxe, a etiqueta 4DLOOP fará um laço em tanto que a expressão 4D devolve True. A expressão pode ser qualquer expressão booleana válida e deve conter uma parte variável a avaliar em cada laço para evitar laços infinitos. Por exemplo, o seguinte código: <!--#4DEVAL $i:=0--> <!--#4DLOOP ($i<4)--> <!--#4DEVAL $i--> <!--#4DEVAL $i:=$i+1--> <!-- #4DENDLOOP--> produzirá: <!--#4DLOOP pointerarray--> Neste caso, a etiqueta 4DLOOP funcionará como é feito com um array: é feito um laço para cada elemento do array. O elemento atual do array se incrementa cada vez que a porção de código se repete. Esta sintaxe é útil quando se passa um ponteiro de array como parâmetro ao comando PROCESS 4D TAGS. Exemplo: ARRAY TEXT($array;2) $array{1}:="hello" $array{2}:="world" $input:="<!--#4deval $1-->" $input:=$input+"<!--#4dloop $2-->" $input:=$input+"<!--#4deval $2->{$2->}--> " $input:=$input+"<!--#4dendloop-->" PROCESS 4D TAGS($input;$output;"elements = ";->$array) // $output = "elements = hello world"

32 FORM GET OBJECTS FORM GET OBJECTS (arrayobjetos{;arrayvariaveis{;arraypag}} {; * opcaopag} ) Parâmetro Tipo Descrição arrayobjetos Array cadeia <- Nome de objetos do formulário arrayvariaveis Array ponteiro <- Ponteiros as variáveis ou campos associados com objetos arraypag Array inteiro <- Número de página de cada objeto * opcaopag Operador Inteiro longo -> Se passar * = reduzir a página atual ou 1=Página atual do formulário, 2=Todas as páginas, 4=Páginas herdadas Descrição Originalmente introduzido em 4D v14 R2 O comando FORM GET OBJECTS (tema "Formulários") aceita o novo parâmetro opcional opcionpag que lhe permite designar a ou as parte(s) do formulário desde onde se obtém os objetos. Por padrão, se o parâmetro opcaopag é omitido (assim como o parâmetro *), os objetos de todas as páginas, incluindo os objetos herdados, se devolvem (como nas versões anteriores de 4D). Para reduzir o alcance do comando, pode passar um valor em opcaopag. Pode passar uma (ou uma combinação) das seguintes constantes, que se encontram no tema "Objetos de formulário (Acesso)": Constante Tipo Valor Descrição Form current Inteiro devolve todos os objetos da página atual, incluindo a página 0, excluindo os objetos 1 page longo herdados Form all pages Inteiro longo 2 devolve todos os objetos de todas as páginas, sem contar os objetos herdados Form inherited Inteiro longo 4[ devolve unicamente os objetos herdados Nota: passar o parâmetro * é equivalente a passar a página atual Form current page+form inherited. A sintaxe utilizando o parâmetro * agora é obsoleta e não deve ser utilizado. Exemplo 1 Você quer receber informação sobre todas as páginas, incluindo objetos do formulário herdado (se existir): O: //Formulário aberto FORM GET OBJECTS(arrayObjetos;arrayVariaveis;arrayPaginas) //Formulário carregado FORM LOAD([Tabela1];"MeuForm") FORM GET OBJECTS(arrayObjetos;arrayVariaveis;arrayPaginas;Form all pages+form inherited) Exemplo 2 Você deseja obter os objetos da página atual do formulário carregado, incluindo a página 0 do formulário e os objetos dos formulários herdados (se existir): FORM LOAD("MiForm") FORM GOTO PAGE(2) FORM GET OBJECTS(arrayObjetos;arrayVariaveis;arrayPag;Formulario página atual+formulário herdado)

33 Exemplo 3 Quer obter informação sobre todos os objetos no formulário herdado (se os houver). Se não há formulários herdados, os arrays se devolverão vazios. FORM LOAD("MiForm") FORM GET OBJECTS(arrayObjetos;arrayVariaveis;arrayPag;Formulário herdado) Exemplo 4 Você quer obter os objetos da página 4, incluindo os da página 0, mas sem os objetos de formulários herdados (se existir): FORM LOAD([Tabela1];"MeuForm") FORM GOTO PAGE(4) FORM GET OBJECTS(arrayObjetos;arrayVariables;arrayPag;Formulario página actual) Exemplo 5 Você quer obter informação dos objetos de todas as páginas, mas sem objetos de formulário herdado (se existissem): FORM LOAD([Tabela1];"MeuForm") FORM GET OBJECTS(arrayObjetos;arrayVariaveis;arrayPaginas;Form todas as páginas)

34 FORM GET PROPERTIES FORM GET PROPERTIES ( {{atable{;nomform ;} largo ; alto {; numpag {; largofixo {; altofixo {; titulo}}}} ) Originalmente introduzido em 4D v14 R2 O parâmetro nomform agora é opcional: se o parâmetro se omite, o comando se aplica ao formulário atual, carregado com o comando FORM LOAD. Referência: GET FORM PROPERTIES

35 GET ACTIVITY SNAPSHOT GET ACTIVITY SNAPSHOT ( arratividades arruuid ; arrinicio; arrduracao; arrinfo {; arrdetalhes}{; *} ) Parâmetro Tipo Descrição arratividades arruuid Array objeto, Array texto <- Descrição completa das operações (array objeto) ou UUIDs das operações (array texto) arrinicio Array Texto <- Horas de início das operações arrduracao Array Inteiro longo <- Duração das operações em segundos arrinfo Array Texto <- Descrição arrdetalhes Array objeto <- Detalhes do contexto e sub operações (se existirem) * Operador -> Se passar = Ler atividade do servidor Novas propriedades Originalmente introduzido em 4D v14 R3 Este comando devolve informação adicional em 4D v14 R3, em relação com a evolução da página Real Time Monitor (RTM) da janela de administração de 4D Server (ver Página Monitor tempo real). A informação adicional se devolve em duas novas propriedades: dbcontextinfo e dboperationdetails. Estas propriedades estão disponíveis para ambas sintaxes. GET ACTIVITY SNAPSHOT(arrActivites{; *}) Com esta sintaxe, as novas propriedades estão disponíveis desde no primeiro nível do objeto arratividades: [ ] { "message":"xxx", "maxvalue":12321, "currentvalue":63212, "interruptible:0, "remote":0, "uuid":"deadbeef", "taskid":xxx, "starttime":" :37:00:123", "duration":92132, "dbcontextinfo":{ "task_id": xxx, "user_name": myname, "host_name": HAL, "task_name": "CreateIndexLocal", "client_uid": "DE4DB33F33F" "user4d_id ": 1, "client_version ": }, "dboperationdetails":{ table: "mytable" field: "Field_1" }, "suboperations":[...] },... GET ACTIVITY SNAPSHOT(arrUUID;arrStart;arrDuration;arrInfo{;arrDetails}{; *}) Com esta sintaxe, as novas propriedades se encontram disponíveis no último parâmetro, renomeado arrdetalhes para maior claridade. A estrutura deste array é agora: [ {

36 ] "dbcontextinfo":{...} //ver abaixo "dboperationdetails":{...} //ver abaixo "suboperations":[...] },... Descrição dbcontextinfo Esta propriedade é um objeto que contém informação quando uma operação é tratada pelo motor da base de dados. Têm as seguintes propriedades: host_name (cadeia): nome do host que iniciou a operação user_name (cadeia): nome do usuário 4D cuja sessão iniciou a operação task_name (cadeia): nome do processo que iniciou a operação task_id (número): identificação do processo que iniciou a operação client_uid (cadeia): opcional, uuid do cliente que iniciou a operação is_remote_context (Booleano, 0 ó 1): opcional, indica se a operação de base de dados foi iniciada por um cliente (valor 1) ou pelo servidor através de um procedimento armazenado (valor 0) user4d_id (número): identificação do usuário 4D atual do lado do cliente client_version (cadeia): quatro dígitos representam a versão do motor 4D da aplicação, tal como os devolvidos pelo comando Application version. client_uid y is_remote_context só estão disponíveis em modo cliente/servidor. client_uid só se devolve se a operação de base de dados foi iniciada em uma equipe cliente. dboperationdetails Esta propriedade só se devolve se a operação utiliza o motor de base de dados (este é o caso por exemplo para as pesquisas e/ou ordenações). É um objeto que define a informação de atividade específica. As propriedades devolvidas dependem da operação da base de dados que se está executando. Incluem, por exemplo: table (cadeia): nome da tabela envolvida na operação field (cadeia): nome do campo implicado na operação queryplan (cadeia): plano de pesquisa definido para a operação...

37 Get database parameter e SET DATABASE PARAMETER Get database parameter ( {Tabla ;} selector {; stringvalor} ) -> Resultado SET DATABASE PARAMETER ( {Tabla ;} selector ; valor ) Descrição Um novo parâmetro selector está disponível para os comandos Get database parameter e SET DATABASE PARAMETER: Constante Tipo Valor Use legacy network layer Inteiro longo 87 Alcance: 4D em modo local e 4D Server. Se conserva entre duas sessões: sim Descrição: define ou obtém o estado atual da capa de rede legacy para as conexões cliente/servidor. A capa de rede legacy está em desuso a partir de 4D v14 R5 e deve ser substituída progressivamente em suas aplicações com a capa de rede ServerNet. ServerNet será necessário nas próximas versões de 4D para se beneficiar das futuras evoluções da rede. Por razões de compatibilidade, a capa de rede legacy ainda suporta para permitir uma transição sem problemas para as aplicações existentes; (se usa por padrão em aplicações convertidas de uma versão anterior a v14 R5). Passe 1 neste parâmetro para utilizar a capa de rede legacy (e desativar ServerNet) para as conexões cliente/servidor, e passe 0 para desabilitar a rede legacy (e utilizar ServerNet). Esta propriedade também pode ser definida mediante a opção "Usar capa de rede legacy" que se encontra na página "Compatibilidade" das Propriedades da base (ver Nova capa rede ServerNet). Nesta seção, também pode encontrar uma discussão sobre a estratégia de migração. Lhe recomendamos que ative ServerNet o mais rápido possível. Terá que reiniciar a aplicação para que este parâmetro seja levado em conta. Não está disponível em versão 4D Server v14 R5 de 64 bits para OS X, que só suporta ServetNet; (sempre devolve 0). Possíveis valores: 0 ou 1 (0 = não utilizam capa legacy, 1 = utilizam capa legacy) Valor por padrão: 0 em bases de dados criadas com 4D v14 R5 ou superior, 1 em bases de dados convertidas desde 4D v14 R4 ou anterior. Descrição Originalmente introduzido em 4D v14 R3 Um novo parâmetro seletor está disponível para os comandos Get database parameter e SET DATABASE PARAMETER: Constante Tipo Valor SQL Server Port ID Inteiro longo 88 Alcance: 4D em modo local e 4D Server. Se conserva entre duas sessões: Sim Descrição: define ou lê o número da porta TCP utilizado pelo servidor SQL integrado em 4D em modo local e 4D Server. Por padrão, o valor é O número de porta TCP também pode ser definido na página "SQL" da caixa de diálogo Propriedades da base. Quando se utiliza este seletor, a configuração da base se atualiza respectivamente. Valores possíveis: 0 a Valor por padrão: Descrição Originalmente introduzido em 4D v14 R5 Um novo parâmetro selector está disponível para os comandos Get database parameter e SET DATABASE PARAMETER: Constante Tipo Valor Use legacy network layer Inteiro longo 87 Alcance: 4D em modo local e 4D Server. Se conserva entre duas sessões: sim Descrição: define ou obtém o estado atual da capa de rede legacy para as conexões cliente/servidor. A capa de rede legacy está em desuso a partir de 4D v14 R5 e deve ser substituída progressivamente em suas aplicações com a capa de rede ServerNet. ServerNet será necessário nas próximas versões de 4D para se beneficiar das futuras evoluções da rede.

38 Por razões de compatibilidade, a capa de rede legacy ainda suporta para permitir uma transição sem problemas para as aplicações existentes; (se usa por padrão em aplicações convertidas de uma versão anterior a v14 R5). Passe 1 neste parâmetro para utilizar a capa de rede legacy (e desativar ServerNet) para as conexões cliente/servidor, e passe 0 para desabilitar a rede legacy (e utilizar ServerNet). Esta propriedade também pode ser definida mediante a opção "Usar capa de rede legacy" que se encontra na página "Compatibilidade" das Propriedades da base (ver Nova capa rede ServerNet). Nesta seção, também pode encontrar uma discussão sobre a estratégia de migração. Lhe recomendamos que ative ServerNet o mais rápido possível. Terá que reiniciar a aplicação para que este parâmetro seja levado em conta. Não está disponível em versão 4D Server de 64 bits para OS X, que só suporta ServetNet; (sempre devolve 0). Possíveis valores: 0 ou 1 (0 = não utilizam capa legacy, 1 = utilizam capa legacy) Valor por padrão: 0 em bases de dados criadas com 4D v14 R5 ou superior, 1 em bases de dados convertidas desde 4D v14 R4 ou anterior.

39 GET FIELD PROPERTIES GET FIELD PROPERTIES ( fieldptr tablenum {; fieldnum}; fieldtype {; fieldlength {; indexed {; unique {; invisible}}}} ) Descrição Começando com 4D v15, os campos podem ser do novo tipo Objeto. Para obter mais informações, consulte o seção Tipo de dados campo de de Objeto. Como resultado, este comando pode retornar um novo valor a partir do tema constante "Campo e Tipos de variáveis" no parâmetro fieldtype: Constante Tipo Valor Is object Longint 38

40 Get pointer Get pointer ( varname ) -> Resultado Descrição O comando Get pointer foi reescrito para suportar novos tipos de ponteiro em 4D v15 (ver a seção Modo Unicode para métodos). As seguintes modificações devem ser consideradas: Ponteiros para arranjos (arrays) bidimensionais, incluindo o uso de expressões, são agora suportados: $pt:=get pointer("a{1}{2}") //$pt=->a{1}{2} $pt2:=get pointer("atcities"+"{2}{6}") //$pt2=->atcities{}{6} Os nomes não válidos para variáveis agora produzem um erro 77 ("Nome incorreto da variável"). Nas versões anteriores, eram aceitos. Por exemplo: $pt:=get pointer("123") //aceito em 4D < v15 // recusado em 4D v15 e versões posteriores Os espaços em branco extranhos agora são suportados: $pt:=get pointer(" a ") //aceito em 4D v15: "->a" // recusado em 4D < v15

41 Is licence available Is license available {( license )} -> Resultado Parâmetro Tipo Descrição licença Long Integer -> Funcionalidade para o qual a testar a validade da licença Resultado Booleano <- True se a funcionalidade está disponível, caso contrário, False Descrição Introduzido originalmente em 4D v14 R3 O comando Is licence available aceita duas novas constantes (adicionadas ao tema constante "Is License Available"): Constante Tipo Valor 4D Mobile License Inteiro longo D Mobile Test License Inteiro longo Nota: três licenças de prova 4D Mobile se oferecem por padrão para provas com 4D Developer Pro.

42 LDAP 4D v15 inclui novos recursos LDAP, permitindo que seu aplicativo 4D se conecte a um diretório corporativo existente usando LDAP. Todos os novos comandos LDAP foram adicionados a um novo tema, chamado LDAP: Esses novos comandos são listados na seção "Company Directory (LDAP)" deste manual de atualização.

43 List box, use arrays objeto nas colunas (4D View Pro) A partir de 4D v15, as colunas de list box podem conter arrays de objetos. Como os arrays de objetos pode conter diferentes tipos de dados, este recurso novo e poderoso permite que você misture diferentes tipos de valores nas linhas de uma única coluna, e exibir vários widgets também. Por exemplo, você pode inserir uma entrada de texto na primeira linha, uma caixa de seleção na segunda, e na terceira uma lista drop-down. Arrays de objetos também oferecem acesso a novos tipos de widgets, como botões ou seletores de cores. A list box a seguir foi projetada usando um array objeto: Nota sobre as licenças: a capacidade de utilizar arrays de objetos em list boxes é um primeiro passo para a próxima ferramenta "4D View pro" que vai substituir progressivamente o plug-in 4D View. Esta funcionalidade exige uma licença 4D View válida. Para mais informação, por favor consulte o Web site de 4D. Configurar um array de coluna objeto Para atribuir um array de objetos para uma coluna de list box, basta definir o nome do array de objetos, seja na lista de propriedades (campo "Nome da variável"), ou utilizando o comando INSERT LISTBOX COLUMN da mesma forma que com toda coluna associada a um array. Na lista de propriedades, agora você pode selecionar Objeto como "Tipo de variável" para a coluna: As propriedades padrão relacionadas com coordenadas, tamanho e estilo estão disponíveis para colunas de tipo de objeto. Você pode definir essas propriedades usando a lista de propriedades ou programando os atributos de estilo, cor de fonte, cor de fundo e visibilidade para cada linha de coluna objeto do list box. Este tipo de coluna também pode ser ocultado. No entanto, o tema Fonte de dados não está disponível para as colunas do objeto dos list box. Na verdade, o conteúdo de cada célula da coluna é baseada nos atributos presentes no elemento correspondente do array de objetos. Cada elemento do array pode ser definida: o tipo de valor (obrigatório): texto, cor, evento, etc. o valor em si (opcional): utilizado para a entrada / saída. a exibição do conteúdo da célula (opcional): botão, lista, etc. Configurações adicionais (opcional): depende do tipo de valor. Para definir essas propriedades, você deve definir os atributos apropriados no objeto (os atributos disponíveis listados abaixo). Por exemplo, você pode escrever "Olá mundo!" em uma coluna objeto usando esse código simples: ARRAY OBJECT(obColumn;0) // array de colunas

44 C_OBJECT($ob) //primeiro elemento OB SET($ob;"valueType";"text") //define o tipo de valor (obrigatorio) OB SET($ob;"value";"Hello World!") //define o valor APPEND TO ARRAY(obColumn;$ob) Nota: O formato de exibição e os filtros de entrada não podem ser definidos para as colunas objeto. Automaticamente dependem do tipo de valor. valuetype e data display Quando uma coluna de list box estiver associada a um array de objetos, a exposição, as entrada e a edição das células baseia-se no atributo valuetype presente em cada elemento do array Os valores valuetype suportados são: "Texto": Para valor de texto "Real" a um valor numérico que pode incluir separadores como um <espaço>, <,> ou <.> "Integer" para valor inteiro "Boolean" para valor True/False "Color" para definir uma cor de fundo "Event": para exibir um botão com uma etiqueta. 4D utiliza os widgets padrão de acordo com o valor "valuetype" (ie, um "texto" é apresentado como um widget de de entrada de texto, um "boolean", como uma caixa de seleção), mas também estão disponíveis representações alternativas via opções (por exemplo, um real também pode ser representado como um menu suspenso). A tabela a seguir mostra a exibição padrão, bem como alternativas para cada tipo de valor: valuetype Widget padrão Widgets alternativos text área de entrada de texto menú suspenso (lista obrigatoria) ou combo box (lista de opções) real área de entrada de texto controlada (números e separadores) menú suspenso (lista obrigatoria) ou combo box (lista de opções) integer controlled text input (numbers only) menú suspenso (lista obrigatoria) ou combo box (lista de opções) ou caixa de seleçõo de três estados boolean caixa de seleção menú suspenso (lista obrigatoria) color cor de fundo texto event botão com etiqueta Todos os widgets podem ter um botão adicional unit toggle button ou ellipsis button associado a célula. Defina as células e opções de exibição usando atributos específicos para cada objeto (veja abaixo). Formatos de exibição e filtros de entrada Você não pode definir formatos de exibição ou filtros de entrada para colunas objeto de list box. São definidas automaticamente de acordo com o tipo de valor. Eles estão listados na tabela a seguir: Value type Formato padrão Controle de entrada text o mesmo que o do objeto sem (sem controle) real o mesmo que o do objeto (utilização do separador decimal do sistema) "0-9", "." y "-" "0-9" y "." se min>=0 integer o mesmo que o do objeto "0-9" e "-" "0-9" se min>=0 Boolean caixa de seleção N/A color N/A N/A event N/A N/A Attributes Cada elemento do objecto matriz objecto é um objecto que pode conter um ou mais atributos que definem o conteúdo de células e exibição de dados (ver o exemplo acima). O único atributo necessário é "valuetype" e os valores suportados são "text", "real", "inteiro" "boolean", "color" e "evento". A tabela a seguir mostra todos os atributos suportados em arrays de objetos de list box, dependendo do valor "valuetype" (qualquer outro atributo ignorado). Formatos de exibição e exemplos abaixo.

45 valuetype text real integer boolean color event Atributos Descrição value valor da célula (entrada ou saída) x x x min valor mínimo x x max valor máximo x x behavior valor "threestates" x requiredlist menu drop down definido no objeto x x x choicelist combo box definido em objeto x x x requiredlistreference RefList 4D, depende do valor de "saveas" x x x requiredlistname nome de lista 4D, depende do valor "saveas" x x x saveas "reference" ou "value" x x x choicelistreference RefList 4D, mostra um combo box x x x choicelistname nome de lista 4D, mostra um combo box x x x unitlist array de X elementos x x x unitreference índice do elemento selecionado x x x unitslistreference RefList 4D para as unidades x x x unitslistname nome de lista 4D para as unidades x x x alternatebutton adicionar um botão alternativo x x x x x value Os valores das células são armazenadas no atributo "value". Esse atributo é usado para entrada e saída. Ele também pode ser utilizado para definir os valores predefinidos quando são usadas listas (ver abaixo). Exemplo: ARRAY OBJECT(obColumn;0) //column array <p>c_object($ob1) $entry:="hello world!" OB SET($ob1;"valueType";"text") OB SET($ob1;"value";$entry) // se o usuário introduzir um novo valor, $entry conterá o novo valor C_OBJECT($ob2) OB SET($ob2;"valueType";"real") OB SET($ob2;"value";2/3) C_OBJECT($ob3) OB SET($ob3;"valueType";"boolean") OB SET($ob3;"value";True) APPEND TO ARRAY(obColumn;$ob1) APPEND TO ARRAY(obColumn;$ob2) APPEND TO ARRAY(obColumn;$ob3) Nota: o valor Null é suportado e resulta em uma célula vazia. min e max Quando "valuetype" for "real" ou "inteiro", o objecto também aceita os atributos min e max com os valores apropriados (os valores devem ser do mesmo tipo que o valuetype). Estes atributos podem ser usados para controlar a faixa de valores de entrada. Quando uma célula é validada (quando se perde o foco), se o valor de entrada for menor que o valor min ou maior do que o valor max, o valor é rejeitado. Neste caso, o valor anterior é realizado e uma mensagem de ajuda exibe uma explicação. Exemplo: C_OBJECT($ob3) $entry3:=2015 OB SET($ob3;"valueType";"integer") OB SET($ob3;"value";$entry3) OB SET($ob3;"min";2000) OB SET($ob3;"max";3000)

46 behavior O atributo behavior oferece variações da representação padrão dos valores. Em 4D v15, uma única variação é possível: Atributo Valor disponível valuetype(s) Descrição behavior threestates integer Representa um valor numérico como caixa de seleção de três estados. 2=semimarcado, 1=marcado, 0=não marcado, -1=invisível, -2=não marcado desativado, - 3=marcado desativado, -4=semi-marcado desativado Exemplo: C_OBJECT($ob3) OB SET($ob3;"valueType";"integer") OB SET($ob3;"value";-3) C_OBJECT($ob4) OB SET($ob4;"valueType";"integer") OB SET($ob4;"value";-3) OB SET($ob4;"behavior";"threeStates") requiredlist e choicelist Quando um atributo "choicelist" ou "requiredlist" está presente dentro do objeto, a entrada é substituída por uma lista drop-down ou um combo box, dependendo do atributo: Se o atributo for "choicelist", a célula é exibida como um cinbo box. Isso significa que o usuário pode selecionar ou inserir um valor. Se o atributo for "requiredlist", então a célula é exibida como uma lista de rolagem. Isso significa que o usuário pode selecionar apenas um valor da lista. Em ambos os casos, um atributo "value" pode ser utilizado para pré-ajustar um valor no widget. Nota: os valores de widgets são definidos através de um array. Para atribuir uma lista 4D existente ao widget, você precisa usar os atributos "requiredlistreference", "requiredlistname", "choicelistreference" ou "choicelistname". Exemplos: Você quer mostrar uma lista drop down com só duas opções: "Open" ou "Closed". "Closed" deve estar pré-selecionada: ARRAY TEXT($RequiredList;0) APPEND TO ARRAY($RequiredList;"Open") APPEND TO ARRAY($RequiredList;"Closed") C_OBJECT($ob) OB SET($ob;"valueType";"text") OB SET($ob;"value";"Closed") OB SET ARRAY($ob;"requiredList";$RequiredList) Você quer aceitar todo valor inteiro, mas mostrar um combo box para sugerir os valores mais comuns: ARRAY LONGINT($ChoiceList;0) APPEND TO ARRAY($ChoiceList;5) APPEND TO ARRAY($ChoiceList;10) APPEND TO ARRAY($ChoiceList;20) APPEND TO ARRAY($ChoiceList;50) APPEND TO ARRAY($ChoiceList;100) C_OBJECT($ob) OB SET($ob;"valueType";"integer") OB SET($ob;"value";10) //10 as default value OB SET ARRAY($ob;"choiceList";$ChoiceList)

47 requiredlistname e requiredlistreference Os atributos "requiredlistname" e "requiredlistreference" permitem que você use em uma célula de lista box, uma definida em 4D em modo Desenho (na caixa de ferramentas) ou por programação (usando o comando New list). A célula é exibida como uma lista drop down. Isso significa que o usuário pode selecionar apenas um valor da lista. Use "requiredlistname" ou "requiredlistreference" dependendo da origem da lista: se a lista vir da caixa de ferramentas, passe um nome; caso contrário, se a lista for definida por programação, passe uma referência. Em ambos os casos, um atributo "valor" pode ser utilizado para pré-ajustar um valor no widget. Nota: Para definir esses valores através de um array simples, você deve usar o atributo "requiredlist". Neste caso, o atributo "saveas" define se o item selecionado deve ser salvo como um "valor" ou como uma "referência". Se "saveas" = "reference", então, será salva como uma referência e o "valuetype" deve ser real ou inteiro. Se "saveas" = "valor", então o valor é salvo. Neste caso, o "valuetype" deve ser do mesmo tipo que os valores da lista, "texto" ou "inteiro", em geral; caso contrário 4D tentará converter o valor da lista no "valuetype" do objeto (veja exemplos abaixo). Para mais informações sobre a opção "salvar como", ver Guardar como Valor ou Referência no manual de Desenho. Nota: (".") Se a lista contiver elementos de texto que representem os valores reais, o separador decimal deve ser um ponto ("."), independentemente das configurações locais: "17.6" " ". Exemplos: Você quer mostrar uma lista drop down baseada em uma lista "colors" definida na caixa de ferramentas (contém os valores "blue", "yellow" e "green"), salve a lista como un valor e mostre "blue" como padrão: C_OBJECT($ob) OB SET($ob;"valueType";"text") OB SET($ob;"saveAs";"value") OB SET($ob;"value";"blue") OB SET($ob;"requiredListName";"colors") Você quer mostrar uma lista drop down baseada em uma lista definida por programação e salve a lista como uma referência: <>List:=New list APPEND TO LIST(<>List;"Paris";1) APPEND TO LIST(<>List;"London";2) APPEND TO LIST(<>List;"Berlin";3) APPEND TO LIST(<>List;"Madrid";4) C_OBJECT($ob) OB SET($ob;"valueType";"integer") OB SET($ob;"saveAs";"reference") OB SET($ob;"value";2) //exibe London como padrão OB SET($ob;"requiredListReference";<>List)

48 choicelistname and choicelistreference Os atributos "choicelistname" e "choicelistreference" permitem que você use em uma célula de list box, uma lista definitiva em 4D no modo Design (na caixa de ferramentas) ou por programação (usando o comando [#cmd id="375"/]). A célula a seguir é mostrada como um combo box, o que significa que o usuário pode selecionar ou digitar um valor. Use "choicelistname" ou "choicelistreference", dependendo da origem da lista, se a lista é vêm da caixa de ferramentas, um nome é passado; caso contrário, se a lista tiver sido definido por uma programação, uma referência é passada. Em ambos os casos, um "valor" atributo pode ser utilizado para pré-selecionar um valor no widget. Nota: Para definir esses valores através de um array simples, você deve usar o atributo "choicelist". O atributo "saveas" não pode ser usado neste caso porque os itens selecionados são salvos automaticamente como um "value" (ver requiredlistname e requiredlistreference para mais informações). Nota: Se a lista contiver elementos de texto que representam os valores reais, o separador decimal deve ser um ponto ("."),, independentemente dos parâmetros locais, por exemplo "17.6" " ". Exemplo: Você deseja exibir um combo box baseado em uma lista "colors", definida na caixa de ferramentas (que contém o "blue", "yellow" e "green") e exibir "green" como padrão : C_OBJECT($ob) OB SET($ob;"valueType";"text") OB SET($ob;"value";"blue") OB SET($ob;"choiceListName";"colors") unitslist, unitslistname, unitslistreference e unitreference Você pode usar atributos específicos para adicionar unidades associadas a valores de células (por exemplo: "10 cm", "20 pixels", etc.). Para definir a lista de unidades, você pode usar um dos seguintes atributos: "unitslist": um array contendo os elementos x usados na definição das unidades disponíveis (por exemplo, "cm", "polegadas", "km", "milhas", etc.). Utilize este atributo para definir as unidades dentro do objeto. "unitslistreference"uma referência a uma lista de 4D que contenha as unidades disponíveis. Utilize este atributo para definir as unidades com uma lista 4D criada com o comando New list. "unitslistname": um nome de uma listad criada no modo design que contenha as unidades disponíveis. Utilize este atributo para definir as unidades com uma lista 4D criada na caixa de ferramentas. Independentemente da forma em que se defina a lista de unidades, pode estar associada ao atributo seguinte: "UnitReference": um único valor que contém o índice (de 1 a x) do item selecionado na lista de valores "unitlist", "unitslistreference" ou "unitslistname". A unidade atual é exibida como um botão que mostra os valores "unitlist", "unitslistreference" ou "unitslistname" v cada vez que se clica (por exemplo, "pixels" -> "linhas" -> "cm" -> "pixels "-> etc) Exemplo: queremos definir um valor de entrada numérico seguido de duas unidades possíveis: "linhas" ou "pixels". O valor atual é "2" + "linhas". Nós usamos valores definidos diretamente no objeto (atributo "unitslist"): ARRAY TEXT($_units;0) APPEND TO ARRAY($_units;"lines") APPEND TO ARRAY($_units;"pixels") C_OBJECT($ob)

49 OB SET($ob;"valueType";"integer") OB SET($ob;"value";2) // 2 "units" OB SET($ob;"unitReference";1) //"lines" OB SET ARRAY($ob;"unitsList";$_units) alternatebutton Se você deseja adicionar um botão Reticências [...] a uma célula, basta passar o atributo "alternatebutton" com o valor True no objeto. O botão é apresentado na célula automaticamente. Quando os usuários clicam neste botão, um evento On Alternate Click, é gerado, e você pode operar como você deseja (ver seção "Gestão de Eventos" para obter mais informações). Nota: On Alternate Clickk é o novo nome do evento On Arrow Click, rebatizado em 4D v15 para destacar o seu escopo estendido. Exemplo: C_OBJECT($ob1) $entry:="hello world!" OB SET($ob;"valueType";"text") OB SET($ob;"alternateButton";True) OB SET($ob;"value";$entry) color valuetype O atributo valuetype de valor "color" lhe permite mostrar uma cor ou um texto. Se o valor for um número, um retângulo de cor é projetado dentro da célula. Exemplo: C_OBJECT($ob4) OB SET($ob4;"valueType";"color") OB SET($ob4;"value";0x00FF0000) Se o valor for um texto, a seguir, é mostrado o texto (por exemplo: "valor", "Automático"). event valuetype O "evento" valuetype mostra um botão simples que gera um evento On Clicked quando o usuário clica. Não se podem passar ou devolver dados ou valores. Opcionalmente, pode ser passado um atributo "label". Exemplo: C_OBJECT($ob) OB SET($ob;"valueType";"event") OB SET($ob;"label";"Edit...") Event management Varios eventos podem ser manejarados nas colunas de list box de tipo array de objetos: On Data Change: um evento On Data Change é acionado ao alterar um valor: numa área de entrada de texto numa lista drop-down numa área de combo box num botão de unidade (mudança de valor de x a valor x+1) numa caixa de seleção (muda entre marcado/desmarcado) On Clicked: quando o usuário clicar em um botão instalado usando o atributo valuetype "event", um evento On Clicked é

50 gerado. Este evento é lidado pelo programador. On Alternative Click: quando o usuário clicar em um botão Reticências (atributo "alternatebutton"), um evento On Alternative Click é gerado. Este evento é tratado pelo programador. Nota: On Alternative Click é o novo nome do evento On Arrow Click que estava disponível nas versões anteriores de 4D. Este evento foi renomeado em 4D v15 já que seu escopo foi ampliado.

51 Listbox, criar colunas com variáveis dinâmicas Originalmente introduzido em 4D v14 R3 Uma nova funcionalidade em 4D permite adicionar ou inserir novas colunas dinamicamente em tempo de execução. Com esta nova funcionalidade, 4D gerencia automaticamente as definições das variáveis requeridas (coluna, rodapé de página e cabeçalho). Portanto, três comandos 4D foram atualizados: LISTBOX INSERT COLUMN LISTBOX INSERT COLUMN FORMULA LISTBOX DUPLICATE COLUMN Nova sintaxe (Nil pointer) A sintaxe destes comandos foram atualizados para manipular a criação de variáveis dinâmicas. LISTBOX INSERT COLUMN ( {* ;} objeto ; posicaocol ; nomcol ; variavelcol ; nomecabeçalho ; varcabeçalho {; nomrodape ; varrodape} ) LISTBOX INSERT COLUMN FORMULA ( {* ;} objeto ; posicaocol ; nomcol ; formula ; tipodados ; nomcabeçalho ; varcabeçalho {; nomrodape ; varrodape} ) LISTBOX DUPLICATE COLUMN ( {* ;} object ; posicaocol ; nomcol ; variavelcol ; nomcabeçalho ; varcabeçalho {; nomrodape ; varrodape} ) Parâmetro Tipo Descrição... variavelcol Array, Campo, Variável, ponteiro Nil -> Nome da variável array da coluna ou campo ou variável varcabeçalho Variável inteiro ou ponteiro Nil -> Variável do cabeçalho da coluna... varrodape Variavel ou Nil pointer -> Variável do rodapé da coluna Estes comandos agora aceitam um ponteiro Nil (->[]) como valor para os parâmetros variavelcol (se aplica), varcabeçalho e varrodape. Neste caso, 4D criará as variáveis requeridas de forma dinâmica quando se executam os comandos (consulte a seção "Variáveis Dinâmicas" no manual de linguagem 4D para mais informação). Note que as variáveis de cabeçalho e de rodapé de página sempre são criados com um tipo específico (respectivamente, inteiro longo e texto). No entanto, as variáveis de coluna não pode ser escrita durante a criação porque o listbox aceita diferentes tipos de arrays para esta variável (array texto, array inteiro, etc.) pelo que deve estabelecer o tipo de array manualmente. Por exemplo: C_POINTER($NilPtr) LISTBOX INSERT COLUMN(*;"MyListBox";1;"MyNewColumn";$NilPtr;"MyNewHeader";$NilPtr) ColPtr:=OBJECT Get pointer(object named;"mynewcolumn") ARRAY TEXT(ColPtr->;0) // Substituir 0 por um valor positivo se quer atribuir previamente os elementos do array É importante fazer isto escrevendo antes de usar comandos como LISTBOX INSERT ROWS para inserir novos elementos no array. O bem, é possível utilizar APPEND TO ARRAY tanto para escrever o array e começar a inserir elementos ao mesmo tempo.

52 MAXIMIZE WINDOW Originalmente introduzido em 4D v14 R3 O efeito do comando MAXIMIZE WINDOW em Windows foi modificado nos casos quando se aplica a uma janela que está controlada pelas limitações de tamanho (por exemplo, uma janela formulário): Se nenhuma das limitações de tamanho está em conflito com o tamanho objetivo, a janela se coloca em estado "maximizado" igual que nas versões anteriores de 4D (ou seja, que muda de tamanho para ser ajustado ao tamanho da janela pai MDI ("Multiple Document Interface"), sua barra de título e seus bordes se ocultam e os botões de controle, minimizar, restaurar e fechar se localizam a direita da barra de menu da aplicação). No entanto, se pelo menos uma das restrições de tamanho está em conflito (por exemplo, se a largura da janela MDI é 100 e a largura máxima da janela formulário é 80), a janela não se coloca em estado "maximizado", mas só muda de tamanho para seu tamanho máximo permitido. Este tamanho é definido pela dimensão MDI ou pela restrição. Com este novo comportamento, a interface se mantém constante quando se redimensionam janelas com limitações. Exemplo O seguinte formulário se define com uma restrição de tamanho (largura máxima = 400): O botão script só contém: MAXIMIZE WINDOW(Current form window) No seguinte contexto, se o usuário faz clique no botão:

53 ... A janela não está definida no estado "maximizada"; mas somente sua altura se estende:

54

55 METHOD GET CODE e METHOD SET CODE METHOD GET CODE ( path ; code {; *} ) METHOD SET CODE ( path ; code {; *} ) Descrição Os comandos METHOD GET CODE e METHOD SET CODE agora suportam novos metadados, que permite que obtenham ou estabeleçam propriedades relacionadas com 4D Mobile. Um novo atributo chamado "published4dmobile" foi adicionado e pode ser incluido na linha %attributes: // %attributes = { "published4dmobile": { "table": "atablename", "scope": "table" } } A propriedade chamada "scope" poede ter os seguintes valores: "none", "table", "currentrecord" ou "currentselection". Os atributos com suporte são: { "invisible" : false, // true se for visível "publishedweb" : false, // true se estiver disponível através das tags e URLs 4D "publishedsoap": false, // true se for oferecido como serviço web "publishedwsdl": false, // true se tiver sido publicado em WSDL "shared" : false, // true se for compartida pelos componentes e o banco local "publishedsql" : false, // true se estiver disponível através de SQL "executedonserver" : false, // true se for executado no servidor "published4dmobile" : { "scope": "table", // "none" ou "table" ou "currentrecord" ou "currentselection" "table": "atablename" // presente se o alcance for diferente de "none" } } Nota: para os atributos "published4dmobile", se o valor "table" não existir ou se o "scope" não for válido, estes atributos serão ignorados.

56 Números Reais, redução do número de dígitos significativos O número de dígitos significativos utilizados para a representação decimal de números reais foi reduzida: nas versiones anteriores, este número era de 15 dígitos em 4D v15 e versões posteriores, é agora de 13 dígitos Esta modificação concerne só a conversão de números reais a texto, não a forma em que se representam internamente (armazenamento), ou as operações aritméticas entre os números reais. A exatidão dos números reais não é afetada. O novo princípio implementado consiste em não incluir mais os dois últimos dígitos, que não poderiam garantir como significativos, na representação de texto. O objetivo é limitar o número de casos em que as operações com números reais produzem resultados incorretos. Por exemplo, isto nos permitirá obter resultados válidos nos seguintes casos: Operação Resultado em 4D < v15 Resultado em 4D v15e superior String( ) " " "1.47" String( ) " " " " O uso de 13 dígitos significativos para os números reais é geralmente adequado para aplicações informáticas e melhora o processamento destes números. Lembre que os cálculos informáticos nos números reais sempre se realizam por aproximação, já que estes números se expressam internamente sobre uma base binária e não decimal. O número de dígitos significativos permite que o algoritmo de conversão para realizar a aproximação necessária para obter a representação esperada. Da mesma forma, as comparações de igualdade de números reais são levadas a cabo mediante a análise dos resultados, quando os dois números se restam (em 4D, o grau de precisão por padrão destas comparações pode ser modificado utilizando o comando SET REAL COMPARISON LEVEL). Se sua aplicação 4D utiliza os 15 primeiros dígitos dos números reais, é possível que tenha que utilizar outros formatos de dados, como texto ou inteiros longos. Tenha em conta que, como se explicou anteriormente, os números reais não são adequados para o armazenamento e/ou o cálculo de valores com um grande número de dígitos significativos, como números de série ou medições astronômicas, já que sua precisão está limitada por natureza.

57 OBJECT GET COORDINATES OBJECT GET COORDINATES ( {* ;} objeto ; esq; acima ; direita ; abaixo ) Descrição Originalmente introduzido em 4D v14 R5 Tema: Objetos (Formulários) O comando OBJECT GET COORDINATES agora pode devolver as coordenadas de partes específicas do listbox, ou seja, colunas, cabeçalhos, rodapés de página, e não só as do objeto listbox pai. Em versões anteriores, este comando sempre devolvia as coordenadas do listbox pai, independentemente da parte do listbox a que se aplique. A partir de 4D v14 R5, quando o parâmetro object referencia um cabeçalho, uma coluna ou um rodapé de página do listbox, as coordenadas devolvidas são as do sub-objeto listbox designado. Pode utilizar esta nova funcionalidade, por exemplo, para mostrar um pequeno ícone na célula de cabeçalho de um listbox quando passar o cursor sobre ela, indicando ao usuário que pode fazer clique para mostrar um menu contextual. Nota de compatibilidade: se utiliza este comando com um cabeçalho, uma coluna ou um rodapé de list box em suas aplicações existentes, as coordenadas devolvidas serão diferentes depois da conversão em 4D v14 R5 ou superior. Se deseja obter as coordenadas de todo o list box, é necessário mudar o código para que o comando seja chamado no próprio objeto listbox em vez de um sub-objeto. Por razões de coerência, o marco de referência utilizado é o mesmo quando o objeto é um listbox ou um sub-objeto de list box: a origem é a esquina superior esquerda do formulário que contém o objeto. Para os sub-objetos listbox, as coordenadas devolvidas são teóricas; levam em conta o deslocamento aplicado ao list box antes de que ocorra um possível clipping. Como resultado, o sub-objeto pode que não seja visível (ou só parcialmente) em suas coordenadas, e estas coordenadas podem estar fora dos limites do formulário (ou inclusive ser negativas). Para averiguar se o sub-objeto é visível (e que parte é visível) é necessário comparar as coordenadas devolvidas com as coordenadas listbox, enquanto considera as seguintes regras: Os limites dos sub-objetos dependem das coordenadas de seu listbox pai (devolvido por OBJECT GET COORDINATES no listbox). Os sub-objetos cabeçalho e rodapé de página são mostrados sobre o conteúdo da coluna: quando as coordenadas de uma coluna cruzam as coordenadas das linhas de cabeçalho ou rodapé de página, a continuação, a coluna não é mostrada nesta interseção. Os elementos das colunas bloqueadas são mostrados por cima dos elementos das colunas deslocadas: quando as coordenadas de um elemento em uma coluna deslocável se cruzam as coordenadas de um elemento em uma coluna bloqueada, logo não é mostrada nesta interseção. Por exemplo, considere o seguinte gráfico, onde as coordenadas da coluna Capital são simbolizadas por um retângulo vermelho: Como pode ver na primeira imagem, a coluna é maior que o listbox, pelo que suas coordenadas vão além do limite inferior do listbox, incluindo o rodapé de página. Na segunda imagem, o listbox foi deslocado, pelo que a coluna também foi movido "sob" as áreas da coluna Linguagem e de cabeçalho. Em qualquer caso, para calcular a parte visível real (zona verde), é necessário subtrair as áreas vermelhas. Exemplo Para as necessidades de sua interface, você deseja rodear a área na que o usuário fez clique com um retângulo vermelho:

58 No método objeto do listbox, pode escrever: OBJECT SET VISIBLE(*;"rectangleInfo";False) //inicializar um retângulo vermelho $ptr:=object Get pointer(object current) OBJECT GET COORDINATES($ptr->;$x1;$y1;$x2;$y2) OBJECT SET VISIBLE(*;"RedRect";True) OBJECT SET COORDINATES(*;"RedRect";$x1;$y1;$x2;$y2) OBJECT GET COORDINATES(*;"LB1";$lbx1;$lby1;$lbx2;$lby2) If($lby1>$y1) ($lby2<$y2)&nbsp; // se a área na que é faz clique está fora do listbox OBJECT SET VISIBLE(*;"Alert";True)&NBSP; // mostrar um alerta Else OBJECT SET VISIBLE(*;"Alert";False) End if O método devolve as coordenadas teóricas. Se o listbox é redimensionado, pode necessitar calcular o recorte para saber que parte é visível:

59 On Scroll form event Modificação de On Picture Scroll Nas versões anteriores de 4D, o deslocamento das variáveis e campos imagem podia ser feita através do evento formulário On Picture Scroll (valor 59).Em 4D v15, a gestão desses eventos foi estendida aos objetos list box (veja abaixo). Consequentemente, o evento de formulário On Picture Scroll foi renomeado On Scroll e agora também está disponível para os list boxes na lista de propriedades. A ação deste evento em imagens não é alterada. Notas de compatibilidade: Há duas pequenas diferenças entre a implementação do evento de formulário On Picture Scroll nas versões anteriores de 4D eo novo evento On Scroll: On Picture Scroll era gerado só no método de objeto e no método formulário (mas não pode ser selecionado ou desativado nas propriedades de formulário). Para uma melhor consistência, a partir de 4D v15, o evento On Scroll era gerado apenas no método de objeto. Se seu aplicativo convertido manejava eventor de deslocamento de imagens desde o o método de formulário, você tem que mover o código para o método de objeto apropriado. Na pilha de eventos On Picture Scroll poderia ser chamado antes de outros eventos do usuário, comoon Click. On Scroll sempre que gerou após os outros eventos do usuário. Evento de formulário On Scroll Em 4D v15, o evento On Scroll está disponível para dois objetos que podem ter rolagem: Os campos e variáveis no formato "Truncado (não centrado)" (já disponíveis nas versões anteriores de 4D com o nome On Picture Scroll), Os list box (novo em 4D v15). Por padrão, o evento não é selecionado para os objetos na lista de propriedades. O evento de formulário On Scroll é gerado assim que um usuário mova o objeto de formulário dentro da área que o contém. O evento é gerado somente quando o deslocamento é o resultado de uma ação do usuário: usando barras e / ou cursores de rolagem, com a roda do mouse ou o teclado. Ele não é gerado quando o objeto se move devido à execução do comando OBJECT SET SCROLL POSITION. Esse evento é acionado após todos os outros eventos relacionados com a ação de movimento (On Clicked, On After Keystroke, etc.). O evento só é gerado no objecto método (não no método de formulário). Exemplo Se você deseja desenhar um retângulo vermelho ao redor de uma célula selecionada de um list box e quer que o retângulo se mova junto com o list box se for deslocado verticalmente pelo usuário. No método objeto do list box, pode escrever: Case of :(Form event=on Clicked) LISTBOX GET CELL POSITION(*;"LB1";$col;$raw) LISTBOX GET CELL COORDINATES(*;"LB1";$col;$raw;$x1;$y1;$x2;$y2) OBJECT SET VISIBLE(*;"RedRect";True)&NBSP; //inicializa um retângulo vermelho OBJECT SET COORDINATES(*;"RedRect";$x1;$y1;$x2;$y2) :(Form event=on Scroll) LISTBOX GET CELL POSITION(*;"LB1";$col;$raw) LISTBOX GET CELL COORDINATES(*;"LB1";$col;$raw;$x1;$y1;$x2;$y2) OBJECT GET COORDINATES(*;"LB1";$xlb1;$ylb1;$xlb2;$ylb2) $toadd:=listbox Get headers height(*;"lb1") //preste atenção na altura do cabeçalho para que não o sobrepasse If($ylb1+$toAdd<$y1) & ($ylb2>$y2) //se estamos dentro do list box //para simplificar, só manejamos cabeçalhos //mas devemos manejar clipping horizontal //assim como as barras de deslocamento

60 End case OBJECT SET VISIBLE(*;"RedRect";True) OBJECT SET COORDINATES(*;"RedRect";$x1;$y1;$x2;$y2) Else OBJECT SET VISIBLE(*;"RedRect";False) End if Como resultado, o retângulo vermelho segue o deslocamento do list box:

61 OPEN URL (novo nome para OPEN WEB URL) OPEN URL ( rota {;nomapp} {; *} ) Parâmetro Tipo Descrição rota Cadeia -> Rota do documento a abrir ou URL nomapp Cadeia -> Nome da aplicação a utilizar * Operador -> Se especificado = o URL não é traduzido; se omite = o URL se traduz Descrição Originalmente introduzido em 4D v14 R3 Nota de compatibilidade: OPEN URL é o novo nome do comando OPEN WEB URL (tema "Utilidades"), cujas capacidades foram estendidas. O comando OPEN URL aceita um novo parâmetro nomapp, o que lhe permite designar a aplicação a utilizar para abrir o documento ou URL. Se especifica este parâmetro, o comando irá pedir ao sistema buscar uma aplicação instalada com o nome especificado e caso o encontre, o lançará e lhe pedirá que abra a URL ou documento especificado. Em Windows, o mecanismo para reconhecer um nome de aplicação é o mesmo utilizado pelo elemento de menu "Executar" no menu 'Início'. Por exemplo: "iexplore" para lançar Internet Explorer. "chrome" para lançar Chrome (if installed) "winword"para lançar MS Word (se está instalado) Nota: a lista de aplicações reconhecidas pode ser encontrada no registro na seguinte chave: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths Em OS X, o mecanismo utiliza a base do Finder que indexa automaticamente todas as aplicações instaladas. Reconhece toda aplicação.app por seu nome de pacote (com ou sem o sufixo.app). Por exemplo: "safari" "FireFox" "TextEdit" Se a aplicação nomapp não se encontra, não se devolve nenhum erro; o comando funciona como se não tivesse sido especificado (ou seja, o sistema seleciona a aplicação mais adequada para o tipo de documento ou URL). Exemplo Pode abrir um arquivo texto com diferentes aplicações: OPEN URL("C:\\temp\\cookies.txt") //abre o arquivo com o Bloc de notas OPEN URL("C:\\temp\\cookies.txt";"winword") //abre o arquivo com MS Word (se está instalado) OPEN URL("C:\\temp\\cookies.txt";"excel") //abre o arquivo com MS Excel (se está instalado)

62 PROCESS 4D TAGS PROCESS 4D TAGS ( modeloentrada; resultadosaida{;param1;...;paramn} ) Parâmetro Tipo Descrição modeloentrada Texto, BLOB -> Dados que contém as etiquetas a processar resultadosaida Texto, BLOB <- Resultado da execução do modelo param1...n Texto, Data, Hora, número, ponteiro -> Parâmetros a passar ao modelo em execução Descrição Originalmente introduzido em 4D v14 R4 Tema: Ferramentas O comando PROCESS 4D TAGS agora suporta a inserção de parâmetros no modelo que se está executando. PROCESS 4D TAGS aceita um número indefinido de parâmetros param adicionais. Igual que para os métodos de projeto, os parâmetros podem ser valores escalares de qualquer tipo (texto, data, hora, inteiro longo, real...). Também pode utilizar arrays passando ponteiros de array. Dentro do modelo processado pelas etiquetas 4D, estes parâmetros são acessíveis sob os argumentos padrões $1, $2..., como nos métodos 4D (ver exemplo). Um conjunto dedicado de variáveis locais se define agora no contexto de execução do comando PROCESS 4D TAGS. Estas variáveis podem ser lidas ou escritas durante o processo. Nota de compatibilidade: em versões anteriores de 4D, as variáveis locais definidas no contexto de chamada se poderiam acessar no contexto de execução de PROCESS 4D TAGS em modo interpretado. Este já não é o caso. Nota: uma nova etiqueta 4DEval também é adicionado em 4D e a etiqueta 4DLOOP agora aceita ponteiros. Para obter mais informação, consulte a seção Etiquetas de transformação 4D. Exemplo ARRAY TEXT($array;2) $array{1}:="hello" $array{2}:="world" $input:="<!--#4deval $1-->" $input:=$input+"<!--#4dloop $2-->" $input:=$input+"<!--#4deval $2->{$2->}--> " $input:=$input+"<!--#4dendloop-->" PROCESS 4D TAGS($input;$output;"elements = ";->$array) // $output = "elements = hello world"

63 QR Get text property e QR SET TEXT PROPERTY QR Get text property (area ; numcoluna; numlinha; propriedade) -> Resultado Parâmetro Tipo Descrição area Inteiro longo -> Referência da área numcoluna Inteiro longo -> Número de coluna numlinha Inteiro longo -> Número de ruptura propriedade Inteiro longo -> Número de propriedade Resultado Inteiro longo Cadeia <- Valor da propriedade QR SET TEXT PROPERTY ( area ; numcoluna; numlinha; propriedade ; valor) Parâmetro Tipo Descrição area Inteiro longo -> Referência da área numcoluna Inteiro longo -> Número de coluna numlinha Inteiro longo -> Número de linha propriedade Inteiro longo -> Número de propriedade valor Inteiro longo Cadeia <- Valor da propriedade selecionada Descrição Originalmente introduzido em 4D v14 R3 Estes comandos foram modificados para suportar nomes de fontes para definir as propriedades de texto em vez de números de fonte que não estão em uso na faixa 4D v14. Esta modificação é parte da estratégia global de 4D de eliminar as chamadas QuickDraw do programa. O parâmetro propriedade mudou: A constante qr font foi renomeada como _O_qr font. Está obsoleta e já não deve ser utilizada (a compatibilidade se mantém mas não será suportada em futuras versões) A nova constante qr font name (10) foi adicionada ao tema "QR Text Properties". Agora deve utilizar esta constante para definir o tipo de fonte e utilizar um valor de tipo string. Pode passar um nome devolvido pelo comando FONT LIST. Exemplo Este método define o atributo fonte do título da primeira coluna: // A seguinte chamada atribui a fonte Times: QR SET TEXT PROPERTY(qr_area;1;-1;qr font name;"times")

64 RESOLVE POINTER RESOLVE POINTER ( ponteiro; nomvar ; numtabela ; numcamp ) Parâmetro Tipo Descrição ponteiro Ponteiro -> Ponteiro para o qual se deve recuperar o objeto referenciado nomvar String <- Nome da variável referenciada ou string vazia numtabela Inteiro longo <- Número da tabela ou do elemento de array referenciado ou 0 ou -1 numcamp Inteiro longo <- Número de campo referenciado ou 0 ou -1 Descrição Tema: Linguagem A partir de 4D v15, arrays bidimensionais são suportados. Por exemplo, agora você pode escrever ->a{1}{2}. Como resultado, quando é passado um ponteiro para um elemento de um array bi-dimensional, o parâmetro numcamp recebe o número do elemento da segunda dimensão. Além disso, [#current_title] agora retorna -1 em vez de 0 na numcamp para ponteiros para variáveis e arrays unidimensionais. A tabela de resultados é agora: Objeto referenciado Parametros nomvar numtabla numcampo... Variable Nome da variável -1-1 Elemento do array Nome do array Número do elemento -1 Elemento de array 2D Nome do array 2D Número do elemento linha Número do elemento coluna... Exemplo Este é um exemplo de ponteiro a um array 2D: ARRAY TEXT(atCities;100;50) C_POINTER($city) atcities{1}{2}:="rome" atcities{1}{5}:="paris" atcities{2}{6}:="new York" //...outros valores $city:=->atcities{1}{5} RESOLVE POINTER($city;$var;$rowNum;$colNum) //$var="atcities" //$rownum="1" //$colnum="5"

65 Subrecords conversion Originalmente introducido en 4D v14 R3 Agora pode atribuir o valor do campo especial "id_added_by_converter" que é adicionado automaticamente por 4D ao converter uma base de uma versão anterior a v11. Em versões anteriores, este valor só pode ser atribuído por 4D e você necessita utilizar comandos "obsoletos" tais como _o_create SUBRECORD para poder adicionar novos registros nas sub tabelas convertidas. Esta nova funcionalidade lhe permite converter suas bases antigas que utilizam as sub tabelas de uma maneira mais progressiva: pode manter a ligação especial "relação sub tabela" e adicionar ou modificar os registros relacionados como se fossem estandarte. Uma vez atualizados todos seus métodos, poderá substituir a relação especial com um link regular sem mudar o código. Por exemplo, agora pode escrever: CREATE RECORD([Employees]) <p>[employees]last Name:="Jones" CREATE RECORD([Employees_Children]) [Employees_Children]First Name:="Natacha" [Employees_Children]Birthday:=!12/24/2013! [Employees_Children]id_added_by_converter:=4 //Type mismatch in previous releases SAVE RECORD([Employees_Children]) SAVE RECORD([Employees] Este código funcionará indiferentemente com uma relação especial ou estandarte.

66 Toolbar form windows Originalmente introduzido em 4D v14 R5 4D v14 R5 inclui uma série de implementações destinadas a ajudar aos desenvolvedores a projetar e administrar barras de ferramentas personalizadas. As barras de ferramentas são janelas com propriedades específicas em quanto a sua posição e tamanho. Os seguintes comandos suportam a criação e a gestão de barras de ferramentas: Open form window: aceita o novo tipo Toolbar form window Tool bar height: devolve a altura da barra de ferramentas personalizada HIDE TOOL BAR y SHOW TOOL BAR: anteriormente obsoletos, estes comandos foram reativados para a gestão de barras de ferramentas personalizadas. Open form window Tema: Janelas Open form window ( {atable ;} formname {; type {; hpos {; vpos {; *}}}} ) -> Resultado O comando Open form window agora pode criar janelas formulário de tipo Barra de ferramentas. Uma nova constante foi adicionada ao tema "Criar janela formulário" e utilizada no parâmetro type: Constante Tipo Valor Toolbar form window Inteiro longo 35 Quando passar a constante Toolbar form window, a janela é criada com a localização, o tamanho e as propriedades gráficas de uma barra de ferramentas, ou seja: A janela será mostrada sempre justo debaixo da barra de menus O tamanho horizontal da janela será ajustado automaticamente para encher todo o espaço disponível horizontal no escritório (em OS X) ou dentro da janela principal de 4D (em Windows). O tamanho vertical da janela se baseia nas propriedades do formulário, como todos os outros tipos de janelas formulário. A janela não tem bordes, não pode se mover e não pode ser redimensionada manualmente, e HPOS, os parâmetros posh, PosV e * se ignoram se passarem. Não é possível criar ao mesmo tempo duas janelas de barra de ferramentas diferentes. Se Criar janela formulário é chamada com o tipo Formulário janela barra de ferramentas enquanto já existe uma janela de barra de ferramentas, é gerado um erro ("Não pode criar duas janelas formulários de tipo barra de ferramentas"). Nota sobre as janelas formulário barra de ferramentas e modo tela completa OS X: se sua aplicação mostrar ao mesmo tempo uma janela barra de ferramentas e uma janela estandarte que suporta o modo tela completa (opção Com modo tela completa Mac), as regras de interface requerem que se oculte a barra de ferramentas quando uma janela estandarte entra em modo tela completa. Para saber se uma janela mudou ao modo de tela completa, simplesmente prove se seu tamanho vertical é exatamente o mesmo que a altura da tela (ver abaixo). Altura barra de ferramentas Tema: Windows (comando deslocado desde o tema "Interface de usuário") Tool bar height -> Resultado Parâmetro Tipo Descrição Resultado Inteiro <- Altura (expressada em pixels) da barra de ferramentas ou 0 se a barra de ferramentas está longo oculta

67 Este comando também funciona com as barras de ferramentas personalizadas criadas pelo comando Open form window utilizando o tipo Toolbar form window. Este comando devolve a altura da barra de ferramentas visível atual, expressada em pixels. Pode ser a barra de ferramentas do modo Desenho de 4D, ou uma barra de ferramentas criada por Open form window, dependendo do contexto (a barra de ferramentas do modo Desenho se oculta automaticamente se mostra uma barra de ferramentas personalizada criada por Open form window). Se a barra de ferramentas está oculta, o comando devolve 0. HIDE TOOL BAR e SHOW TOOL BAR Tema: Janelas (comandos deslocados desde o tema "User interface") SHOW TOOL BAR Não requer nenhum parâmetro HIDE TOOL BAR Não requer nenhum parâmetro Estes comandos já não são obsoletos em 4D: agora podem ser usados para gerenciar as janelas formulário de barras de ferramentas personalizadas criadas com o comando Open form window para o processo atual. SHOW TOOL BAR: se for aberta uma janela barra de ferramentas (chamando Open form window com a opção Toolbar form window), o comando faz com que esta janela seja visível. Se a janela barra de ferramentas já era visível ou não existe, este comando não faz nada. HIDE TOOL BAR: se for aberta uma janela da barra de ferramentas (chamando Open form window com a opção Toolbar form window), o comando oculta esta janela. Se a janela barra de ferramentas já estava oculta ou não existe, este comando não faz nada. Exemplo Em OS X, que foi definido uma barra de ferramentas personalizadas uma janela estandarte com a opção Has full screen mode Mac. Quando uma janela estandarte é maximizada por um usuário enquanto é mostrada a janela de barra de ferramentas, você não deseja que a janela maximizada seja solapada pela barra de ferramentas. Para evitar isto, no evento "On Resize" do formulário da janela estandarte, é necessário detectar quando a janela está em modo de tela completa e logo chamar a HIDE TOOL BAR: Case of :(Form event=on Resize) GET WINDOW RECT($left;$top;$right;$bottom) If(Screen height=($bottom-$top)) HIDE TOOL BAR Else SHOW TOOL BAR End if End case Constante Has toobar button Mac em desuso A constante Has toolbar button Mac é obsoleta, a opção correspondente foi posta em desuso por Apple desde OS X A constante estava disponível nos temas "Criar janela", "Criar janela formulário". Foi mudado o nome _O_Has toolbar button Mac

68 TRANSFORM PICTURE TRANSFORM PICTURE ( imagem; operador {; param1 {; param2 {; param3 {; param4}}}} ) Novo operador Originalmente introducido en 4D v14 R2 O comando TRANSFORM PICTURE (tema "Imagens") aceita a nova constante Transparency no parâmetro operador para permitir aplicar a transparência personalizada a imagens transformadas. Esta funcionalidade está especialmente desenhada para manipular a transparência em imagens convertidas das imagens em formato PICT em desuso, mas pode ser usado com imagens de qualquer tipo. A nova constante foi adicionado ao tema "Picture Transformação". Quando passado, só pode ser utilizado param1: operador (valor) param1 param2 param3 param4 Valores Transparency (102) RGB color hexadecimal Transparency: uma máscara de transparência se aplica a imagem com base na cor passada em param1. Por exemplo, se passar 0x00FFFFFF (cor branca) em param1, todos os pixels brancos na imagem original serão transparentes na imagem transformada. Esta operação pode ser aplicada a imagens de mapa de bits ou de vetores. Por padrão, se o parâmetro param1 for omitido, a cor branca (0x00FFFFFF) se define como cor objetivo. Exemplo Se quiser definir as partes brancas de uma imagem como transparentes. Para isso, pode utilizar o seguinte código: TRANSFORM PICTURE(Pict1;Transparency;0x00FFFFFF) //0x00FFFFFF is white Obtém o seguinte resultado:

69 WA GET PREFERENCE e WA SET PREFERENCE Novo comportamento por padrão Por razões de segurança, a mudança de um conteúdo da área Web ao soltar um arquivo ou um URL na área está desativado por padrão a partir de 4D v14 R2. O cursor do mouse mostra agora um ícone de proibido quando o usuário tenta soltar um arquivo ou um URL na área. Em versões anteriores, era necessário instalar um filtro específico, utilizando por exemplo WA SET URL FILTERS, para evitar este tipo de ações. Se deseja permitir esta funcionalidade nas aplicações 4D v14 R2, é necessário definir uma nova preferência de área web: wa enable url drop. Novo seletor Uma nova preferência está disponível no parâmetro seletor para o comando WA SET PREFERENCE para permitir soltar um URL ou um arquivo na área web: Constante Tipo Valor Comentário WA enable URL drop Inteiro longo 101 Deixa cair uma URL ou arquivo na área de Web (default = False) Permite soltar um URL ou um arquivo na área web (por padrão = false) [#/table] Se deseja ativar soltar um URL na área web, esta preferência deve ser definida antes de carregar um URL, preferivelmente durante o evento de formulário On load. Exemplo Para ativar o URL solte-a na área web 'myarea': WA SET PREFERENCE(*;"myarea";WA enable URL drop;true)

70 WEB SET HTTP HEADER WEB SET HTTP HEADER ( cabecalho arraycampos {; arrayvalores} ) Cabeçalho Server modificável O comando WEB SET HTTP HEADER pode ser utilizado para definir o campo Server do cabeçalho da resposta enviada aos clientes Web pelo servidor HTTP de 4D. Em versões anteriores, este cabeçalho era definido automaticamente por 4D e não poderia ser modificado.

71 Clickcount Clickcount -> Resultado Parâmetro Tipo Descrição Resultado Inteiro longo Número de cliques consecutivos Descrição Tema: Eventos formulário O novo comando Clickcount devolve, no contexto de um evento clique, o número de vezes que o usuário fez clique de maneira repetida com o mesmo botão do mouse. Normalmente, este comando devolve 2 para um duplo clique. Este comando lhe permite detectar duplos cliques nos cabeçalhos ou rodapés de página do listbox, e também para gerenciar as sequências de triplos cliques ou mais. Cada clique gera um evento clique separado. Por exemplo, se um usuário faz duplo clique, um evento é gerado pelo primeiro clique no qual Clickcount devolve 1; logo outro evento é gerado pelo segundo clique, no qual Clickcount devolve 2. Este comando só deve ser utilizado no contexto dos eventos de formulário On Clicked, On Header Click ou On Footer Click. Portanto, é necessário verificar em modo Desenho que o evento apropriado foi selecionado corretamente nas propriedades do formulário e/ou para o objeto específico. Quando ambos eventos formulário On Clicked e On Double Clicked estão ativos, a seguinte sequência será devolvida por Clickcount: 1 no evento On Clicked 2 no evento On Double Clicked 2+n no evento On Clicked Exemplo 1 A estrutura de código seguinte pode ser colocada em um cabeçalho de listbox para gerenciar cliques simples e duplos: Case of :(Form event=on Header Click) Case of :(Clickcount=1)... //single-click action :(Clickcount=2)... //double-click action End case End case Exemplo 2 As etiquetas não são editáveis mas o são depois de um triplo-clique. Se deseja permitir aos usuários editar as etiquetas, pode escrever o método objeto seguinte: If(Form event=on Clicked) Case of :(Clickcount=3) OBJECT SET ENTERABLE(*;"Label";True) EDIT ITEM(*;"Label") End case End if

72 EXPORT STRUCTURE EXPORT STRUCTURE ( estruturaxml ) Parâmetro Tipo Descrição estruturaxml Variável texto Definição XML exportada da estrutura da base 4D Descrição Tema: Estrutura Acesso O novo comando EXPORT STRUCTURE exporta em estruturaxml a definição da estrutura da base de dados 4D atual em formato XML. Este comando utiliza os mesmos mecanismos que o comando de menu Exportar > Definição de estrutura a arquivo XML... que está disponível na interface de modo Desenho 4D (ver Exportar e importar definições de estrutura). Em estruturaxml, se passar uma variável texto para ser preenchida com a definição de estrutura. A definição exportada inclui tabelas, campos, índices e relações, junto com seus atributos e as diversas características que são necessárias para uma definição completa da estrutura. Os elementos invisíveis se exportam e etiquetam com os atributos apropriados. Os elementos eliminados, no entanto, não se exportam. A "gramática" interna das definições da estrutura 4D se documenta através de arquivos DTD, também utilizados para a validação de arquivos XML. Os arquivos DTD utilizados por 4D se agrupam na pasta DTD, que se encontra junto a aplicação 4D. Os arquivos base_core.dtd e common.dtd são utilizados para a definição da estrutura. Para obter mais informação sobre as definições de estrutura 4D, não duvide em consultar estes arquivos, assim como os comentários que contém. Exemplo Você deseja exportar a estrutura da base a um documento de texto: C_TEXT($vTStruc) EXPORT STRUCTURE($vTStruc) TEXT TO DOCUMENT("myStructure.xml";$vTStruc)

73 Find in sorted array Find in sorted array ( array ; valor ; > ou < {; posprim {; posult}} ) -> Resultado Parâmetro Tipo Descrição array Array Array a buscar valor Expression Valor do mesmo tipo a buscar no array > ou < Operador > se array é ordenado em ordem ascendente, < se é ordenado em ordem descendente posprim Inteiro longo Posição de sua primeira ocorrência se for encontrado o valor; caso contrário a posição onde deveria ser inserido o valor posult Inteiro Posição de sua última ocorrência se não se encontra o valor; caso contrário igual posprim longo Resultado Booleano True se pelo menos um elemento no array coincide com o valor, False em caso contrário Descrição Tema: Arrays O novo comando Find in sorted array devolve true se pelo menos um elemento no array ordenado com o valor e opcionalmente devolve a posição dos elementos correspondentes. Diferente de Find in array, Find in sorted array só funciona com um array ordenado e oferece informação sobre a posição das ocorrências, o que lhe permite inserir elementos se for necessário. O array deve estar já ordenado e deve coincidir com a ordem específica pelo parâmetro > ou < (ou seja, o símbolo "maior que" para a ordem ascendente e o símbolo "menor que" para a ordem descendente). O comando Find in sorted array tomará vantagem da ordem e uso de um algoritmo de pesquisa binária, que é bem mais eficiente para grandes arrays (para mais informação, consulte a página algoritmo de pesquisa binária em Wikipédia). No entanto, se o array não está ordenado corretamente, o resultado pode ser incorreto. O comando ignorará a indicação de ordem se comporta como um Find in array (pesquisa sequencial, devolvendo -1 para posprim e posult se não se encontra o valor) em qualquer dos seguintes casos: se o tipo de array não pode ordenar (por exemplo arrays ponteiro), se o array é de tipo booleano (não preciso), se a base de dados não é Unicode (modo compatibilidade) e o array é uma cadeia ou array texto, quando é procurado em um array text para uma cadeia que inclui um coringa no começo ou no meio da cadeia (utilizando uma pesquisa binária com um caractere coringa não é possível porque os elementos correspondentes podem não ser contínuos no array). Em caso de que o comando devolva False, o valor devolvido em posprim pode ser passado a INSERT IN ARRAY para inserir o valor no array mantendo o array ordenado. Esta sequencia é mais rápida que a inserção de um novo elemento ao final do array e logo chamar a SORT ARRAY para mover ele ao lugar correto. O valor devolvido em postult pode ser combinado com o valor devolvido em posprim para realizar sobre cada elemento do array que coincida com o valor (sob um For...End for) ou para encontrar o número total de ocorrências (como encontraria o comando Count in array mais rápido). Exemplo 1 Você deseja inserir um valor, se for necessário, mantendo o array ordenado: C_LONGINT($pos) If(Find in sorted array($array ;$value ;>;$pos) ALERT("Found at pos "+String($pos)) Else INSERT IN ARRAY($array ;$pos) $array{$pos}:=$value End if Exemplo 2 Você quer encontrar o número de ocorrências das cadeias que começam por "test" e criar uma cadeia que vincula todos estes elementos: C_LONGINT($posFirst ;$poslast) C_TEXT($output)

74 If(Find in sorted array($array ;$poslast)) $output:="found "+String($posLast-$posFirst+1)+" results :\n" End if For($i ;$posfirst ;$poslast) $output:=$output+$array{$i}+"\n" End for

75 Get database measures Get database measures {( opcoes )} -> Resultado Parâmetro Tipo Descrição opcoes Objeto Opções de retorno Resultado Objeto Objeto que contém informação da base Descrição Tema: Ambiente 4D O comando Get database measures lhe permite obter informação detalhada sobre os eventos do motor de base de dados 4D. A informação devolvida inclui o acesso leitura/escritura dos dados desde/até o disco ou a memória cachê, assim como também o acesso aos índices da base de dados, as pesquisas e as ordenações. Get database measures devolve um único objeto que contém todas as medidas relevantes. O parâmetro opcoes lhe permite configurar as opções para a informação devolvida. Apresentação do objeto devolvido O objeto devolvido contém uma só propriedade chamada "DB", que têm a seguinte estrutura básica: { "DB": { "diskreadbytes": { }, "cachereadbytes": { }, "cachemissbytes": { }, "diskwritebytes": { }, "diskreadcount": { }, "cachereadcount": { }, "cachemisscount": { }, "diskwritecount": { }, "datasegment1": { }, "indexsegment": { }, "tables": { }, "indexes": { } } } Este objeto está composto de oito propriedades que contém as medidas básicas ("diskreadbytes", "cachereadbytes", "cachemissbytes", "diskwritebytes", "diskreadcount", "cachereadcount", "cachemisscount", "diskwritecount") e propriedades adicionais ("datasegment1 "," indexsegment ", "tables", "index") que também podem conter propriedades elementares, mas a um nível diferente e com um alcance diferente (ver mais a frente). Nota: uma propriedade só está presente no interior do objeto se este recebe conteúdo. Quando uma propriedade não tem nenhum conteúdo, não está incluída no objeto. Por exemplo, se a base foi aberta em modo de leitura e os índices não foram utilizados, o objeto devolvido não conterá "diskwritebytes", "diskwritecount", "indexsegment" e "indexes". Propriedades elementares As propriedades elementares podem ser encontradas nos diferentes níveis do objeto DB. As propriedades elementares devolvem a mesma informação mas com alcances diferentes. Esta é uma descrição das propriedades elementares: Nome diskreadbytes cachereadbytes cachemissbytes diskwritebytes diskreadcount cachereadcount cachemisscount diskwritecount Informação devolvida Bytes lidos desde o disco Bytes lidos desde o cachê Bytes faltantes do cachê Bytes escritos no disco Acesso em leitura desde o disco Acesso em leitura desde o cachê Acesso de leitura faltante no cachê Acesso em escritura no disco

76 As oito propriedades elementares têm a mesma estrutura do objeto, por exemplo: "diskreadbytes": { "value": , "history": [ // optional {"value": 52564,"time": -1665}, {"value": 54202,"time": -1649}, ] } "value" (número): a propriedade "value" contém um número que representa ou uma quantidade de bytes ou uma contagem de acessos. Basicamente, este valor é a soma dos valores do objeto "history" (ainda que o objeto "history" não esteja presente). "history" (array de objetos): o array de objetos "history" é uma compilação de valores de eventos agrupados por segundo. A propriedade "history" só está presente se solicitar através do parâmetro opcoes (ver a continuação). O array history terá um máximo de 200 elementos. Cada elemento do array é em si mesmo um objeto que contém duas propriedades: "value" e "time". "value" (número): quantidade de bytes ou acessos manipulados durante o período de tempo designado na propriedade "time" associada. "time" (número): número de segundos passados desde que foi chamada a função. No exemplo anterior ("time": -1649) significa 1649 segundos atrás (ou mais precisamente entre 1649 e 1650 segundos). Durante este período de um segundo, 54,202 bytes foram lidos no disco. O array history não contém valores sequenciais (-1650, -1651, -1652, etc.) O valor anterior é -1665, o que significa que nada foi lido no disco no período de 15 segundos entre 1650 e Nota: Por padrão, o array conterá somente informação útil. Dado que o tamanho máximo do array é 200, se a base de dados se utiliza intensivamente (algo é lido a cada segundo no disco), a longitude máxima da história será de 200 segundos. Por outro lado, se quase não passa nada, exceto, por exemplo, uma vez cada 3 minutos, o tamanho da história será de 600 minutos (3*200). Este exemplo pode ser representado no seguinte diagrama: datasegment1 e indexsegment As propriedades "datasegment1" e "indexsegment" podem conter até quatro propriedades elementares (quando estão disponíveis): "datasegment1": { "diskreadbytes": { }, "diskwritebytes": { }, "diskreadcount": { }, "diskwritecount": { } }, "indexsegment": { "diskreadbytes": { }, "diskwritebytes": { }, "diskreadcount": { }, "diskwritecount": { } } Estas propriedades devolvem a mesma informação que as propriedades elementares, mas detalhada para cada arquivo da base: "datasegment1" representa o arquivo de dados.4dd no disco "indexsegment" representa o arquivo de índice.4dx no disco

77 Por exemplo, pode ser obtido o seguinte objeto: { "DB": { "diskreadbytes": { "value": }, "diskreadcount": { "value": 229 }, "datasegment1": { "diskreadbytes": { "value": }, "diskreadcount": { "value": 212 } }, "indexsegment": { "diskreadbytes": { "value": }, "diskreadcount": { "value": 17 } } Os valores devolvidos correspondem as fórmulas seguintes: diskreadbytes.value = datasegment1.diskreadbytes.value + indexsegment.diskreadbytes.value diskwritebytes.value = datasegment1.diskwritebytes.value + indexsegment.diskwritebytes.value diskreadcount.value = datasegment1.diskreadcount.value + indexsegment.diskreadcount.value diskwritecount.value = datasegment1.diskwritecount.value + indexsegment.diskwritecount.value tables A propriedade "tables" contém tantas propriedades como tabelas que tenham sido acessadas, seja em modo de leitura ou escritura desde a abertura da base. O nome de cada propriedade é o nome da tabela em questão. Por exemplo: "tables": { "Employees": { ) "Companies": { ) } Cada objeto "table" contém 12 propriedades: As primeiras oito propriedades são as propriedades elementares (ver mais acima) com os valores relacionados a tabela implicada. As outras duas propriedades, "records" e "blobs", também tem as mesmas oito propriedades elementares, mas limitadas a certos tipos de campos: A propriedade "records" se refere A todos os campos da tabela (cadeias, datas, números, etc.) a exceção de texto, imagens e BLOBs. A propriedade "blobs" se refere aos campos de tipo texto, imagem e BLOB da tabela. Uma ou duas propriedades adicionais, "fields" e "queries", também poden estar presentes em função das pesquisas e as ordenações realizadas na tabela concernente: A propriedade "fields" contém o maior número de atributos "nome de campo" (que também são sub-objetos) como o número de campos que se utilizam para as pesquisas ou ordenações. Cada objeto nome de campo contém: um objeto "querycount" (com ou sem história, dependendo do parâmetro opcoes) se uma pesquisa foi realizada utilizando este campo e/ou um objeto "sortcount" (com o sem história, dependendo do parâmetro opcoes) se uma ordenação foi realizada utilizando este campo. Este atributo não se baseia no uso de índices; Todos os tipos de pequisas e de ordenações são levadas em conta. Exemplo: desde o lançamento da base, várias pesquisas e ordenações foram levadas a cabo utilizando os campos CompID, Name e FirstName. TEl objeto devolvido contém o seguinte sub-objeto "fields" (opcoes com rota e sem histórico): { "DB": { "tables": { "Employees": { "fields": { "CompID": { "querycount": { "value": 3 } }, "Name": { "querycount": { "value": 1 }, "sortcount": { "value": 3 } }, "FirstName": { "sortcount": { "value": 2 } } (...) Nota: o atributo "fields" é criado unicamente se uma pesquisa ou uma ordenação foi realizada na tabela; caso contrário este atributo não estará presente. "queries" é um array de objetos que oferece uma descrição de cada pesquisa realizada na tabela. Cada elemento do array conterá três atributos: "querystatement" (cadeia): cadeia de pesquisa (que contém os nomes dos campos, mas não os valores procurados). Por exemplo: "(Companies.PK_ID!=?)" "querycount" (objeto): "value" (número): número de vezes que a cadeia de pesquisa foi executado, sem importar os valores procurados. "history" (array de objetos) (se solicitar em opcoes): propriedades do histórico estandarte "value" e "time" "duration" (objeto) (se "value" é >0) "value" (número): número de milissegundos "history" (array de objetos) (se solicitar em opcoes): propriedades do histórico estandarte "value" e "time" Exemplo: desde o momento em que se lança a base, uma só pesquisa foi realizada na tabela Employees (opcoes são com rota e com histórico): { "DB": { "tables": { "Employees": {

78 "queries": [ { "querystatement": "(Employees.Name ==?)", "querycount": {<p> "value": 1, "history": [ { "value": 1, "time": } ] }, "duration": { "value": 2, "history": [ { "value": 2, "time": } ] } }, (...) Nota: o atributo "queries" é criado quando pelo menos uma pesquisa foi realizada na tabela. indexes Este é o objeto mais complexo. Todas as tabelas as quais tiveram acesso utilizando um ou vários de seus índices se armazenam como propriedades e no interior das propriedades, também se incluem os nomes dos índices utilizados como propriedades. Os índices de palavras chaves aparecem por separado e seus nomes estão seguidos por "(Keyword)". Por último, cada objeto nome de índice contém as oito propriedades elementares relacionadas com este índice assim como um máximo de quatro sub-objetos em função do uso do índice da base desde seu lançamento (cada sub-objeto só existe se pelo menos uma operação correspondente foi realizado em algum momento desde o lançamento de base). Exemplo: desde o lançamento da base, vários índices do campo [Employees] EmpLastName foram solicitados. Além disso, 2 registros foram criados e 16 se suprimiram na tabela [Companies]. Esta tabela tem um campo "name" que está indexado. A tabela também consultou e ordenou utilizando este campo. O objeto resultante conterá: "indexes": { "Employees": { "EmpLastName": { "diskreadbytes": { }, "cachereadbytes": { }, "cachemissbytes": { }, "diskwritebytes": { }, "diskreadcount": { }, "cachereadcount": { }, "cachemisscount": { }, "diskwritecount": { } } "EmpLastName (Keyword)": {...}, "index3name": { }, "index4name": { }, } "Companies": { "Name": (...) "querycount": { "value": 41 }, "sortcount": { "value": 3 }, "insertkeycount": { "value": 2 }, "deletekeycount": { "value": 16 } table3name: { } } Parâmetro opções O parâmetro opcoes lhe permite personalizar a informação real que devolve o comando. Em opcoes, se passar um objeto que pode conter até três propriedades: "withhistory", "historylength" e "path". Propriedade Tipo Descrição "withhistory" Booleano "true" significa que o objeto "history" será devolvido pela função dentro do objeto devolvido; "false" significa que o objeto devolvido pela função não irá conter o objeto "history" "historylength" número Define o tamanho do array history devolvido em segundos(*). Rota completa da propriedade específica ou arrays de rotas completas das propriedades específicas que deseja obter. Se passar uma cadeia, só o valor correspondente se devolve no "path" cadeia objeto "DB" (se a rota é válida). Exemplo "DB.tables.Employees.records.diskWriteBytes". Quando passar um array de cadeias, todos os valores correspondentes são devolvidos no objeto "DB" (se as rotas são álidas). Exemplo: ["DB.tables.Employee.records.diskWriteBytes", "DB.tables.Employee.records.diskReadCount","DB.dataSegment1.diskReadBytes"] (*) Como se descreveu anteriormente, a história não se armazena como uma sequência de segundos, somente com valores relevantes. Se não ocorre nada durante um par de segundos ou mais, nada se armazena e uma brecha aparecerá no array de histórico interno. "time" pode conter, por exemplo, -2, -4, -5, -10, -15, -30 com valores de 200, 300, 250, 400, 500,150. Se a propriedade "historylength" está definida em 600 (10 minutos), logo o array devolvido irá conter 0, -1, -2, para "time" e só os valores -2, -4, - 5, -10, -15, -30 serão preenchidos. Todos os outros valores ficarão em 0 (zero) como valor. Também como foi descrito anteriormente, o único limite do array interno é o tamanho (200), não o tempo. Isto significa que se há uma baixa atividade para uma propriedade específica, o tempo mais antigo pode ser bem grande (por exemplo: faz uma hora). Também pode conter menos de 200 valores se a base acabou de iniciar. Nestes casos, se o tempo do histórico interno é menor ao solicitado ou se todos os valores importantes que já foram definidos no array devolvido, o valor devolvido será -1. Exemplo: a base só foi iniciada faz 20 segundos e a história da petição é de 60 segundos. Os valores devolvidos entre 0 e -20 se definem com valores ou zeros e os outros se estabelecerão com -1. Quando um valor "-1" se devolve, isto significa que, ou bem o tempo de solicitação é muito antigo ou que o valor já não está no array de história interna (ou seja, chegou ao limite dos 200 elementos e foram eliminados os valores maiores). Cliente/servidor e componentes Este comando devolve a informação sobre o uso da base de dados. Isto significa que lhe devolve um objeto válido com valores relevantes só quando é chamado: em modo local 4D (se chamado desde um componente, devolve informação sobre a base de dados do host) no servidor em modo cliente/servidor. Se o comando é chamado desde um 4D remoto, logo o objeto é deixado vazio. Neste contexto, se necessita obter informação sobre a base de dados no servidor, a forma mais simples de realizar esta ação é criar um método com a opção "executar no servidor" ativada. Este princípio também funciona para um recipiente: se o componente se utiliza em um contexto local 4D, devolverá a informação sobre a base local; em um contexto 4D remoto, devolverá a informação sobre a base do servidor.

79 Exemplo 1 Você deseja obter o objeto "history" no objeto devolvido: C_OBJECT($param) C_OBJECT($measures) OB SET($param;"withHistory";True) $measures:=get database measures($param) Exemplo 2 Só queremos saber o número total de bytes lidos na memória cachê ("cachereadbytes"): C_OBJECT($oStats) C_OBJECT($oParams) OB SET($oParams;"path";"DB.cacheReadBytes") $ostats:=get database measures($oparams) O objeto devolvido contém, por exemplo: { "DB": { "cachereadbytes": { "value": } } } Exemplo 3 Queremos obter as medidas de bytes de cachê nos últimos dois minutos: C_OBJECT($oParams) C_OBJECT($measures) OB SET($oParams;"path";"DB.cacheReadBytes") OB SET($oParams;"withHistory";True) OB SET($oParams;"historyLength";2*60) $measures:=get database measures($oparams)

80 Get locked records info Get locked records info ( atabela ) -> Resultado Parâmetro Tipo Descrição atabela Tabela Tabela para a qual você quer conhecer os registros bloqueados Resultado Objeto Descrição dos registros bloqueados (se existirem) Descrição Originally introduced in 4D v14 R3 Tema: Bloqueio de Registros O novo comando Get locked records info devolve um objeto que contém diferente informação sobre os registros bloqueados atualmente em atabela. O objeto devolvido contém uma propriedade "registros", que é um array de objetos: { } "records": [ objeto descrição, ( ) ] Cada elemento do array "description object" identifica um registro bloqueado na tabela especificada e contém as seguintes propriedades: Propriedade Tipo Descrição contextid UUID (Cadeia) UUID do contexto da base responsável do bloqueio contextattributes Objeto Objeto que contém a mesma informação que o comando LOCKED BY aplicado ao registro, a diferença é que Get locked records info devolve o nome de usuário definido no sistema e não o do usuário 4D (ver mais a frente). recordnumber Inteiro longo Número de registro do registro bloqueado Nota: para mais claridade, o comando LOCKED ATTRIBUTES foi renomeado LOCKED BY a partir de 4D v14 R3. O objeto contextattributes se compõe das seguintes propriedades: task_id: número de referência do processo user_name: nome do usuário definido no sistema operativo user4d_id: número de usuário 4D host_name: nome da máquina local task_name: nome do processo client_version: versão da aplicação cliente Nota: pode obter o nome de usuário 4D a partir do valor de user4d_id utilizando o seguinte código: GET USER LIST($arrNames;$arrIDs) $4DUserName:=Find in array($arrids;user4d_id) Nota: o comando funciona unicamente com 4D e 4D Server. Sempre devolve um objeto não válido quando é chamado desde um 4D remoto ou um recipiente. No entanto, pode ser chamado nestes contextos, se for ativada a opção "Executar no servidor". Neste caso, o objeto devolvido conterá, respectivamente, a informação sobre o servidor ou a base local. Exemplo Execute o seguinte código: $volocked :=Get locked records info([table]) Se dois registros estão bloqueados na tabela [Table], o seguinte objeto se devolve em $volocked: {

81 } "records": [ { "contextid": "A9BB84C0E57349E089FA44E04C0F2F25", "contextattributes": { "task_id": 8, (*) "user_name": "roland", (*) "user4d_id": 1, "host_name": "imac de roland", "task_name": "P_RandomLock", "client_version": }, "recordnumber": 1 }, { "contextid": " D1B8A4D86B857D92F593CCAC3", "contextattributes": { "task_id": 9, "user_name": "roland", "user4d_id": 1, "host_name": "imac de roland", "task_name": "P_RandomLock", "client_version": }, "recordnumber": 2 } ] Se o código é executado em um 4D Server e o bloqueio é causado por uma máquina cliente remota, o seguinte objeto é devolvido em $volocked: { } "records": [ { "contextid": "B0EC087DC2FA704496C0EA15DC011D1C", "contextattributes": { "task_id": 2, "user_name": "achim", "user4d_id": 1, "host_name": "achim-pcwin", "task_name": "P_RandomLock", "is_remote_context": true, "client_uid": "0696E66F6CD731468E6XXX581A87554A", "client_version": }, "recordnumber": 1 } ]

82 IMPORT STRUCTURE IMPORT STRUCTURE ( xmlestrutura ) Parâmetro Tipo Descrição xmlestrutura Texto Definição XML de uma estrutura de base de dados 4D Descrição Tema: Acesso de estrutura O novo comando IMPORT STRUCTURE lhe permite importar, na base atual, a definição da estrutura XML 4D que se passou em xmlestrutura. O parâmetro xmlestrutura deve conter uma definição de estrutura 4D válida em formato XML. Pode obter uma definição de estrutura utilizando uma das seguintes funcionalidades: execute o novo comando EXPORT STRUCTURE selecione o comando de menu Exportar > Definição de estrutura para arquivo XML... disponível na interface de modo 4D Design (ver Exportar e importar definições de estrutura), criar ou editar um arquivo XML personalizado baseado em DTDs públicos que podem se encontrar na pasta "DTD" da aplicação 4D. A definição de estrutura importada é adicionada a atual e é mostrada no editor de estrutura 4D estandarte, entre as tabelas existentes (se existir). Se uma tabela importada tem o mesmo nome que uma tabela local, é gerado um erro e se cancela a operação de importação. Também pode importar a estrutura em uma base de dados vazia, criando assim uma nova base de dados. É gerado um erro se a estrutura está em modo compilado ou de só leitura. Além disso, não pode ser chamado desde uma aplicação remota 4D. Exemplo Você deseja importar uma definição de estrutura guardada na base de dados atual: $struc:=document to text("c:\\4dstructures\\employee.xml") IMPORT STRUCTURE($struc)

83 LISTBOX GET CELL COORDINATES LISTBOX GET CELL COORDINATES ( {* ;} objeto ; coluna ; linha ; esq ; sup ; dir ; inf ) Parâmetro Tipo Descrição * Operador Se especificado = objeto é um nome de objeto (cadeia) Se omitido, objeto é uma variável objeto Objeto de formulário Nome de objeto (se especificado *) ou variável (se omitido *) coluna Inteiro longo Número de coluna linha Inteiro longo Número de linha esq Inteiro longo Coordenada esquerda do objeto sup Inteiro longo Coordenada superior do objeto dir Inteiro longo Coordenada direita do objeto inf Inteiro longo Coordenada inferior do objeto Descrição O comando LISTBOX GET CELL COORDINATES devolve nas variáveis ou campos esq, sup, dir e inf as coordenadas (em pontos) da célula designada pelos parâmetros coluna e linha, no list box definido por * e objeto. Se passar o parâmetro opcional *, indica que o parâmetro objeto é um nome de objeto (uma cadeia). Se não passar o parâmetro opcional *, indica que o objeto é um campo ou uma variável. Neste caso, passa uma referência de campo ou variável (campo ou variável de tipo de objeto unicamente) em vez de uma cadeia. Por coerência com o comando GET OBJECT RECT, a origem é a esquina superior esquerda do formulário que contém a célula. Além disso, as coordenadas devolvidas são teóricas; que levam em conta o estado de deslocamento do list box antes de que ocorra qualquer recorte. Como resultado, a célula pode ser não visível (ou só parcialmente) em suas coordenadas, e estas coordenadas podem estar fora dos limites do formulário (ou inclusive negativas). Para saber se a célula é visível (e que parte dela é visível) é necessário comparar as coordenadas devolvidas com as coordenadas do listbox, levando em conta as seguintes regras: Todas as células se cortam com as coordenadas de seu list box pai (como os devolvidos por GET OBJECT RECT no list box). Os Sub-objetos cabeçalho e rodapé de página se mostram sobre o conteúdo da coluna: quando as coordenadas de uma célula se cruzam as coordenadas das linhas de cabeçalho ou rodapé de página, a célula não é mostrada nesta interseção. Os elementos das colunas bloqueadas são mostradas sobre os elementos das colunas deslocáveis: quando as coordenadas de um elemento em uma coluna deslocável cruzam as coordenadas de uma coluna bloqueada, então que não é mostrada nesta interseção. Para mais informação, consulte a descrição do comando GET OBJECT RECT. Exemplo Você quer desenhar um retângulo vermelho arredor da célula selecionada de um listbox: OBJECT SET VISIBLE(*;"RedRect";False) //inicializar um retângulo vermelho //o rectângulo é definido em algum lugar já sob a forma LISTBOX GET CELL POSITION(*;"LB1";$col;$raw) LISTBOX GET CELL COORDINATES(*;"LB1";$col;$raw;$x1;$y1;$x2;$y2) OBJECT SET VISIBLE(*;"RedRect";True) OBJECT SET COORDINATES(*;"RedRect";$x1;$y1;$x2;$y2)

84 METHOD GET ATTRIBUTES METHOD GET ATTRIBUTES ( caminho ; atributos {; *} ) Parâmetro Tipo Descrição caminho Texto, Array caminho dos métodos texto atributos Objeto, Array Atributos para os métodos selecionados objeto * Operador Se passado = comando é aplicado para o banco de dados host (local) quando executado a partir de um componente (parametro ignorado fora desse contexto) Descrição Tema: Acesso objetos desenho O novo comando METHOD GET ATTRIBUTES retorna, em atributos, o valor atual de todos os atributos para os métodos especificados no parâmetro caminho. Este comando só funciona com métodos de projeto. Se você passar um caminho inválido, um erro é gerado. Em caminho, você pode passar seja um texto que contenha um caminho de método, ou um array de texto que contenha um array de caminhos. É necessário passar o mesmo tipo de parâmetro (variável ou array) em atributos, a fim de obter os atributos adequados. Em atributos, passe um objeto ou um array de objetos, dependendo do parâmetro passado em caminho. Todos os atributos para o método são retornados como propriedades do objeto com os valores de "True" / "False" para atributos booleanos e valores adicionais, se for necessário (por exemplo, "scope", "table" para a propriedade 4D Móvel ). Se o comando for executado a partir de um componente, aplica-se por padrão para os métodos de componentes. Se você passar o parâmetro *, acessa os métodos do banco de dados local. Nota: O comando existente METHOD Get attribute ainda recebe suporte, mas só pode retornar valores booleanos, não pode ser usado para atributos estendidos, como as propriedades 4D Mobile. Exemplo Se você quiser obter os atributos do método de projeto sendmail, pode escrever: C_OBJECT($att) METHOD GET ATTRIBUTES("sendMail";$att) Depois da execução, $att contém, por exemplo: { "invisible":false, "publishedweb":false, "publishedsoap":false, "publishedwsdl":false, "shared":false, "publishedsql":false, "executedonserver":false, "published4dmobile":{ "scope":"table", "table":"table_1" } }

85 METHOD SET ATTRIBUTES METHOD SET ATTRIBUTES ( caminho ; atributos {; *} ) Parâmetro Tipo Descrição caminho Texto, Array Método caminho (path) texto atributos Objeto, Array Atributos estabelecidos para os métodos selecionados objeto * Operador Se passado = comando aplica para o banco de dados anfitrião quando executado a partir de um componente (parâmetro ignorado fora desse contexto) Descrição Tema: Acesso objetos design O novo comando METHOD SET ATTRIBUTES permite que você defina os valores dos atributos para os métodos especificados no parâmetro caminho. Em caminho, você pode passar por exemplo um texto que contém um caminho de método, ou um array de texto que contém uma variedade de caminhos. Você deve passar o mesmo tipo de parâmetro (string ou array) em atributos a fim de estabelecer os atributos apropriados. Este comando só funciona com métodos de projeto. Se você passar um caminho inválido, é gerado um erro. Em atributos, se passa um objeto ou um array de objetos (dependendo do tipo de parâmetro passado em caminho) que contém todos os atributos que você deseja definir para os métodos. Os atributos de métodos devem ser definidos com os comandos OB SET ou OB SET ARRAY, com valores True ou False para atributos booleano, ou valores específicos para atributos estendidos (por exemplo, "scope", "table" para a propriedade 4D mobile). Somente os atributos que estão presentes no parâmetro atributos são atualizados nos atributos dos métodos. Se o comando for executado a partir de um componente, o padrão é aplicado aos métodos do componente. Se você passar o parâmetro *, ele acessa aos métodos do banco de dados local. Nota: o comando existente METHOD SET ATTRIBUTE ainda suportada, mas sendo que só pode lidar com valores booleanos, você não pode usar atributos estendidos tais como as propriedades 4D Mobile. Os atributos com suporte são: { "invisible" : false, // true se for visível "publishedweb" : false, // true se estiver disponível através das tags e URLs 4D "publishedsoap": false, // true se for oferecido como serviço web "publishedwsdl": false, // true se tiver sido publicado em WSDL "shared" : false, // true se for compartida pelos componentes e o banco local "publishedsql" : false, // true se estiver disponível através de SQL "executedonserver" : false, // true se for executado no servidor "published4dmobile" : { "scope": "table", // "none" ou "table" ou "currentrecord" ou "currentselection" "table": "atablename" // presente se o alcance for diferente de "none" } } Nota: para os atributos "published4dmobile", se o valor "table" não existir ou se o "scope" não for válido, estes atributos serão ignorados. Exemplo 1 Se você desejar modificar apenas um atributo: C_OBJECT($attributes) OB SET($attributes;"executedOnServer";True) METHOD SET ATTRIBUTES("aMethod";$attributes) //apenas o atributo "executedonserver" é modificado Exemplo 2 Se você deseja que um método não esteja disponível para 4D Mobile (o valor "none" deve ser passado para o atributo "scope"): C_OBJECT($attributes) C_OBJECT($fourDMobileAttribute) OB SET($fourDMobileAttribute;"scope";"none") OB SET($attributes;"published4DMobile";$fourDMobileAttribute)

86 METHOD SET ATTRIBUTES("aMethod";$attributes)

87 MOBILE Return selection MOBILE Return selection ( umatabela ) -> Resultado Parâmetro Tipo Descrição umatabela Tabela Tabela cuja seleção atual você quer retornar Resultado Objeto Seleção Wakanda-compliant Descrição O comando MOBILE Return selection devolve um objeto JSON que contém a seleção atual de atabela transformada em uma coleção de entidades Wakanda. Este comando está destinado para ser chamado no contexto de uma conexão 4D Mobile, geralmente entre a aplicação 4D e uma aplicação Wakanda (via REST). Quando se estabelece uma conexão 4D Mobile e foram configurados os direitos de acesso adequados, uma aplicação Wakanda pode executar um método projeto 4D que devolve um valor no parâmetro $0. O comando MOBILE Return selection lhe permite devolver em $0, a seleção atual de registros da tabela atabela, na forma de um objeto tipo coleção de entidades em formato JSON. Este objeto é compatível com as coleções de entidades de Wakanda que contém uma seleção de registros (ou seja, de entidades). Tenha em conta que os acessos 4D Mobile requerem configurações específicas em suas bases 4D: O servidor Web deve estar em marcha, A opção "Ativar os serviços 4D Mobile" se estiver selecionada nas Propriedades da base, Deve ter uma licença válida, As tabelas e campos utilizados devem ter selecionado a opção "Expose para 4D Mobile" (selecionada por padrão). Os métodos chamados devem ter a opção "Disponível via as chamadas 4D Mobile" ativa (não selecionada por padrão). Tenha em cuenta que pode passar toda tabela válida da base em atabela e não necessariamente a tabela com a que o método projeto foi associado em suas propriedades. Este parâmetro só se utiliza do lado Wakanda para definir os objetos para os que se pode chamar ao método. Para obter mais informação sobre a configuração 4D Mobile, consulte a documentação 4D Mobile. Exemplo Você deseja mostrar a seleção atual da tabela [Countries] em uma grade Wakanda, baseado em uma pesquisa. Escreva o seguinte método: //FindCountries project method //FindCountries( string ) -> object C_TEXT($1) C_OBJECT($0) $0:=MOBILE Return selection([countries]) a seleção devolvida pode ser utilizada diretamente em Wakanda como uma coleção válida. No modelo do servidor de Wakanda conectado a 4D via 4D Mobile, você criou uma página com uma grade associada a tabela 4D Countries. Por padrão, durante a execução, se mostram todas as entidades da tabela 4D:

88 O código do botão é: button1.click = function button1_click (event) <p> { sources.countries.findcountries("i", { /chamamos ao método 4D, "i" se passar em $1 onsuccess:function(coll){ //função de retro chamada (assíncrona), recebe $0 como parâmetro sources.countries.setentitycollection(coll.result); //substitui a coleção de entidades atual // com a que recebe no objeto coll.result } }); }; a Como resultado, a grade se atualiza:

89 OBJECT Get corner radius OBJECT Get corner radius ( {* ;} objeto ) -> Resultado Parâmetro Tipo Descrição * Operador Se especificado, objeto é um nome de objeto (cadeia) Se omitido, objeto é uma variável ou um campo objeto Objeto de formulário Nome do objeto (se especificado *) ou Variável ou campo (se omitido *) Resultado Inteiro longo Rádio atual para as esquinas arredondadas (em píxels) Descrição Tema: Objetos (Formulários) O novo comando OBJECT Get corner radius devolve o rádio da esquina arredondada atual do objeto retângulo arredondada cujo nome passou em objeto. Este valor pode ter sido definido a nível do formulário utilizando a lista de propriedades (ver Nova propriedade Arredondada de esquinas para retângulo arredondado), ou utilizando o novo comando OBJECT SET CORNER RADIUS para o processo atual. Se passar o parâmetro opcional *, indica que o parâmetro objeto é um nome de objeto (cadeia). Se não passa este parâmetro, indica que o parâmetro objeto é um campo ou uma variável. Neste caso, se passar uma referência de campo ou variável (campo objeto ou variável unicamente) em vez de uma cadeia. Nota: nas versões 4D atuais, já que este comando só se aplica aos retângulos arredondados (que são objetos estáticos), deve sempre passar o parâmetro * e utilizar a sintaxe de nome do objeto. O comando devolve o valor do rádio em pixels para as esquinas do objeto. Por padrão, o valor é de 5 pixels. Exemplo O seguinte código pode ser adicionado a um método button: C_LONGINT($radius) $radius:=object Get corner radius(*;"greenrect") //obtém o valor atual OBJECT SET CORNER RADIUS(*;"GreenRect";$radius+1) //aumenta o rádio // O valor máximo será gerenciado automaticamente: quando se alcance, button // não fará nada

90 OBJECT SET CORNER RADIUS OBJECT SET CORNER RADIUS ( {* ;} objeto ; radio ) Parâmetro Tipo Descrição * Operador Se especificado, objeto é um nome de objeto (cadeia) Se omitido, objeto é uma variável ou um campo objeto Objeto de formulário Nome do objeto (se especificado *) ou Variável ou campo (se omitido *) radio Inteiro longo Novo rádio para as esquinas arredondadas (em pixels) Descrição Tema: Objetos (Formulários) O novo comando OBJECT SET CORNER RADIUS lhe permite modificar o rádio de esquina arredondada para os objetos retângulo arredondados cujo nome passou em objeto. O novo rádio se define só para o processo; não é guardado no formulário. Se passar o parâmetro opcional *, indica que o parâmetro objeto é um nome de objeto (cadeia). Se não passar este parâmetro, indica que o parâmetro objeto é um campo ou uma variável. Neste caso, se passar uma referência de campo ou variável (campo objeto ou variável unicamente) em vez de uma cadeia. Nota: nas versões 4D atuais, como este comando só se aplica a retângulos arredondados (que são objetos estáticos), sempre deve passar o parâmetro * e utilizar a sintaxe nome do objeto. Em radio, passe o novo valor do rádio em pixels para as esquinas do objeto. Por padrão, o valor é de 5 pixels. Nota: este valor também pode ser definido a nível do formulário utilizando a lista de propriedades (ver Nova propriedade Arredondada de esquinas para retângulo arredondado). Exemplo Você têm os seguintes retângulos em seu formulário, chamados respectivamente "Rect1" e "Rect2": Pode executar o seguinte código para mudar seu rádio: OBJECT SET CORNER

91 OPEN DATABASE OPEN DATABASE ( rotaarquivo ) Parâmetro Tipo Descrição rotaarquivo String Nome ou rota de acesso completa do arquivo de base de dados a abrir (.4db,.4dc,.4dbase, ou.4dlink) Descrição Tema: Ambiente 4D O novo comando OPEN DATABASE fecha a base de dados 4D atual e abre sobre a marcha da base definida por rotaarquivo. Este comando é útil para realizar provas automáticas ou para voltar a abrir uma base de forma automática depois de uma compilação. No parâmetro rotaarquivo, passe o nome ou a rota de acesso completa da base a abrir. Pode utilizar os arquivos com uma das seguintes extensões:.4db (arquivo de estrutura interpretado),.4dc (arquivo de estrutura compilado),.4dbase (pacote OS X),.4dlink (arquivo de acesso direto). Se passar unicamente o nome de arquivo, deve ser colocado no mesmo nível que o arquivo de estrutura da base atual. Se a rota de acesso estabelece uma base de dados válida, 4D fecha a base em progresso e abre a base especificada. No modo mono usuário, o Método banco de dados On Exit da base fechada e o Método banco de dados On Startup da base aberta são chamados sucessivamente. Atenção: dado que este comando faz que a aplicação se feche antes da reabertura da base especificada, não se recomenda seu uso no Método banco de dados On Startup ou em um método chamado por este método base. O comando se executa de forma assíncrona: depois de sua chamada, 4D continua executando o resto do método. Logo, a aplicação se comporta como se o comando Sair do menu Arquivo estivesse selecionado: as caixas de diálogo de abertura se cancelam, todos os processos abertos têm 10 segundos para terminar antes de serem terminados, etc. Se o arquivo do banco de dados objetivo não for encontrado ou for inválido, se devolve um erro sistema estandarte do administrador de arquivos e 4D não faz nada. Este comando pode ser executado desde uma base de dados estandarte unicamente. É chamada desde uma aplicação fundida (autônoma ou servidor), se devolve o erro "Não pode ser aberta a base de dados". Exemplo OPEN DATABASE("C:\\databases\\Invoices\\Invoices.4db")

92 QUERY BY ATTRIBUTE QUERY BY ATTRIBUTE ( umatabela {; opconj}; campoobjeto ; caminhoatributo ; operadorpesq ; valor {; *} ) Parâmetro Tipo Descrição umatabela Tabela Tabela para a qual retorna a seleçao de registros, ou tabela padrao se omitido opconj Operador Operador de Conjunçao para usar para combinar múltiplas pesquisas campoobjeto Campo Campo Objeto para atributos de pesquisa caminhoatributo String Nome ou caminho do atributo operadorpesq Operador, String Operador de pesquisa (comparador) valor Texto, Número, Data, Hora Valor a comparar * Operador bandeira de continuar pesquisa Descrição Tema: Pesquisas QUERY BY ATTRIBUTE localiza os registros que correspondam com a string de consulta definida utilizando os parâmetros campoobjeto, caminhoatributo, oppesq e valor e retorna uma seleção de registros para a tabela. Nota: Para mais informações sobre os campos Objeto (novos em 4D v15), por favor, veja Object Field data type. QUERY BY ATTRIBUTE altera a seleção atual de tabela para o processo atual e faz o primeiro registro da nova seleção do registro atual. Se o parâmetro tabela for omitido, o comando aplica-se a tabela como padrão. Se você não tiver definido qualquer tabela padrão, ocorre um erro. O parâmetro opcional opconj é usado para combinar várias chamadas a QUERY BY ATTRIBUTE no caso de várias pesquisas. Os operadores de conjunção disponíveis são o mesmo que o comando QUERY: Conjunção Símbolo a utilizar com QUERY BY ATTRIBUTE AND & OR Except # O parâmetro opconj não é usado para a primeira chamada para QUERY BY ATTRIBUTE de uma consulta múltipla, ou se a pesquisa for uma busca simples. Se você omitir esse parâmetro dentro de uma pesquisa múltipla, o operador AND (&) é usado como padrão. Em campoobjeto, passe o campo objeto cujos atributos que você deseja pesquisar. Se pertence a uma tabela Um relacionada à tabela com uma relação automática ou manual, o campoobjeto pode pertencer a uma outra tabela. Em caminhoatributo, passe o nome ou o caminho do atributo cujos valores deseja comparar. Pode passar um único atributo, por exemplo, "age": nesse caso todos os atributos com o nome serão comparados no registro. Você pode também passar um caminho, por exemplo "children.girls.age", neste caso todos os atributos com este nome serão comparados no registro. Pode também passar um caminho, por exemplo "children.girls.age", em cujo caso só os atributos coincidentes serão comparados no registro. Se um atributo "x" for um array, QUERY BY ATTRIBUTE buscará registros que contenham um atributo "x" no qual ao menos um elemento coincida com os critérios. Para buscar em atributos array, é necessário indicar ao comando QUERY BY ATTRIBUTE que o atributo "x" é um array adicionando ".[]" a seu nome em caminhoatributo (ver exemplo 3). Notas: Lembre que os nomes de atributos diferenciam entre maiusculas e minúsculas: pode ter diferentes nomes de atributos "MyAtt" e "myatt" no mesmo registro. Os nomes de atributos são cortados para eliminar espaços adicionais. Por exemplo, "meu primeiro atributo.meu segundo atributo" se interpreta como "meu primeiro atributo.meu segundo atributo". O parâmetro pesqop, é o operador de comparação que é aplicado entre campoobjeto e valor. Pode passar um dos símbolos mostrados aqui: Here is the structure of a query by attribute: QUERY BY ATTRIBUTE([Table] ;[Table]ObjectField ;"attribute1.attribute2";=;value) O parâmetro opbusq é o operador de comparação que se aplica entre campoobjeto e valor. Pode passar um dos símbolos que se mostran aqui:

93 Comparação Símbolo a utilizar com QUERY BY ATTRIBUTE Igual a = Diferente de # Menor que < Maior que > Menor ou igual a <= Maior ou igual a >= Nota: Você pode especificar o operador de comparação como uma expressão de texto em vez de um símbolo. Consulte a descrição do comando QUERY para mais informações. valor é o dado contra o qual irá comparar caminhoatributo. O valor pode ser qualquer expressão do mesmo tipo que caminhoatributo. O valor é avaliado uma vez, no início da busca. O valor não é avaliado para cada registro. Para procurar uma string dentro de uma string (uma procura "contém"), use o sinal de arroba em valor para isolar a string a pesquisar, como mostrado neste exemplo: Note-se que, neste caso, a busca apenas parcialmente se benefícia do índice (compacidade de armazenamento de dados). Esta é a estrutura de uma consulta por atributos: QUERY BY ATTRIBUTE([Table] ;[Table]ObjectField ;"attribute1.attribute2";=;value) Nota: Um critério implícito para todos os operadores (exceto #) é que o campo Objeto contém um atributo. Entretanto, para o operador #, pode ser indefinido (ver abaixo). Usar o operator # Com campos objeto, o operador "#" devem ser vistos como selecionando registros onde o campo "no attribute" contém o valor pesquisado. Neste contexto, 4D considera-o de uma maneira similar: campos onde o valor do atributo é diferente do valor pesquisado, campos onde o atributo não está presente (ou contém um valor Null). Por exemplo, a seguinte pesquisa retorna registros para pessoas que têm um cachorro cujo nome não é Rex, assim como registros para pessoas que não têm um cachorro, ou que têm um cachorro sem nome: QUERY BY ATTRIBUTE([People];[People]Animals;"dog.name";#;"Rex") Outro exemplo: essa pesquisa retorna todos os registros para os quais [Table]ObjectField contém um objeto o qual possui um atributo attribute1 que é em si mesmo um objeto contendo um atributo attribute2 cujo valor não é value, assim como registros onde o campo objeto não contém attribute1 ou attribute2): QUERY BY ATTRIBUTE([Table] ;[Table]ObjectField ;"attribute1.attribute2";#;value) Este princípio também se aplica aos atributos de array. Por exemplo: QUERY BY ATTRIBUTE([People];[People]OB_Field;"locations[].city";#;"paris") Esta pesquisa retornará registros para pessoas que não tem um endereço em Paris. Para especificamente obter registros onde o atributo não é definido, pode usar um objeto vazio (ver exemplo 2). Construir múltiplas pesquisas Aqui estão as regras a serem seguidas para a construção de várias pesquisas por atributo: A primeira linha não deve conter uma conjunção. Cada argumento de consulta sucessivo pode começar com uma conjunção. Se você omiti-lo, o operador AND (&) é usado por padrão. Todas as linhas, exceto a última, deve usar o parâmetro *. QUERY BY ATTRIBUTE pode ser combinado com os comandos QUERY (ver exemplo). Para realizar a pesquisar, não especifique o parâmetro * no último comando QUERY BY ATTRIBUTE. Alternativamente, você pode executar o comando QUERY sem parâmetros diferentes à da tabela. Nota: Cada tabela mantém sua própria construção de pesquisa atual. Isto significa que você pode criar várias consultas simultaneamente, um para cada tabela. Não importa a forma em que a pesquisa foi definida: Se a operação de busca vai levar algum tempo para ser executada, 4D mostra automaticamente uma mensagem contendo um termômetro de progresso. Estas mensagens podem ser ligados e desligadas usando os comandos MESSAGES ON y MESSAGES OFF. Se um termômetro de progresso for exibido, o usuário pode clicar no botão Parar para parar a pesquisa. Se a consulta for concluída, OK é definido como 1. Caso contrário, se a consulta for interrompida, OK é definido como 0 (zero).

94 Se nenhum campo objeto indexado não for indicado, a pesquisa é otimizada sempre que for possível (campos indexados são procurados primeiro), resultando em uma busca que leva o mínimo de tempo possível. Valores de Datas nos objetos As datas são armazenadas nos objectos com base nos parâmetros do banco de dados e; por padrão, se considera o fuso horário (veja selector JSON use local time no comando SET DATABASE PARAMETER).! !"></span></span><span id="result_box" lang="pt"><span title="[#codejs]! !">[#codejs]! ! -> " T23:00:00.000Z" Essa configuração também é considerada durante a busca, assim você não precisa se preocupar com isso, se você usar sempre a sua base no mesmo lugar e se os parâmetros são os mesmos em todos os computadores que acessam os dados. Neste caso, a seguinte busca retorna corretamente os registros cujo atributo é Birthday igual a! ! (Salvo como" T23:00:00.00Z"): QUERY BY ATTRIBUTE([Persons];[Persons]OB_Info;"Birthday";=;! !) Se você não quiser usar o parâmetro GMT, você pode modificar esses parâmetros com a seguinte declaração: SET DATABASE PARAMETER(JSON use local time;0) Lembnre que o escopo deste parâmetro é limitado ao process.. Se você executar este comando, 01 de outubro de 1965 se armazenará como " T00: 00: Z", mas você deve definir o mesmo parâmetro antes de iniciar suas pesquisas: SET DATABASE PARAMETER(JSON use local time;0) QUERY BY ATTRIBUTE([Persons];[Persons]OB_Info;"Birthday";=;! !) Exemplo 1 Neste exemplo, o atributo de "age" (idade) é uma string ou um inteiro e queremos encontrar pessoas cujas idades estão entre 20 e 29. As primeiras duas linhas procuram o atributo como um número inteiro (> = 20 e <30) e as última consultam o campo como uma string (começando com "2", mas é diferente de "2".) QUERY BY ATTRIBUTE([Persons];[Persons]OB_Info;"age";>=;20;*) QUERY BY ATTRIBUTE([Persons]; & ;[Persons]OB_Info;"age";<;30;*) QUERY BY ATTRIBUTE([Persons]; QUERY BY ATTRIBUTE([Persons]; & ;[Persons]OB_Info;"age";#;"2") //sem * para lançar a execução Exemplo 2 O comando QUERY BY ATTRIBUTE pode ser usado para encontrar registros nos quais alguns atributos são definidos (ou não). Para isso, deve usar um objeto vazio. //Pesquisar os registros onde o correio eletrônico é definida no campo objeto C_OBJECT($undefined) QUERY BY ATTRIBUTE([Persons];[Persons]Info;" ";#;$undefined) //Pesquisar os registros onde o CEP- código postal não está definido no campo objeto C_OBJECT($undefined) QUERY BY ATTRIBUTE([Persons];[Persons]Info;"zip code";=;$undefined) Exemplo 3 Você quer encontrar um campo que contém os atributos do array. Com os dois registros a seguir: { "name":"martin", "locations" : [ { "kind":"office", "city":"paris" } ] }, { "name":"smith", "locations" : [ { "kind":"home", "city":"lyon" }, { "kind":"office", "city":"paris" } ] }... QUERY BY ATTRIBUTE encontra pessoas com uma localização "paris" usando este comando: //indica o atributo array com a sintaxe ".[]"

95 QUERY BY ATTRIBUTE([People];[People]OB_Field;"locations.[].city";=;"paris") //Seleciona "martin"e "smith" Nota: Se você tiver definido diversos critérios no mesmo atributo array, os critérios coincidentes não se aplicam necessariamente ao mesmo elemento do array. No exemplo a seguir, a pesquisa retornará "smith", porque tem um elemento "locations" cujo "kind" (tipo) é "home" e um elemento "locations", cujas "city" é "paris" Mesmo se esse não for o mesmo elemento: QUERY BY ATTRIBUTE([People];[People]OB_Field;"locations.[].kind";=;"home";*) QUERY BY ATTRIBUTE([People]; & ;[People]OB_Field;"locations.[].city";=;"paris") //Selecciona "smith"

96 WEB Is server running WEB Is server running -> Resultado Parâmetro Tipo Descrição Resultado Booleano True se o servidor Web se está executando, caso contrário False Descrição Originalmente introduzido em 4D v14 R2 O novo comando WEB Is server running (tema "Web Server") devolve True se o servidor web integrado 4D está executando e False se o servidor web está desligado. Este comando oferece o estado de funcionamento do servidor Web no qual se executa: Contexto de execução Devolve o estado de Aplicação independente 4D servidor Web 4D local 4D Server servidor web de 4D Server Modo remoto 4D (processo local) servidor web 4D local Modo remoto 4D (procedimento armazenado 4D Server) servidor web 4D Server Modo remoto 4D (outro procedimento armazenado 4D remoto) servidor web 4D remoto Exemplo Você quer verificar que o servidor web se está executando: If(WEB Is server running)... //fazer as ações apropriadas End if

97 4D Server 4D Server, versão 64 bits para OS X (pré liminar) Página Monitor tempo real (MTR) Nova capa rede ServerNet

98 4D Server, versão 64 bits para OS X (pré liminar) Com 4D v15, 4D oferece a versão final do 4D Server 64-bit OS X (vários previews foram publicados durante o programa R- release 4D v14 ). Graças a este novo produto, as suas aplicações 4D Server podem agora aproveitar ao máximo o poder de máquinas da Apple de 64 bits. Para obter uma descrição das características específicas de 4D Server 64-bit OS X, consulte Utilizar 4D Server 64 bits para OSX (pré versão) no manual de referência 4D Server. Nota de implementação: A parte de aplicação da versão 64;bits de 4D Server para OS X é final, mas a camada de network integrada ServerNet ainda precisa de mais otimizações e é oferecida atualmente como uma preview. Por isso, não é recomendado que se use a versão 4D Server 64-bit para implantar em produção no OS X.". Esta tabela mostra o estado atual das funcionalidades que ainda não estavam disponíveis na versão preliminar inicial da versão 4D Server 64 bits para OS X, e que foram integrados progressivamente. Funcionalidade/Tecnologia Estado atual Gráficos gerados no servidor Disponível desde v14 R4 Cliente HTTP (Gestão de certificados clientes) Disponível desde v14 R4 4D Internet Commands (plug-in) Disponível desde v14 R4 4D Pack (plug-in) Disponível desde v14 R5 4D ODBC Pro (plug-in) Disponível em v15 4D for OCI (plug-in) Disponível em v15 (ver 4D for OCI) Comunicação porto serial Não Disponível Caixas de diálogo de Importar/Exportar Não Disponível Editor de etiquetas Não Disponível

99 Página Monitor tempo real (MTR) Originalmente introduzido em 4D v14 R3 A página Monitor tempo real (MTR) da janela de administração de 4D Server melhorou para entregar informação mais detalhada para a solução de problemas e otimização: novas funcionalidades estão disponíveis (instantâneas, modo avançado...) agora é mostrada informação adicional para cada operação Nota: o comando GET ACTIVITY SNAPSHOT também foi estendido para devolver informação adicional. Modo Avançado A página RTM agora pode mostrar informação adicional, se for necessário, para cada operação listada. Para acessar ao modo avançado para uma operação, pressione a tecla Maiús e selecione a operação. Toda a informação disponível, é mostrada no painel Detalhes, sem nenhum tipo de filtro (como os devolvidos pelo comando GET ACTIVITY SNAPSHOT). A informação disponível depende da operação selecionada. Aqui está um exemplo da informação que é mostrada no modo estandarte: Em modo avançado (Maiús+clique na operação), é mostrada informação adicional:

100 Botão Instantâneo O novo botão Instantâneo lhe permite copiar na prancheta todas as operações que aparecem no painel de MTR, assim como seus detalhes relacionados (informação de processos e sub-operações): Mostrar operações por pelo menos 5 segundos Se selecionar a nova opção Mostrar operações por pelo menos 5 segundos, todas as operações listadas serão mostradas na página por pelo menos durante cinco segundos, inclusive depois de que foi finalizada a execução da operação: As operações retidas aparecem em cinza na lista de operações. Esta funcionalidade é útil quando se deseja obter informação sobre as operações cuja execução é muito rápida. Informação adicional Nova informação está disponível quando se seleciona uma operação na página, em particular: Criado em: indica se a operação resulta de uma ação de um cliente (Criado em cliente) ou se foi iniciada de forma explícita no servidor através de um procedimento armazenado ou por meio da opção Executar em servidor (Criado em servidor). Plano de pesquisa: sempre é mostrada para as operações de pesquisa. outra informação relacionada com a tabela, o campo, o processo ou o cliente já está disponível, dependendo do tipo de operação. Tenha em conta que sempre pode se obter informação avançada pressionando a tecla Maiús enquanto seleciona uma operação. Mensagens de progresso eliminados Como a página de RTM agora reúne toda a informação sobre as operações em curso, por padrão as janelas de mensagens de progresso não se mostram mais na máquina servidor. Se quiser mostrar janelas de progresso, deve chamar o comando MESSAGES ON no servidor.

101 Nova capa rede ServerNet Originalmente introduzido em 4D v14 R5 As aplicações 4D v15 contém uma nova capa rede, chamada ServerNet, para manipular as comunicações entre 4D Server e as máquinas 4D remotas (clientes). ServerNet se baseia em uma API moderna e robusta. É fácil de manter e facilitar a implementação das últimas tecnologias rede ao tempo que oferece um alto nível de rendimento. Nota de implementação: A capa de rede ServerNet é oferecida como um lançamento "preview" em 4D v15. A antiga capa de rede "legacy" ainda é suportada de forma a garantir compatibilidade com bancos de dados existentes. ServerNet se utiliza automaticamente nas novas bases. As novas opções lhe permitem ativar/desativar ServerNet. Para ter certeza de que suas aplicações se beneficiarão das futuras evoluções de rede, lhe recomendamos que ative ServerNet o mais rápido possível em todas suas bases. Ativar ou desativar a capa rede anterior Uma nova opção de compatibilidade lhe permite ativar ou desativar a capa rede legacy em seu 4D Server em qualquer momento. Pode utilizar: a opção Utilizar a capa de rede legacy na caixa de diálogo Propriedades da base (ver mais abaixo), ou a constante Use legacy network layer em SET DATABASE PARAMETER (este ponto se trata na seção Get database parameter e SET DATABASE PARAMETER) A nova opção de compatibilidade se encontra na página Compatibilidade: Nota: esta opção é ignorada em 4D Server versão 64 bits para OS X; só ServerNet pode ser utilizado nesta plataforma. Por padrão, esta opção está: desselecionada para as novas bases criadas com 4D v15 (o 4D v14 R5) e posteriores (que utilizam a nova capa ServerNet), selecionada para as bases de dados existentes convertidas (utilizam a capa de rede legacy). Pode ativar ou desativar a opção de ser necessário, por exemplo, durante a fase de migração das aplicações clientes (ver mais abaixo). Tenha em conta que em caso de uma modificação, é necessário reiniciar a aplicação para que a mudança seja levada em conta. Todas as aplicações cliente que foram conectadas também devem ser reiniciadas para poder conectar com a nova capa (a versão mínima do cliente para o uso da capa ServerNet é 4D v14 R4, ver mais abaixo). Migração dos clientes 4D fusionados Quando ativa a capa ServerNet em sua aplicação servidor, só as aplicações clientes 4D compatíveis poderão se conectar: Os clientes em versão 4D v15 e superior (ou 4D v14 R4 e superior) podem se conectar sem modificação. Os clientes em versões anteriores (v14.x e outros releases v14 'R') primeiro devem se atualizar para poder se conectar ao servidor. Se sua aplicação trabalha com clientes fusionados em versões anteriores a v14 R4, e deseja utilizar o mecanismo automático de 4D Server para distribuir suas aplicações clientes atualizadas através da rede, é necessário estabelecer uma estratégia de migração. Esta estratégia deve ser baseada nos seguintes princípios: Os clientes não compatíveis só podem se conectar a um 4D Server que utilize a capa rede legacy. Os clientes atualizados podem adaptar seu protocolo de forma dinâmica para que possam se conectar a 4D Server v15 e seguintes, independentemente da capa rede que o servidor esteja utilizando.

102 Sua estratégia de migração deve seguir estes passos: 1. Criar aplicações cliente atualizadas com 4D v15 ou superior. 2. Execute 4D Server v15 com o parâmetro "Utilizar capa rede legacy" ativo. Esta configuração permite que todos os clientes se conectem. Nota: tenha em conta que 4D Server v15 versão de 64 bits para OS X não admite esta opção. 3. Espere um período de tempo determinado até que cada cliente tenha conectado e baixado a nova versão. Isto pode durar um dia, uma semana ou inclusive mais tempo. Durante este período de transição, tanto os clientes antigos e os novos podem se conectar ao servidor de rede legacy. 4. Uma vez que todos os clientes forem atualizados, pode desativar a capa rede legacy e finalmente mudar a ServerNet em 4D Server. Esta estratégia se representa no seguinte diagrama: Registrar as petições dos clientes Durante o processo de migração, lhe recomendamos ativar o arquivo de diagnóstico de 4D. Quando se ativa, 4D Server registra cada solicitação de atualização de clientes neste arquivo, o que lhe permite controlar o processo. Este registro não se ativa por padrão: necessita chamar ao comando SET DATABASE PARAMETER com a constante Diagnostic log recording e o valor 1. Para cada solicitação de atualização, é registrada a seguinte informação: IP do cliente versão do cliente evento "Update client" Controlar o arquivo de diagnóstico também é útil depois de que tenha mudado o servidor a capa rede ServerNet, para ter certeza de que todos os clientes se atualizem corretamente. Se um cliente não compatível tentar se conectar, o servidor registra a entrada seguinte: IP do cliente versão do cliente evento "Fail to connect" Neste caso, pode decidir, por exemplo, atualizar ao cliente de forma manual.

103 4D SQL Server Novo campo KEYWORD na tabela de sistema _USER_INDEXES ALTER DATABASE DISABLE TRIGGERS Desativar triggers com ALTER TABLE Modificar a ID da porta por programação

104 Novo campo KEYWORD na tabela de sistema _USER_INDEXES Originalmente introduzido em 4D v14 R2 Um novo campo booleano KEYWORD já está disponível na tabela de sistema _USER_INDEXES. Isto lhe permite diferenciar entre os índices regulares e baseados em palavras chaves. _USER_INDEXES Descreve os índices de usuário da base de dados KEYWORD BOOLEAN True se o índice está baseado em palavras chaves, caso contrário, false Os índices de palavras chaves podem ser de tipo cluster ou BTree.

105 ALTER DATABASE DISABLE TRIGGERS ALTER DATABASE {ENABLE DISABLE} {INDEXES CONSTRAINTS TRIGGERS} Descrição Originalmente introduzido em 4D v14 R3 O comando ALTER DATABASE agora lhe permite desativar ou ativar os triggers para todas as tabelas da base atual durante a sessão atual (ou seja, para todos os usuários e os processos até que se reinicie a base). Se deseja manipular os triggers a nível de tabela, é necessário utilizar ALTER TABLE (ver Desativar triggers com ALTER TABLE). Exemplo Exemplo de uma importação com desativação temporal de todas as opções SQL: Begin SQL ALTER DATABASE DISABLE INDEXES; ALTER DATABASE DISABLE CONSTRAINTS; ALTER DATABASE DISABLE TRIGGERS; End SQL SQL EXECUTE SCRIPT("C:\\Exported_data\\Export.sql";SQL On error continue) Begin SQL ALTER DATABASE ENABLE INDEXES; ALTER DATABASE ENABLE CONSTRAINTS; ALTER DATABASE ENABLE TRIGGERS; End SQL

106 Desativar triggers com ALTER TABLE ALTER TABLE sql_name {ADD column_definition [PRIMARY KEY] [TRAILING] DROP sql_name ADD primary_key_definition DROP PRIMARY KEY ADD foreign_key_definition DROP CONSTRAINT sql_name [{ENABLE DISABLE} REPLICATE] [{ENABLE DISABLE} LOG] [{ENABLE DISABLE} AUTO_INCREMENT] [{ENABLE DISABLE} AUTO_GENERATE] [{ENABLE DISABLE} TRIGGERS] SET SCHEMA sql_name} Descrição Originalmente introduzido em 4D v14 R3 O comando ALTER TABLE agora lhe permite desativar ou ativar os triggers para a tabela nom_sql durante a sessão atual (ou seja, para todos os usuários e os processos até que se reinicie o banco). Se deseja controlar os triggers a nível global da base, é necessário utilizar ALTER DATABASE (ver ALTER DATABASE DISABLE TRIGGERS).

107 Modificar a ID da porta por programação Originalmente introduzido em 4D v14 R3 Agora você pode obter, definir ou modificar o ID da porta TCP do servidor SQL de 4D por programação com um novo parâmetro da base. Para obter mais informação, por favor consulte a seção Get database parameter e SET DATABASE PARAMETER.

108 Optimizations Cache Web 4D ativada como padrão Otimizações SQL Select Segurança de Network

109 Cache Web 4D ativada como padrão Originalmente introduzido em 4D v14 R5 A cachê Web de 4D para os recursos estáticos está ativado por padrão nas novas bases. Na caixa de diálogo Propriedades da base, a opção Utilizar o cachê Web de 4D agora é selecionado automaticamente para as novas bancos de dados: Para bancos de dados convertidos de versões anteriores, o valor desta opção é deixada intacta.

110 Otimizações SQL Select SQL Select distinct statements Originalmente introduzido em 4D v14 R4 A partir de 4D v14 R4, as operações SELECT DISTINCT executadas através de instruções SQL foram otimizadas quando se aplicam a uma só tabela e a uma só coluna. Tipicamente, em 4D v14 R4 e versões posteriores, o seguinte código será executado mais rápido: Begin SQL SELECT DISTINCT Names FROM Employees INTO :$Emp; End SQL SQL Select Group by and Order by statements Originalmente introduzido em 4D v14 R5 As sentenças SQL SELECT com cláusulas GROUP BY e ORDER BY foram otimizadas em diferentes configurações: SELECT FROM GROUP BY SELECT FROM ORDER BY aplicado a uma só tabela, SELECT FROM GROUP BY ou SELECT FROM ORDER BY aplicado a várias tabelas e o uso de combinações internas. As otimizações concernem unicamente as referências de colunas simples (não expressões). Tipicamente, em 4D v14 R5 e versões posteriores, os seguintes casos se executarão mais rápido: Exemplos Order by Begin SQL DROP TABLE IF EXISTS T1; DROP TABLE IF EXISTS T2; CREATE TABLE T1 (C1 INT); CREATE TABLE T2 (C2 INT); INSERT INTO T1(C1) VALUES (1); INSERT INTO T1(C1) VALUES (2); INSERT INTO T1(C1) VALUES (3); INSERT INTO T2(C2) VALUES (2); INSERT INTO T2(C2) VALUES (3); End SQL ARRAY LONGINT($result;0) ARRAY LONGINT($result1;0) ARRAY LONGINT($result2;0) // Um exemplo simples ORDER BY com T1 e T2. // $result conterá [2, 3]. Begin SQL SELECT C1 FROM T1, T2 WHERE C1=C2 ORDER BY C1 INTO :$result End SQL // ORDER BY também funciona se utilizam várias colunas. // $result1 e $result2 irão conter cada um [2, 3]. Begin SQL SELECT C1, C2 FROM T1, T2 WHERE C1=C2 ORDER BY C1, C2 INTO :$result1, :$result2

111 End SQL // Só as referências de colunas simples se otimizam. Se uma expressão // como é mostrada a continuação (C1 + 1) se utilizar para a seleção, logo a execução não // será mais rápida. $result contém [3, 4]. Begin SQL SELECT C1 + 1 FROM T1, T2 WHERE C1=C2 ORDER BY C1 INTO :$result End SQL // Pode utilizar um índice de referência na seleção. // Como se estabeleceu antes, a seleção só contém referências de colunas simples para uma execução mais rápida. // $result conterá [ 2, 3 ]. Begin SQL SELECT C1 FROM T1, T2 WHERE C1=C2 ORDER BY 1 INTO :$result End SQL Exemplo Group by Begin SQL DROP TABLE IF EXISTS T1; DROP TABLE IF EXISTS T2; CREATE TABLE T1 (C1 INT, C3 INT); CREATE TABLE T2 (C2 INT); INSERT INTO T1(C1, C3) VALUES (3, 1); INSERT INTO T1(C1, C3) VALUES (1, 1); INSERT INTO T1(C1, C3) VALUES (2, 1); INSERT INTO T1(C1, C3) VALUES (3, 1); INSERT INTO T1(C1, C3) VALUES (2, 1); INSERT INTO T1(C1, C3) VALUES (3, 1); INSERT INTO T2(C2) VALUES (2); INSERT INTO T2(C2) VALUES (3); End SQL ARRAY LONGINT($result;0) ARRAY LONGINT($result1;0) ARRAY LONGINT($result2;0) //Exemplo simples de GROUP BY com T1 e T2 juntos. //$result conterá [2, 3]. Note que não há garantia de que os grupos se devolvam.. //em ordem ascendente, ou seja, $result pode ser [3, 2]. Begin SQL SELECT C1 FROM T1, T2 WHERE C1=C2 GROUP BY C1 INTO :$result End SQL // Este é um exemplo simples de uma petição agregada. // Como C3 sempre é 1, para cada grupo (valor único de C1), // SUM(C3) é o número de repetições. // $result1 conterá [2, 3]. // $result2 também conterá [2, 3]. Begin SQL SELECT C1, SUM(C3) FROM T1, T2 WHERE C1=C2 GROUP BY C1 INTO :$result1, :$result2

112 End SQL

113 Segurança de Network SSL v2 e v3 desativado Originalmente introduzido em 4D v14 R4 A configuração por padrão para as comunicações em rede evoluiu com o propósito de aumentar os níveis de segurança: os protocolos SSL v2 e SSL v3 foram desativados permanentemente, por seu potencial vulnerabilidade. Só TLS v1 é aceito agora por padrão. Estas modificações se aplicam a todas as comunicações seguras em 4D, incluindo: Conexões ao servidor HTTP Conexões ao servidor SQL Conexões cliente/servidor Conexões cliente HTTP Como resultado, é possível que tenha que atualizar seus requisitos de aplicação em relação com as seguintes conexões: Os navegadores ou clientes HTTP que não aceitam TLS, tais como IE6 ou mais antigos, já não podem se conectar a um servidor/serviço web 4D utilizando o protocolo seguro (porta 443). Os comandos HTTP Get ou HTTP Request já não pode ser conectado em modo seguro aos servidores que não suportam TLS. Aumentada a proteção de Certificado de segurança Originalmente introduzido em 4D v14 R5 As funções de segurança de rede foram otimizadas para que possa reforçar a proteção de suas aplicações 4D: A lista de cifrado débil foi eliminado, A longitude da chave de certificado 4D por padrão foi aumentada a 2048 bits, Agora pode utilizar suas próprias chaves de cifrado para as comunicações seguras. Estas modificações se referem as seguintes conexões seguras: Cliente/servidor Servidor SQL Cliente HTTP

114 4D Write Pro Originalmente introduzido em 4D v14 R5 4D Write Pro é o sucessor do plug-in 4D Write. 4D Write Pro representa um desenvolvimento importante para 4D, pelo que se está aproveitando o programa de versões R para entregar ele progressivamente. 4D v14 R5 inclui o primeiro passo com 4D Write Pro como uma pré versão técnica. Esta etapa inicial se centra na compatibilidade dos documentos existentes e dos s com formato HTML. Para cada passo posterior, o conjunto das funcionalidades e dos comandos da linguagem serão estendidos. Lembre que: 4D Write Pro está utilizando a mesma licença que 4D Write, 4D Write Pro já não é um plug-in está completamente integrado em 4D, pelo que é fácil de gerenciar e implementar. Sobre a documentação de 4D Write Pro As funcionalidades de 4D Write, incluindo os novos comandos da linguagem, estão totalmente documentadas no novo manual Referência 4D Write Pro. Sobre esta pré versão técnica A seguinte tabela mostra o estado atual das principais funcionalidades: Funcionalidade Estado atual (Pré versão técnica R5) Comentário Criar uma área 4D Write Pro em um formulário Disponível Criar um novo documento 4D Write Pro vazio Disponível WP New Importar um documento 4D Write em um objeto 4D Write Pro Disponível WP Import document ou WP New Exportar um objeto 4D Write Pro a um documento WP EXPORT DOCUMENT e WP Disponível ou variável EXPORT VARIABLE Editar um documento com a ajuda de um menu emergente contextual Disponível Inserir expressões (campos de base, resultados Uso do comando ST INSERT Disponível do método 4Ds EXPRESSION Editar o conteúdo de um documento por programação Parcialmente disponível Uso dos comandos 4D "ST" e "OBJECT" Imprimir um documento 4D Write Pro Não disponível Gerenciar a paginação Não disponível Acessar as propriedades do documento por programação Não disponível Armazenar um documento 4D Write Pro em um campo da base Não disponível Interface 4D Write Pro Estado atual de comandos 4D Write Pro Importar documentos 4D Write

115 Interface 4D Write Pro Se a propriedade Menu contextual está selecionada por uma área 4D Write Pro (ver Criar uma área 4D Write Pro), um menu contextual completo estará disponível para os usuários no modo Aplicação: Este menu oferece acesso a todas as funcionalidades 4D Write Pro disponíveis atualmente (na versão final, todas as funcionalidades e propriedades também estarão disponíveis por programação). Dado que nem a organização do menu contextual nem seu conteúdo são definitivos neste momento, não vamos a descrever as funcionalidades individuais nesta documentação. Convidamos você a navegar através dos diferentes submenus para ter uma ideia do que 4D Write Pro é capaz de fazer. Nota: Na versão atual, os documentos 4D Write mostrados por padrão no modo vista página Web. Neste modo, o texto se ajusta automaticamente e a barra de rolagem horizontal (se definida) é desativada. Para usar uma barra de rolagem horizontal e ter um texto de largura fixa (definido na propriedade "Tamanho da página"), você deve alterar o Modo de exibição de página Normal.

116 Estado atual de comandos 4D Write Pro Vários comandos novos no tema "4D Write Pro" para gerenciar áreas 4D Write Pro. Estes comandos estão documentados no capítulo Linguagem 4D Write Pro do manual de referência de 4D Write Pro. A seguinte tabela mostra o estado de implementação dos comandos 4D Write Pro na vista prévia técnica de 4D v14 R5: Nome do Estado atual (vista prévia técnica R5) comando WP EXPORT Só dois formatos de exportação estão disponíveis atualmente VARIABLE WP EXPORT Se não passar o parâmetro formato, deve utilizar a extensão do arquivo ".htm" ou ".html"; só um formato de DOCUMENT exportação está disponível atualmente WP Import Para obter uma lista detalhada das funcionalidades 4D Write que atualmente são suportadas em objetos document 4D Write Pro, consulte a seção Importar documentos 4D Write. WP New Para obter uma lista detalhada das funcionalidades 4D Write que atualmente estão suportadas em objetos 4D Write Pro, consulte a seção Importar documentos 4D Write. Nota: tenha em conta que só os comandos dos temas "Objetos (formulários)" e "Texto com estilo" podem ser utilizados com áreas 4D Write Pro (ver as seções Utilizar os comandos do tema Objeto (Formulários) e Utilizar os comanos do tema Texto com estilo).

117 Importar documentos 4D Write Uma das principais funcionalidades do novo 4D Write Pro é a capacidade de importar e converter documentos 4D Write Pro existentes. Isto lhe permitirá migrar as aplicações que se baseiam no plug-in 4D Write. Nota de compatibilidade: só os documentos 4D Write da última geração ("4D Write v7") são suportados. Como importar um documento 4D Write Os objetos 4D Write Pro oferecem duas maneiras de importar documentos 4D Write: Para os arquivos 4D Write Pro armazenados no disco, se utiliza o comando WP Import document, Para as áreas 4D Write armazenadas em campos BLOB, se utiliza o comando WP New. Para mais informação, consulte a descrição destes comandos. Que propriedades se conservam de 4D Write? Para facilitar a migração desde o plug-in 4D Write a 4D Write Pro, queremos suportar tantas funcionalidades 4D Write como seja possível em objetos 4D Write Pro. Este parágrafo mostra as propriedades do plug-in 4D Write que se recuperam em uma área 4D Write Pro depois de uma importação com os comandos WP Import document ou WP New. Tenha em conta no entanto, que há algumas diferenças, que não se consideram como bugs. Isto deve ser, por exemplo, a fonte pré determinada utilizada em 4D Write Pro para vinhetas, ou pequenas conversões no tipo Sublinhado. Informação do documento Plug-in 4D Write Criação data e hora Modificação data e hora Bloqueado Título Tema Autor Empresa Notas Parâmetros de visualização do documento Plug-in 4D Write Vista modo página Vista regras Vista marcos Vista cabeçalho Vista rodapé Vista cabeçalho de primeira página Vista rodapé de primeira página Vista imagens Vista HScrollbar Vista VScrollbar Vista invisible characters Vista referências Vista separadores de coluna Vista H Splitter Vista V Splitter Vista Wysiwyg Vista zoom Parâmetros do documento 4D Write Pro Disponível Disponível Não disponível (utilizar a propriedade objeto só leitura) Disponível Disponível (só texto plano) Disponível Disponível Disponível 4D Write Pro Não importado (utilizar o modo de vista Documento/Página no menu contextual) Não disponível Não disponível Não disponível Não disponível Não disponível Não disponível Não disponível Não importado (utilize a propriedade de objeto deslocável hor.) Não importado (utilize a propriedade de objeto deslocável vert.) Não disponível Não importado (utilize ST SET OPTIONS) Não disponível Não disponível Não disponível Não disponível Não importado (utilize Document/Zoom no menu contextual)

118 Plug-in 4D Write Unidade Linguagem Contagem de colunas Espaço entre colunas Viúvas e órfãos Aba por padrão Aba Líder Cor URL Cor visitado URL 4D Write Pro Não disponível Não disponível Não disponível Não disponível Não disponível Disponível em v14 R5 Não disponível Não disponível Não disponível Parâmetros de paginação de documentos Plug-in 4D Write Largura de página Altura página Número primeira página Primeira página cabeçalho rodapés diferentes Página cabeçalho Esquerda e direita e rodapé de página diferentes Encadernação Páginas opostas Margens página Cabeçalho margem superior Cabeçalho margem inferior Rodapé de página margem superior Rodapé de página margem inferior Primeira página margem superior Primeira página margem inferior Cabeçalho primeira página margem superior Cabeçalho primeira página margem inferior Rodapé de página primeira página margem superior Rodapé de página primeira página margem inferior Primeira página é correta 4D Write Pro Não disponível Não disponível Não disponível Não disponível Não disponível Não disponível Não disponível Disponível em v14 R5 (implementação temporal) Não disponível Não disponível Não disponível Não disponível Não disponível Não disponível Não disponível Não disponível Não disponível Não disponível Não disponível Parâmetros de impressão de documentos Plug-in 4D Write Classe de papel Paisagem Largura Altura Margens de usuário Escala Resolução X Resolução Y 4D Write Pro Não disponível Não disponível Não disponível Não disponível Não disponível Não disponível Não disponível Não disponível Imagens Nota: 4D Write Pro ainda não suporta posicionamento absoluto para as imagens nas páginas. Só as imagens em linha são compatíveis e se importam para esta vista prévia técnica. Plug-in 4D Write 4D Write Pro X (esquerda) (& position :absolute) (para imagens em página unicamente) Y (acima) (& position :absolute) (para imagens em página unicamente) Largura Disponível em v14 R5 Altura Disponível em v14 R5 Número de página Não disponível Atrás Não disponível Não em primeira página Não disponível Modo de visualização (escala a ajustar, etc.) Disponível em v14 R5 É uma expressão Não disponível Conservar o tamanho Não disponível Propriedades de caracteres

119 Plug-in 4D Write Itálica Negrita Tachado Sublinhado Sombra Exponente (superscript ou subscript) Maiúsculas ou pequenas maiúsculas Família de fonte Tamanho de fonte Cor texto Cor fundo de texto Cor sublinhado Cor tachado Cor sombra Propriedade usuário Correção ortográfica (sintaxe e gramática) Aparência Folha de estilo Propriedades parágrafos Plug-in 4D Write Justificação Interlinear Vinhetas Margem esquerda Margem direita Indentar texto Estilo borde linha Cor borde linha Cor fundo borde Borde esquerdo Borde direito Borde superior e borde interior acima Borde inferior e borde interior inferior Espaço de borde Folha de estilo Tabulações 4D Write Pro (span) Disponível Disponível Disponível Disponível Disponível Disponível Disponível Disponível Disponível Disponível Disponível Disponível Disponível Disponível Não disponível Não disponível Não disponível Não importado (os estilos são importados mas as folhas de estilo não estão disponíveis) 4D Write Pro Disponível Disponível Disponível Disponível Disponível Disponível Disponível Disponível Disponível Disponível Disponível Disponível Disponível Disponível Disponível Disponível Hyperlinks Plug-in 4D Write Link URL Link método 4D Link documento aberto 4D Write Pro Disponível Não disponível Não disponível Expressões 4D Plug-in 4D Write Expressão 4D Data e hora Expressão HTML Expressão RTF 4D Write Pro Disponível Disponível Não disponível Não disponível Dados de texto Plug-in 4D Write Dados de texto principais Dados de texto cabeçalho Dados de texto Rodapé 4D Write Pro Disponível Não disponível Não disponível

120 4D Internet Commands 4D Internet Commands, 64-bit version for OS X SMTP_QuickSend SMTP_Attachment

121 4D Internet Commands, 64-bit version for OS X Originalmente introduzido em 4D v14 R4 4D oferece 4D Internet Commands 64 bits para OS X. Esta versão lhe irá permitir utilizar o plug-in 4D Internet Commands em 4D Server 64 bits para OS X. Para mais informação, consulte a seção [#title id="3799"/]. A instalação e uso do plug-in 4D Internet Commands 64 bits para OS X é similar as versões existentes, exceto pelas limitações que se enumeram a continuação. Requerimentos 4D IC 64 bits deve ser utilizado com 4D Server 64 bits para OS X versão 14 R3 ou superior. Ao igual que 4D Server, 4D IC 64 bits requer OS X versão 10.9 (Mavericks) ou superior. Suporte de nomes de arquivos mais longos Em 4D IC de 64 bits para OS X, a longitude dos nomes de arquivo já não está limitada a 62 caracteres como nas versões OS X existentes, se não a 1024 caracteres, que é o limite estandarte atual para o sistema operativo. A eliminação desta limitação se refere a todos os comandos que gerenciam nomes de arquivo, incluindo FTP, IMAP, MSG, POP, SMTP e IT commands. Funcionalidades de interface não suportadas Com respeito as características de OS X com respeito a interface de usuário, as seguintes funções não são suportadas em 4D Internet Commands de 64 bits para OS X. Barra de progresso 4D IC de 64 bits para OS X não mostra nenhuma barra de progresso durante a execução de operações que consomem muito tempo. O comando FTP_Progress FTP_Progress está em desuso em OS X de 64 bits. Quando é chamado neste entorno, o comando devolve o erro (função não implementada). Caixa de diálogo File selector As caixas de diálogo File seletor não podem ser mostradas pelo plug-in 4D IC de 64 bits para OS X. Com esta versão, os parâmetros localpath ou hostpath são obrigatórios e devem conter rotas de arquivos válidas, caso contrário se devolve um erro (funcionalidade não implementada). Esta sintaxe concerne a todos os comandos que gerenciam nomes de arquivo, incluindo FTP, IMAP, MSG, POP, SMTP e IT commands. Se deseja que o usuário selecione os arquivos de seu ordenador, lhe recomendamos que chame aos comandos integrados de 4D, tais como Select document Select document.

122 SMTP_QuickSend SMTP_QuickSend ( nomeservidor; msgde ; msga ; assunto ; mensagem {; paramsesion}{; porta}{; nomeusuario ; senha} ) - > Resultado Parâmetro Tipo Descrição nomeservidor Cadeia -> Nome ou endereço IP do servidor msgde Texto -> ou lista de s msga Texto -> o lista de s assunto Texto -> Assunto da mensagem (UTF-8 por padrão) mensagem Texto -> Mensagem (UTF-8 por padrão) paramsesion Inteiro longo -> 0 ou se omitir = Não utilizar SSL e sim switchover permitido, 1 = Utilizar SSL, 2 = Nunca utilizar SSL (switchover não permitido), 4 = Enviar texto HTML sem SSL, 5 = Enviar texto HTML com SSL, 8 = Enviar Mime HTML sem SSL/TLS, 9 = Enviar Mime HTML com SSL/TLS porta Inteiro longo -> Número de porta a utilizar nomeusuario Texto -> Nome de usuário para a autenticação senha Texto -> Senha para a autenticação Function result Inteiro <- Código do erro Descrição Originalmente introduzido em 4D v14 R4 O comando SMTP_QuickSend agora lhe permite enviar mensagens com o formato HTML MIME, com ou sem o protocolo SSL/TLS. Mime HTML (.mht ou extensão de arquivo.mhtml) é um formato de arquivo da página Web que pode fundir o código HTML, assim como os recursos externos, tais como imagens em um único documento. É suportado por vários navegadores, assim como por MS Word, por exemplo. Dado que este formato é suportado pelas áreas 4D Write Pro, você poderá guardar e enviar áreas 4D Write Pro por incluindo todos seus recursos. Passe 8 em paramsesion para formatar a mensagem em Mime HTML e enviar ele em modo estandarte. Passe 9 em paramsesion para formatar a mensagem em Mime HTML e enviar ele em modo SSL/TLS. Estes valores correspondem as combinações habituais, entretanto o parâmetro paramsesion é uma realidade um campo de bits e permite qualquer combinação personalizada se utilizar operadores nos bits: Número Formato utilizado se o bit é 1 de bit 0 Utilizar SSL ou o comportamento determinado, conexão em claro, e atualização a SSL se possível. Nunca atualizar, permanecer em modo não cifrado, inclusive se a atualização é possível. Bit é ignorado se SSL 1 (bit 0) foi selecionado. 2 O corpo da mensagem é HTML, definir o cabeçalho correspondente. Mensagem MHTML, o bit 2 (HTML) é ignorado. O usuário é responsável de definir todos os cabeçalhos, exceto 3 "A", "De", "Data" e "Assunto" Nota: este comando não suporta bancos de dados convertidos executando em modo "Non-Unicode". Exemplo Você guardou um documento.mht de seu disco e deseja enviar ele por . Para isso, pode escrever: $Message:=Document to text("c:\\documents\\invitation.mht") $Host:="smtp.gmail.com" $Subject:="Let's party" $Param:=9 //MHTML with SSL $Port:=465 //SSL port of gmail $Error:=SMTP_QuickSend($Host;$FromAddress;$ToAddress;$Subject;$Message;$Param;$Port;$User;$Password)

123

124 SMTP_Attachment SMTP_Attachment ( smtp_id ; nomarquivo ; tipocod ; opcaoeliminar {; IDAssociado {; tipoconteudo}} ) -> Resultado da função Parâmetro Tipo Descrição smtp_id Inteiro longo -> Referência da mensagem nomarquivo Texto -> Nome do arquivo a associar tipocod Inteiro -> 0 = Na codificação (envia DataFork unicamente) ±1 = BinHex ±2 = Base64; (envia DataFork unicamente) ±3 = AppleSingle ±4 = AppleDouble ±5 = AppleSingle AND Base64 ±6 = AppleDouble AND Base64 ±7 = UUEncode opcaoeliminar Inteiro -> 0 = Adicionar a lista existente, 1 = Substituir todos os adjuntos com Filename, 2 = Remover só este adjunto IDAssociado Texto -> ID do adjunto (mensagens HTML unicamente) tipoconteudo Texto -> Valor Content-type a definir Resultado da função Inteiro <- Código de erro Descrição Originalmente introduzido em 4D v14 R4 Tema: IC Send Mail O comando SMTP_Attachment agora aceita um novo parâmetro tipoconteudo, lhe permitindo definir o tipo de conteúdo do arquivo adjunto. Por padrão, se o parâmetro tipoconteudo se omite ou contém uma cadeia vazia, 4DIC estabelece automaticamente o tipo do conteúdo do arquivo adjunto em função de sua extensão. As seguintes regras se aplicam: Extensão Tipo de conteúdo jpg, jpeg image/jpeg png image/png gif image/gif pdf application/pdf doc application/msword xls application/vnd.ms-excel ppt application/vnd.ms-powerpoint zip application/zip gz application/gzip json application/json js application/javascript ps application/postscript xml application/xml htm, html text/html mp3 audio/mpeg other application/octet-stream Em tipoconteudo, pode passar uma cadeia que define o tipo do conteúdo (tipo MIME) para o arquivo, por exemplo "video/mpeg". Este valor content-type será definido para o adjunto, sem importar sua extensão. Nota: passe uma cadeia vazia ("") em IDAssociado se não deseja utilizar este parâmetro. Exemplo Queremos declarar seus arquivos de configuração como arquivos XML: $path:=get 4D folder(database folder)+"settings.mysettings" $err:=smtp_attachment($smtp_id;$path;2;0;"myid123";"application/xml")

125 4D View PV GET BORDER ROW RANGES PV GET BORDER COLUMN RANGES

126 PV GET BORDER ROW RANGES PV GET BORDER ROW RANGES ( area ; esq ; sup ; dir ; inf ; tiposborde ; coresborde ) Parâmetro Tipo Descrição area Inteiro longo Área 4D View esq Array inteiro longo Array dos números de fila para as células superiores sup Array inteiro longo Array dos números de fila para as células superiores dir Array inteiro longo Array dos números das colunas para as células a direita inf Array inteiro longo Array dos números de fila para as células inferiores tiposborde Array inteiro longo Array de tipos de borde coresborde Array inteiro longo Array de cores de borde Descrição Originalmente introduzido em 4D v14 R4 Tema: PV Borders O novo comando PV GET BORDER ROW RANGES devolve uma lista de faixas que descrevem as células que compartilham o mesmo estilo de borde superior (um estilo de borde consiste de um tipo e de uma cor). Cada faixa se devolve através de arrays sincronizados esq, sup, dir e inf, onde cada elemento representa, respectivamente os números de célula da faixa, esquerda, superior, direita e inferior. Os estilos de bordes correspondentes se devolvem nos parâmetros array tiposborde e coresborde: os valores tiposborde podem ser comparados com as constantes do tema PV Estilo de borde: Constante Tipo Valor pv border style 1 Inteiro longo 1 pv border style 111 Inteiro longo 7 pv border style 112 Inteiro longo 9 pv border style 2 Inteiro longo 2 pv border style 211 Inteiro longo 8 pv border style 212 Inteiro longo 10 pv border style 222 Inteiro longo 11 pv border style 232 Inteiro longo 12 pv border style 3 Inteiro longo 3 pv border style 4 Inteiro longo 4 pv border style 5 Inteiro longo 5 pv border style 6 Inteiro longo 6 pv border style half Inteiro longo 14 pv border style none Inteiro longo 0 pv border style quarter Inteiro longo 13 os valores coresborde são de tipo BGR inteiro longo. Para obter mais informação, consulte o comando PV Color to index PV Color to index Este comando deve ser usado em conjunto com o novo comando [#title id="3616"/] para obter uma definição completa dos bordes em sua área, que é útil por exemplo quando se quer exportar uma área 4D View em formato MS Excel. Nota: a lista de faixas devolvidas pelo comando depende da forma em que as faixas se definiram. Por exemplo, se foi desenhada uma linha horizontal, enquanto selecionava a faixa (4A;4E), o comando só devolve um valor correspondente a faixa (4A;4E). No entanto, se traçar uma linha horizontal na linha 4 e logo fazer um laço sobre as colunas A a E, o comando devolve cinco valores correspondentes a cada interação do laço. O resultado é visualmente idêntico, mas a informação armazenada na área é diferente. Exemplo Sua área contém os seguintes bordes:

127 Se executar este código: PV GET BORDER ROW RANGES(myArea;LeftArray;TopArray;RightArray;BottomArray;BorderTypeArray;BorderColorArray) Se detectarão quatro rangos, portanto seus arrays contém os seguintes valores: LeftArray TopArray RightArray BottomArray BorderTypeArray BorderColorArray

128 PV GET BORDER COLUMN RANGES PV GET BORDER COLUMN RANGES ( area ; esq ; sup ; dir ; inf ; tiposborde ; coresborde ) Parâmetro Tipo Descrição area Inteiro longo Área 4D View esq Array inteiro longo Array de números de colunas para células esquerdas sup Array inteiro longo Array dos números de fila para as células superiores dir Array inteiro longo Array dos números das colunas para as células a direita inf Array inteiro longo Array dos números de fila para as células inferiores tiposborde Array inteiro longo Array de tipos de borde coresborde Array inteiro longo Array de cores de borde Descrição Originalmente introduzido em 4D v14 R4 Tema: PV Borders O novo comando PV GET BORDER COLUMN RANGES devolve uma lista de faixas que descrevem as células que compartilham o mesmo estilo de borde esquerdo (um estilo de borde consiste de um tipo e de uma cor). Cada faixa se devolve através de arrays sincronizados esq, sup, dir e inf, onde cada elemento representa, respectivamente os números de célula da faixa, esquerda, acima, direita e abaixo. Os estilos de bordes correspondentes se devolvem nos parâmetros array tiposborde e coresborde: os valores tiposborde se podem comparar com as constantes do tema PV Estilo de borde: Constante Tipo Valor pv border style 1 Inteiro longo 1 pv border style 111 Inteiro longo 7 pv border style 112 Inteiro longo 9 pv border style 2 Inteiro longo 2 pv border style 211 Inteiro longo 8 pv border style 212 Inteiro longo 10 pv border style 222 Inteiro longo 11 pv border style 232 Inteiro longo 12 pv border style 3 Inteiro longo 3 pv border style 4 Inteiro longo 4 pv border style 5 Inteiro longo 5 pv border style 6 Inteiro longo 6 pv border style half Inteiro longo 14 pv border style none Inteiro longo 0 pv border style quarter Inteiro longo 13 os valores coresborde são de tipo BGR inteiro longo. Para obter mais informação, consulte o comando PV Color to index PV Color to index Este comando deve ser usado em conjunto com o novo comando PV GET BORDER ROW RANGES para obter uma definição completa dos bordes em sua área, que é útil por exemplo quando se quer exportar uma área 4D View em formato MS Excel. Nota: a lista de faixas devolvidas pelo comando depende da forma em que as faixas se definiram. Por exemplo, se foi desenhada uma linha vertical, enquanto selecionava a faixa (1B;5B), o comando só devolve um valor correspondente a faixa (1B;5B). No entanto, se traçar uma linha vertical na coluna B e logo fazer um laço sobre as linhas 1 a 5, o comando devolve cinco valores correspondentes a cada interação do laço. O resultado é visualmente idêntico, mas a informação armazenada na área é diferente. Exemplo Sua área contém os seguintes bordes:

129 Se executar este código: PV GET BORDER COLUMN RANGES(myArea;LeftArray;TopArray;RightArray;BottomArray;BorderTypeArray;BorderColorArray) Duas faixas serão detectadas, portanto seus arrays conterão os seguintes valores: LeftArray TopArray RightArray BottomArray BorderTypeArray BorderColorArray

Conversão a 4D v15. 4D v13: "Conversion to 4D v13" e "Deprecated features 4D v13 and higher".

Conversão a 4D v15. 4D v13: Conversion to 4D v13 e Deprecated features 4D v13 and higher. Conversão a 4D v15 Bem-vindo a este manual "Conversão para 4D v15", que descreve vários pontos a verificar, antes, durante e após a conversão de um banco de dados de 4D v14 para 4D v15. A conversão de

Leia mais

Funcionalidades obsoletas e eliminadas

Funcionalidades obsoletas e eliminadas Funcionalidades obsoletas e eliminadas Sobre este manual Rev. Junho 2015 Durante mais de 30 anos, nosso principal objetivo foi melhorar nosso produto (utilização de novos conceitos e tecnologias) tendo

Leia mais

Atualização 4D v15 R2

Atualização 4D v15 R2 Atualização 4D v15 R2 Welcome to 4D v15 R2, the first R-release version of the 4D v15 product range cycle. This manual describes all the new features and implementations that you will find in this release.

Leia mais

Guia de administração. BlackBerry Professional Software para Microsoft Exchange. Versão: 4.1 Service pack: 4B

Guia de administração. BlackBerry Professional Software para Microsoft Exchange. Versão: 4.1 Service pack: 4B BlackBerry Professional Software para Microsoft Exchange Versão: 4.1 Service pack: 4B SWD-313211-0911044452-012 Conteúdo 1 Gerenciando contas de usuários... 7 Adicionar uma conta de usuário... 7 Adicionar

Leia mais

FileMaker 13. Guia de ODBC e JDBC

FileMaker 13. Guia de ODBC e JDBC FileMaker 13 Guia de ODBC e JDBC 2004 2013 FileMaker Inc. Todos os direitos reservados. FileMaker Inc. 5201 Patrick Henry Drive Santa Clara, Califórnia 95054 FileMaker e Bento são marcas comerciais da

Leia mais

Status Enterprise Guia do Usuário. Parte 12 Serviço de conector de Dados

Status Enterprise Guia do Usuário. Parte 12 Serviço de conector de Dados Guia do Usuário Parte 12 Serviço de conector de Dados Conteúdos 1 INTRODUÇÃO... 4 1.1 Descrição do Serviço conector de Dados ou Data com nector... 4 2 CRIAR UMA CONFIGURAÇÃO DE ENLACE DE DADOS... 5 2.1

Leia mais

Microsoft Visual Studio Express 2012 for Windows Desktop

Microsoft Visual Studio Express 2012 for Windows Desktop Microsoft Visual Studio Express 2012 for Windows Desktop Apresentação da ferramenta Professor: Danilo Giacobo Página pessoal: www.danilogiacobo.eti.br E-mail: danilogiacobo@gmail.com 1 Introdução Visual

Leia mais

Centro de Computação - Unicamp Gerência de Atendimento ao Cliente (e-mail:apoio@turing.unicamp.br) Sumário

Centro de Computação - Unicamp Gerência de Atendimento ao Cliente (e-mail:apoio@turing.unicamp.br) Sumário Sumário Conceitos Microsoft Access 97... 01 Inicialização do Access... 02 Convertendo um Banco de Dados... 03 Criando uma Tabela... 06 Estrutura da Tabela... 07 Propriedades do Campo... 08 Chave Primária...

Leia mais

Manual de Utilização

Manual de Utilização Se ainda tiver dúvidas entre em contato com a equipe de atendimento: Por telefone: 0800 642 3090 Por e-mail atendimento@oisolucoespraempresas.com.br Introdução... 3 1. O que é o programa Oi Backup Empresarial?...

Leia mais

FileMaker Pro 12. Guia de configuração da instalação em rede

FileMaker Pro 12. Guia de configuração da instalação em rede FileMaker Pro 12 Guia de configuração da instalação em rede 2007 2012 FileMaker, Inc. Todos os direitos reservados. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, Califórnia 95054 FileMaker é uma

Leia mais

Instalando o IIS 7 no Windows Server 2008

Instalando o IIS 7 no Windows Server 2008 Goiânia, 16/09/2013 Aluno: Rafael Vitor Prof. Kelly Instalando o IIS 7 no Windows Server 2008 Objetivo Esse tutorial tem como objetivo demonstrar como instalar e configurar o IIS 7.0 no Windows Server

Leia mais

Instalando o IIS 7 no Windows Server 2008

Instalando o IIS 7 no Windows Server 2008 Goiânia, 16/09/2013 Aluno: Rafael Vitor Prof. Kelly Instalando o IIS 7 no Windows Server 2008 Objetivo Esse tutorial tem como objetivo demonstrar como instalar e configurar o IIS 7.0 no Windows Server

Leia mais

Instalação do IBM SPSS Modeler Server Adapter

Instalação do IBM SPSS Modeler Server Adapter Instalação do IBM SPSS Modeler Server Adapter Índice Instalação do IBM SPSS Modeler Server Adapter............... 1 Sobre a Instalação do IBM SPSS Modeler Server Adapter................ 1 Requisitos de

Leia mais

4D XML Keys BuildApplication

4D XML Keys BuildApplication 4D XML Keys BuildApplication Introdução AutoUpdate / CS AutoUpdate / RuntimeVL CS General Parameters Licenses SignApplication SourcesFiles / CS SourcesFiles / RuntimeVL Versioning / Client Versioning /

Leia mais

Trabalhando com conexão ao banco de dados MySQL no Lazarus. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

Trabalhando com conexão ao banco de dados MySQL no Lazarus. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011 Trabalhando com conexão ao banco de dados MySQL no Lazarus Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011 Edição 4 O Componente Trabalhando com conexão ao banco de dados MySQL no Lazarus Ano: 03/2011

Leia mais

Conheça o Projeto. Apresentação. Finalidade. Objetivo

Conheça o Projeto. Apresentação. Finalidade. Objetivo Manual do Usuário Índice Conheça o Projeto...3 Apresentação...3 Finalidade...3 Objetivo...3 Histórico...4 Usando o Portal...5 Efetuando o cadastro na biblioteca digital...5 Logando na Biblioteca Digital...6

Leia mais

Capítulo 7 O Gerenciador de Arquivos

Capítulo 7 O Gerenciador de Arquivos Capítulo 7 O Gerenciador de Arquivos Neste capítulo nós iremos examinar as características da interface do gerenciador de arquivos Konqueror. Através dele realizaremos as principais operações com arquivos

Leia mais

FileMaker 14. Guia de ODBC e JDBC

FileMaker 14. Guia de ODBC e JDBC FileMaker 14 Guia de ODBC e JDBC 2004 2015 FileMaker Inc. Todos os direitos reservados. FileMaker Inc. 5201 Patrick Henry Drive Santa Clara, Califórnia 95054 FileMaker e FileMaker Go são marcas comerciais

Leia mais

LICENCIAMENTO V14 USANDO REPRISE LICENSE MANAGER

LICENCIAMENTO V14 USANDO REPRISE LICENSE MANAGER LICENCIAMENTO V14 USANDO REPRISE LICENSE MANAGER V14 de BricsCAD vem com um novo sistema de licenciamento, com base na tecnologia de licenciamento de Reprise Software. Este novo sistema oferece um ambiente

Leia mais

Introdução à aplicação Web

Introdução à aplicação Web Introdução à aplicação Web A aplicação Web SanDisk +Cloud é uma interface com base na Web para aceder ao seu conteúdo e gerir a sua conta. Com a aplicação Web poderá reproduzir música, ver filmes, ver

Leia mais

Manual do KWallet. George Staikos Lauri Watts Desenvolvedor: George Staikos Tradução: Marcus Gama Tradução: André Marcelo Alvarenga

Manual do KWallet. George Staikos Lauri Watts Desenvolvedor: George Staikos Tradução: Marcus Gama Tradução: André Marcelo Alvarenga George Staikos Lauri Watts Desenvolvedor: George Staikos Tradução: Marcus Gama Tradução: André Marcelo Alvarenga 2 Conteúdo 1 Introdução 5 1.1 Criar uma carteira...................................... 5

Leia mais

3 Usando o editor da carga de dados

3 Usando o editor da carga de dados 3 Usando o editor da carga de dados Esta seção descreve como usar o editor de carga de dados para criar ou editar um script de carga de dados que pode ser usado para carregar seu modelo de dados no aplicativo.

Leia mais

Seu manual do usuário XEROX 6279 http://pt.yourpdfguides.com/dref/5579951

Seu manual do usuário XEROX 6279 http://pt.yourpdfguides.com/dref/5579951 Você pode ler as recomendações contidas no guia do usuário, no guia de técnico ou no guia de instalação para XEROX 6279. Você vai encontrar as respostas a todas suas perguntas sobre a XEROX 6279 no manual

Leia mais

BlackBerry Messenger SDK

BlackBerry Messenger SDK BlackBerry Messenger SDK Versão: 1.2 Getting Started Guide Publicado: 2011-10-11 SWD-1391821-1011103456-012 Conteúdo 1 Requisitos do sistema... 2 2 Dependências de versão do BlackBerry Messenger... 3 3

Leia mais

Conhecendo o Visual FoxPro 8.0 Parte 1

Conhecendo o Visual FoxPro 8.0 Parte 1 AULA Conhecendo o Visual FoxPro 8.0 Parte 1 Em qualquer profissão é importante que se conheça bem as ferramentas que serão usadas para executar o trabalho proposto. No desenvolvimento de software não é

Leia mais

Capture Pro Software. Introdução. A-61640_pt-br

Capture Pro Software. Introdução. A-61640_pt-br Capture Pro Software Introdução A-61640_pt-br Introdução ao Kodak Capture Pro Software e Capture Pro Limited Edition Instalando o software: Kodak Capture Pro Software e Network Edition... 1 Instalando

Leia mais

Conhecendo o Visual FoxPro 8.0 Parte 3

Conhecendo o Visual FoxPro 8.0 Parte 3 AULA Conhecendo o Visual FoxPro 8.0 Parte 3 Continuando nossa saga pelas ferramentas do Visual FoxPro 8.0, hoje vamos conhecer mais algumas. A Ferramenta Class Designer A Class Designer é a ferramenta

Leia mais

Conhecendo o Visual FoxPro 8.0 Parte 2

Conhecendo o Visual FoxPro 8.0 Parte 2 AULA Conhecendo o Visual FoxPro 8.0 Parte 2 Na aula anterior, vimos sobre: a) Janela de comando b) Gerenciador de Projetos c) Database Designer e Table Designer Prosseguiremos então a conhecer as ferramentas

Leia mais

Iniciando o MySQL Query Brower

Iniciando o MySQL Query Brower MySQL Query Brower O MySQL Query Browser é uma ferramenta gráfica fornecida pela MySQL AB para criar, executar e otimizar solicitações SQL em um ambiente gráfico. Assim como o MySQL Administrator foi criado

Leia mais

MANUAL DO USUÁRIO SUMÁRIO

MANUAL DO USUÁRIO SUMÁRIO SUMÁRIO 1. Home -------------------------------------------------------------------------------------------------------- 7 2. Cadastros -------------------------------------------------------------------------------------------------

Leia mais

Integrated User Verification Guia de Implementação do Cliente

Integrated User Verification Guia de Implementação do Cliente Integrated User Verification Guia de Implementação do Cliente Versão 2.5 31.01.12 e-academy Inc [CONFIDENCIAL] SUMÁRIO INTRODUÇÃO... 3 FINALIDADE E PÚBLICO-ALVO... 3 SOBRE ESTE DOCUMENTO... 3 TERMOS MAIS

Leia mais

Personalizando o Dreamweaver

Personalizando o Dreamweaver Personalizando o Dreamweaver - Acessando o painel de Preferências: O painel de preferências possui todas as configurações que o Dreamweaver oferece. Para quem é usuário de PC, poderá acessar pelo menu

Leia mais

Linux. Educacional. Tutorial Buzzword

Linux. Educacional. Tutorial Buzzword Linux Educacional Tutorial Buzzword Para trabalhar com o programa Buzzword online, é necessário que crie uma conta no site. Para isso acesse o endereço - https://buzzword.acrobat.com/ Para criar uma conta

Leia mais

O que há de novo no QuarkXPress 2015

O que há de novo no QuarkXPress 2015 O que há de novo no QuarkXPress 2015 CONTEÚDO Conteúdo Novidades do QuarkXPress 2015...3 Novos recursos...4 Aplicativo de 64 bits...4 Variáveis de conteúdo...4 Tabelas alinhadas...5 Notas de rodapé e notas

Leia mais

Guia do Usuário do Avigilon Control Center Server

Guia do Usuário do Avigilon Control Center Server Guia do Usuário do Avigilon Control Center Server Versão 4.10 PDF-SERVER-D-Rev1_PT Copyright 2011 Avigilon. Todos os direitos reservados. As informações apresentadas estão sujeitas a modificação sem aviso

Leia mais

Excel 2010 Modulo II

Excel 2010 Modulo II Excel 2010 Modulo II Sumário Nomeando intervalos de células... 1 Classificação e filtro de dados... 3 Subtotais... 6 Validação e auditoria de dados... 8 Validação e auditoria de dados... 9 Cenários...

Leia mais

Integrated User Verification Guia de Implementação do Cliente 2015-05-04 Confidencial Versão 2.9

Integrated User Verification Guia de Implementação do Cliente 2015-05-04 Confidencial Versão 2.9 Integrated User Verification Guia de Implementação do Cliente 2015-05-04 Confidencial Versão 2.9 SUMÁRIO Introdução... 2 Finalidade e público-alvo... 2 Sobre este documento... 2 Termos mais utilizados...

Leia mais

Prof. Carlos Majer Aplicações Corporativas UNICID

Prof. Carlos Majer Aplicações Corporativas UNICID Este material pertence a Carlos A. Majer, Professor da Unidade Curricular: Aplicações Corporativas da Universidade Cidade de São Paulo UNICID Licença de Uso Este trabalho está licenciado sob uma Licença

Leia mais

Introdução... 1. Instalação... 2

Introdução... 1. Instalação... 2 ONTE DO Introdução... 1 O que é IPP?... 1 Qual é a função de um software Samsung IPP?... 1 Instalação... 2 Requisitos do sistema... 2 Instalar o software Samsung IPP... 2 Desinstalar o software Samsung

Leia mais

Ferramenta: Spider-CL. Manual do Usuário. Versão da Ferramenta: 1.1. www.ufpa.br/spider

Ferramenta: Spider-CL. Manual do Usuário. Versão da Ferramenta: 1.1. www.ufpa.br/spider Ferramenta: Spider-CL Manual do Usuário Versão da Ferramenta: 1.1 www.ufpa.br/spider Histórico de Revisões Data Versão Descrição Autor 14/07/2009 1.0 15/07/2009 1.1 16/07/2009 1.2 20/05/2010 1.3 Preenchimento

Leia mais

Kaseya 2. Dados de exibição rápida. Version R8. Português

Kaseya 2. Dados de exibição rápida. Version R8. Português Kaseya 2 Software Deployment and Update Dados de exibição rápida Version R8 Português Outubro 23, 2014 Agreement The purchase and use of all Software and Services is subject to the Agreement as defined

Leia mais

Área de Administração

Área de Administração Área de Administração versão 1.1 Partir de 2012/01/14 aplica-se para a versão phpcontact 1.2.x www.phpcontact.net Geral A área de administração é utilizado para uma fácil configuração do software elaboraçao

Leia mais

Manual de Utilização do PLONE (Gerenciador de página pessoal)

Manual de Utilização do PLONE (Gerenciador de página pessoal) Manual de Utilização do PLONE (Gerenciador de página pessoal) Acessando o Sistema Para acessar a interface de colaboração de conteúdo, entre no endereço http://paginapessoal.utfpr.edu.br. No formulário

Leia mais

Seu manual do usuário KASPERSKY ANTI-VIRUS MOBILE 6.0 http://pt.yourpdfguides.com/dref/3931618

Seu manual do usuário KASPERSKY ANTI-VIRUS MOBILE 6.0 http://pt.yourpdfguides.com/dref/3931618 Você pode ler as recomendações contidas no guia do usuário, no guia de técnico ou no guia de instalação para KASPERSKY ANTI- VIRUS MOBILE 6.0. Você vai encontrar as respostas a todas suas perguntas sobre

Leia mais

APOSTILA BANCO DE DADOS INTRODUÇÃO A LINGUAGEM SQL

APOSTILA BANCO DE DADOS INTRODUÇÃO A LINGUAGEM SQL 1. O que é Linguagem SQL 2. Instrução CREATE 3. CONSTRAINT 4. ALTER TABLE 5. RENAME TABLE 6. TRUCANTE TABLE 7. DROP TABLE 8. DROP DATABASE 1 1. O que é Linguagem SQL 2. O SQL (Structured Query Language)

Leia mais

Kerio Exchange Migration Tool

Kerio Exchange Migration Tool Kerio Exchange Migration Tool Versão: 7.3 2012 Kerio Technologies, Inc. Todos os direitos reservados. 1 Introdução Documento fornece orientações para a migração de contas de usuário e as pastas públicas

Leia mais

Manual de Instalação e Configuração

Manual de Instalação e Configuração e Configuração MyABCM 4.0 Versão 4.00-1.00 2 Copyright MyABCM. Todos os direitos reservados Reprodução Proibida Índice Introdução... 5 Arquitetura, requisitos e cenários de uso do MyABCM... 7 Instalação

Leia mais

HCN/HCS SERIES CÂMERAS E CONVERSORES IP

HCN/HCS SERIES CÂMERAS E CONVERSORES IP HCN/HCS SERIES CÂMERAS E CONVERSORES IP Obrigado por utilizar os produtos Dimy s. Antes de operar o equipamento, leia atentamente as instruções deste manual para obter um desempenho adequado. Por favor,

Leia mais

2 de maio de 2014. Remote Scan

2 de maio de 2014. Remote Scan 2 de maio de 2014 Remote Scan 2014 Electronics For Imaging. As informações nesta publicação estão cobertas pelos termos dos Avisos de caráter legal deste produto. Conteúdo 3 Conteúdo...5 Acesso ao...5

Leia mais

Mobincube. Navegar até ao website www.mobincube.com e carregar em Free sign up.

Mobincube. Navegar até ao website www.mobincube.com e carregar em Free sign up. Mobincube Navegar até ao website www.mobincube.com e carregar em Free sign up. Como criar uma conta? Inserir um nome de utilizador, password e email, de seguida clicar em Create Account. Nota: Por razões

Leia mais

Versão 1.0 Janeiro de 2011. Xerox Phaser 3635MFP Plataforma de interface extensível

Versão 1.0 Janeiro de 2011. Xerox Phaser 3635MFP Plataforma de interface extensível Versão 1.0 Janeiro de 2011 Xerox Phaser 3635MFP 2011 Xerox Corporation. XEROX e XEROX e Design são marcas da Xerox Corporation nos Estados Unidos e/ou em outros países. São feitas alterações periodicamente

Leia mais

Instruções de instalação e remoção para os drivers de impressora PostScript e PCL do Windows Versão 8

Instruções de instalação e remoção para os drivers de impressora PostScript e PCL do Windows Versão 8 Instruções de instalação e remoção para os drivers de impressora PostScript e PCL do Windows Versão 8 Este arquivo ReadMe contém as instruções para a instalação dos drivers de impressora PostScript e PCL

Leia mais

Publicação web. Será ativado um assistente de publicação que lhe guiará em todas as etapas a seguir apresentadas.

Publicação web. Será ativado um assistente de publicação que lhe guiará em todas as etapas a seguir apresentadas. Publicação web Pré requisitos: Lista de questões Formulário multimídia Este tutorial tem como objetivo, demonstrar de maneira ilustrativa, todos os passos e opções que devem ser seguidos para publicar

Leia mais

Android e Bancos de Dados

Android e Bancos de Dados (Usando o SQLite) Programação de Dispositivos Móveis Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do

Leia mais

Manual do Usuário ZKPatrol1.0

Manual do Usuário ZKPatrol1.0 Manual do Usuário ZKPatrol1.0 SOFTWARE Sumário 1 Introdução de Funções... 3 1.2 Operação Básica... 4 1.3 Seleção de idioma... 4 2 Gerenciamento do Sistema... 5 2.1 Entrar no sistema... 5 2.2 Sair do Sistema...

Leia mais

A-61750_pt-br. Guia do Administrador

A-61750_pt-br. Guia do Administrador A-61750_pt-br Guia do Administrador INTRODUÇÃO 1-1 CONFIGURAÇÃO DO TRABALHO 2-1 CONFIGURAÇÃO DE CORREÇÃO 3-1 CONFIGURAÇÃO DO CÓDIGO DE BARRAS E DO OCR 4-1 CONFIGURAÇÃO DE PÁGINA 5-1 ATALHOS DE PRODUTIVIDADE

Leia mais

Criando um banco de dados

Criando um banco de dados Após ter projetado o banco de dados, você pode criá-lo utilizando a interface ou com a linguagem. É possível que você queira adicionar tabelas existentes ao banco de dados e depois modificá-las para aproveitar

Leia mais

Funcionalidades obsoletas e eliminadas

Funcionalidades obsoletas e eliminadas Funcionalidades obsoletas e eliminadas Sobre este manual Rev. October 2014 Durante mais de 25 anos, nosso principal objetivo foi melhorar nosso produto (utilização de novos conceitos e tecnologias) tendo

Leia mais

Manual do Teclado de Satisfação Online Web Opinião Versão 1.0.5

Manual do Teclado de Satisfação Online Web Opinião Versão 1.0.5 Manual do Teclado de Satisfação Online Web Opinião Versão 1.0.5 09 de julho de 2015 Departamento de Engenharia de Produto (DENP) SEAT Sistemas Eletrônicos de Atendimento 1. Introdução O Teclado de Satisfação

Leia mais

Manual de utilização GDS Touch PAINEL TOUCH-SCREEN CONTROLE RESIDENCIAL INTERATIVO. Versão: 1.0 Direitos reservados.

Manual de utilização GDS Touch PAINEL TOUCH-SCREEN CONTROLE RESIDENCIAL INTERATIVO. Versão: 1.0 Direitos reservados. Bem Vindo GDS TOUCH Manual de utilização GDS Touch PAINEL TOUCH-SCREEN CONTROLE RESIDENCIAL INTERATIVO O GDS Touch é um painel wireless touchscreen de controle residencial, com design totalmente 3D, interativo

Leia mais

Qlik Sense Desktop. Qlik Sense 2.0.2 Copyright 1993-2015 QlikTech International AB. Todos os direitos reservados.

Qlik Sense Desktop. Qlik Sense 2.0.2 Copyright 1993-2015 QlikTech International AB. Todos os direitos reservados. Qlik Sense Desktop Qlik Sense 2.0.2 Copyright 1993-2015 QlikTech International AB. Todos os direitos reservados. Copyright 1993-2015 QlikTech International AB. Todos os direitos reservados. Qlik, QlikTech,

Leia mais

MANUAL DO ADMINISTRADOR DO MÓDULO

MANUAL DO ADMINISTRADOR DO MÓDULO MANUAL DO ADMINISTRADOR DO MÓDULO ÍNDICE Relatórios Dinâmicos... 3 Requisitos de Sistema... 4 Estrutura de Dados... 5 Operadores... 6 Tabelas... 7 Tabelas x Campos... 9 Temas... 13 Hierarquia Relacionamento...

Leia mais

Introdução. Apresentação Arquitetura de 4D Server

Introdução. Apresentação Arquitetura de 4D Server Manual de 4D Server Introdução 4D Server em 10 minutos Uso de 4D Server Janela de administração de 4D Server Métodos banco de dados 4D Server Uso de um 4D Remoto 4D Server e a linguagem 4D Introdução Apresentação

Leia mais

CA Nimsoft Monitor Snap

CA Nimsoft Monitor Snap CA Nimsoft Monitor Snap Guia de Configuração do Monitoramento de conectividade de rede net_connect série 2.9 Aviso de copyright do CA Nimsoft Monitor Snap Este sistema de ajuda online (o Sistema ) destina-se

Leia mais

Professor Paulo Najar www.aprenderdigital.com.br

Professor Paulo Najar   www.aprenderdigital.com.br ~ 1 ~ O QUE É O BROFFICE? Broffice.org é o nome de um conjunto de programas de escritório livre (free software), disponível na internet gratuitamente (no site www.broffice.org) que oferece ferramentas

Leia mais

Dicas para usar melhor o Word 2007

Dicas para usar melhor o Word 2007 Dicas para usar melhor o Word 2007 Quem está acostumado (ou não) a trabalhar com o Word, não costuma ter todo o tempo do mundo disponível para descobrir as funcionalidades de versões recentemente lançadas.

Leia mais

O código JavaScript deve ser colocado entre tags de comentário para ficar escondido no caso de navegadores antigos que não reconhecem a linguagem.

O código JavaScript deve ser colocado entre tags de comentário para ficar escondido no caso de navegadores antigos que não reconhecem a linguagem. 1 - O que é JAVASCRIPT? É uma linguagem de script orientada a objetos, usada para aumentar a interatividade de páginas Web. O JavaScript foi introduzido pela Netscape em seu navegador 2.0 e posteriormente

Leia mais

Índice INSTALAÇÃO DO SOFTWARE EM SISTEMAS WINDOWS...2 INSTALAÇÃO DO SOFTWARE EM SISTEMAS LINUX...3 TESTANDO A CONEXÃO DA REDE LOCAL...

Índice INSTALAÇÃO DO SOFTWARE EM SISTEMAS WINDOWS...2 INSTALAÇÃO DO SOFTWARE EM SISTEMAS LINUX...3 TESTANDO A CONEXÃO DA REDE LOCAL... Índice INSTALAÇÃO DO SOFTWARE EM SISTEMAS WINDOWS...2 INSTALAÇÃO DO SOFTWARE EM SISTEMAS LINUX...3 TESTANDO A CONEXÃO DA REDE LOCAL...4 Configurações iniciais...5 Arquivo sudoers no Sistema Operacional

Leia mais

Moodle FTEC Versão 2.0 Manual do Usuário Acesse a área de LOGIN do site da FTEC www.ftec.com.br

Moodle FTEC Versão 2.0 Manual do Usuário Acesse a área de LOGIN do site da FTEC www.ftec.com.br Moodle FTEC Versão 2.0 Manual do Usuário Acesse a área de LOGIN do site da FTEC www.ftec.com.br Índice Como acessar o Moodle Editando seu PERFIL Editando o curso / disciplina no Moodle Incluindo Recursos

Leia mais

MANUAL DE SOFTWARE ARKITOOL 2012

MANUAL DE SOFTWARE ARKITOOL 2012 MANUAL DE SOFTWARE ARKITOOL 2012 Editado por: Idéias e programas, S.L. San Román de los Montes 25-Março-2012. ARKITool, Arkiplan, Além disso ARKITool são marcas comerciais de idéias e programas, S.L. REQUISITOS

Leia mais

Tutorial de Computação Introdução a Programação Gráfica em Lazarus Para MEC 1100 v2010.10

Tutorial de Computação Introdução a Programação Gráfica em Lazarus Para MEC 1100 v2010.10 Tutorial de Computação Introdução a Programação Gráfica em Lazarus Para MEC 1100 v2010.10 Linha de Equipamentos MEC Desenvolvidos por: Maxwell Bohr Instrumentação Eletrônica Ltda. Rua Porto Alegre, 212

Leia mais

Guia de Inicialização para o Windows

Guia de Inicialização para o Windows Intralinks VIA Versão 2.0 Guia de Inicialização para o Windows Suporte 24/7/365 da Intralinks EUA: +1 212 543 7800 Reino Unido: +44 (0) 20 7623 8500 Consulte a página de logon da Intralinks para obter

Leia mais

Conecta S_Line. 2.2 Downloads Para instalar o Conecta S_Line, basta acessar www.sline.com.br/downloads.aspx

Conecta S_Line. 2.2 Downloads Para instalar o Conecta S_Line, basta acessar www.sline.com.br/downloads.aspx 1 Introdução O Conecta S_Line permite que o laboratório envie à Central S_Line os resultados de exames gerados pelo Sistema de Informação Laboratorial (LIS) em forma de arquivos digitais. Todo o processo

Leia mais

Seu manual do usuário KAPERSKY ANTI-VIRUS MOBILE 6.0 http://pt.yourpdfguides.com/dref/3704975

Seu manual do usuário KAPERSKY ANTI-VIRUS MOBILE 6.0 http://pt.yourpdfguides.com/dref/3704975 Você pode ler as recomendações contidas no guia do usuário, no guia de técnico ou no guia de instalação para KAPERSKY ANTI- VIRUS MOBILE 6.0. Você vai encontrar as respostas a todas suas perguntas sobre

Leia mais

1. Usar o scanner IRISCard

1. Usar o scanner IRISCard O Guia Rápido do Usuário ajuda você a instalar e começar a usar scanners IRISCard Anywhere 5 e IRISCard Corporate 5. Os softwares fornecidos com esses scanners são: - Cardiris Pro 5 e Cardiris Corporate

Leia mais

Linguagem de Programação III Aula 2 Revisão Parte II

Linguagem de Programação III Aula 2 Revisão Parte II Linguagem de Programação III Aula 2 Revisão Parte II Prof. Moser Fagundes Curso Técnico em Informática (Modalidade Integrada) Instituto Federal Sul-Rio-Grandense (IFSul) Campus Charqueadas Revisão de PHP

Leia mais

Manual de referência do HP Web Jetadmin Database Connector Plug-in

Manual de referência do HP Web Jetadmin Database Connector Plug-in Manual de referência do HP Web Jetadmin Database Connector Plug-in Aviso sobre direitos autorais 2004 Copyright Hewlett-Packard Development Company, L.P. A reprodução, adaptação ou tradução sem permissão

Leia mais

CA Nimsoft Monitor. Guia do Probe Monitoramento de conectividade de rede. net_connect série 3.0

CA Nimsoft Monitor. Guia do Probe Monitoramento de conectividade de rede. net_connect série 3.0 CA Nimsoft Monitor Guia do Probe Monitoramento de conectividade de rede net_connect série 3.0 Aviso de copyright do CA Nimsoft Monitor Este sistema de ajuda online (o Sistema ) destina-se somente para

Leia mais

Manual de Instalação: Agente do OCS Inventory NG

Manual de Instalação: Agente do OCS Inventory NG Manual de Instalação: Agente do OCS Inventory NG Abril 2013 Sumário 1. Agente... 1 2. Onde instalar... 1 3. Etapas da Instalação do Agente... 1 a. Etapa de Instalação do Agente... 1 b. Etapa de Inserção

Leia mais

FileMaker Pro 13. Guia de configuração da instalação em rede

FileMaker Pro 13. Guia de configuração da instalação em rede FileMaker Pro 13 Guia de configuração da instalação em rede 2007-2013 FileMaker, Inc. Todos os direitos reservados. FileMaker Inc. 5201 Patrick Henry Drive Santa Clara, Califórnia 95054 FileMaker e Bento

Leia mais

PL/SQL Developer. Solução para Ambiente de Desenvolvimento Integrado Oracle

PL/SQL Developer. Solução para Ambiente de Desenvolvimento Integrado Oracle Solução para Ambiente de Desenvolvimento Integrado Oracle PL/SQL Developer é um ambiente de desenvolvimento integrado (IDE) que foi especialmente destinado ao desenvolvimento de programas armazenados em

Leia mais

Universidade Federal de Minas Gerais Escola de Engenharia Departamento de Engenharia Eletrônica

Universidade Federal de Minas Gerais Escola de Engenharia Departamento de Engenharia Eletrônica Universidade Federal de Minas Gerais Escola de Engenharia Departamento de Engenharia Eletrônica Disciplina: Automação em Tempo Real (ELT012) Data: 17/04/2008 Professor: Luiz T. S. Mendes Guia prático para

Leia mais

Guia de instalação Command WorkStation 5.5 com o Fiery Extended Applications 4.1

Guia de instalação Command WorkStation 5.5 com o Fiery Extended Applications 4.1 Guia de instalação Command WorkStation 5.5 com o Fiery Extended Applications 4.1 Sobre o Fiery Extended Applications O Fiery Extended Applications (FEA) 4.1 é um pacote dos seguintes aplicativos para uso

Leia mais

Manual de Instalação

Manual de Instalação Manual de Instalação Produto: n-client MSI Versão: 4.2.3 Versão do Doc.: 1.0 Autor: Aline Della Justina Data: 19/11/2010 Documento destinado à: Clientes e Parceiros Alterado por: Release Note: Detalhamento

Leia mais

INTRODUÇÃO. A SKA preparou este documento técnico com o objetivo de auxiliar seus clientes a realizar a instalação do SolidWorks 2010.

INTRODUÇÃO. A SKA preparou este documento técnico com o objetivo de auxiliar seus clientes a realizar a instalação do SolidWorks 2010. Guia de Instalação do SolidWorks 2010 INTRODUÇÃO A SKA preparou este documento técnico com o objetivo de auxiliar seus clientes a realizar a instalação do SolidWorks 2010. O SolidWorks pode ser instalado

Leia mais

Gerenciador de Referências. EndNote. Nonato Ribeiro Biblioteca de Ciências e Tecnologia (UFC)

Gerenciador de Referências. EndNote. Nonato Ribeiro Biblioteca de Ciências e Tecnologia (UFC) Gerenciador de Referências EndNote Nonato Ribeiro Biblioteca de Ciências e Tecnologia (UFC) Pesquisa na Web of Science O que é o EndNote? Funcionalidades da ferramenta Como incluir citações no Word usando

Leia mais

Manual de SQL. Tutorial Utilizar SQL em 4D Comandos SQL Regras de sintaxe Transações Funções Anexos Lista alfabética dos comandos

Manual de SQL. Tutorial Utilizar SQL em 4D Comandos SQL Regras de sintaxe Transações Funções Anexos Lista alfabética dos comandos Manual de SQL Tutorial Utilizar SQL em 4D Comandos SQL Regras de sintaxe Transações Funções Anexos Lista alfabética dos comandos Tutorial Introdução Receber o resultado de um pedido SQL em uma variável

Leia mais

Manual de SQL. Tutorial Utilizar SQL em 4D Comandos SQL Regras de sintaxe Transações Funções Anexos Lista alfabética dos comandos

Manual de SQL. Tutorial Utilizar SQL em 4D Comandos SQL Regras de sintaxe Transações Funções Anexos Lista alfabética dos comandos Manual de SQL Tutorial Utilizar SQL em 4D Comandos SQL Regras de sintaxe Transações Funções Anexos Lista alfabética dos comandos Tutorial Introdução Receber o resultado de um pedido SQL em uma variável

Leia mais

Andarta - Guia de Instalação. Guia de Instalação

Andarta - Guia de Instalação. Guia de Instalação Guia de Instalação 29 de setembro de 2010 1 Sumário Introdução... 3 Os Módulos do Andarta... 4 Instalação por módulo... 6 Módulo Andarta Server... 6 Módulo Reporter... 8 Módulo Agent... 9 Instalação individual...

Leia mais

INTRODUÇÃO. A SKA preparou este documento técnico com o objetivo de auxiliar seus clientes a realizar a instalação do SolidWorks 2009.

INTRODUÇÃO. A SKA preparou este documento técnico com o objetivo de auxiliar seus clientes a realizar a instalação do SolidWorks 2009. Guia de Instalação do SolidWorks 2009 INTRODUÇÃO A SKA preparou este documento técnico com o objetivo de auxiliar seus clientes a realizar a instalação do SolidWorks 2009. O SolidWorks pode ser instalado

Leia mais

Aula Extra Conexão ODBC para aplicações Delphi 7 que usam SQL Server 2005

Aula Extra Conexão ODBC para aplicações Delphi 7 que usam SQL Server 2005 Nome Número: Série Aula Extra Conexão ODBC para aplicações Delphi 7 que usam SQL Server 2005 Proposta do projeto: Competências: Compreender a orientação a objetos e arquitetura cliente-servidor, aplicando-as

Leia mais

4 Criação de macros e introdução à linguagem VBA

4 Criação de macros e introdução à linguagem VBA 4 Criação de macros e introdução à linguagem VBA Vinicius A. de Souza va.vinicius@gmail.com São José dos Campos, 2011. 1 Sumário Tópicos em Microsoft Excel 2007 Introdução à criação de macros...3 Gravação

Leia mais

Manual de Instalação EDIÇÃO 1.0

Manual de Instalação EDIÇÃO 1.0 Editor Rápido ipldk Manual de Instalação EDIÇÃO 1.0 HISTÓRICO DE REVISÃO Edição Data Descrição das Alterações Versão S/W Versão MPB Edição 1 Out/2006 Lançamento Inicial C.7Aa ~ C.7Aa - i - Conteúdo 1.

Leia mais

FileMaker Pro 14. Guia de configuração da instalação em rede

FileMaker Pro 14. Guia de configuração da instalação em rede FileMaker Pro 14 Guia de configuração da instalação em rede 2007-2015 FileMaker, Inc. Todos os direitos reservados. FileMaker Inc. 5201 Patrick Henry Drive Santa Clara, Califórnia 95054 FileMaker e FileMaker

Leia mais

SED 2.0. Guia Rápido. Módulo 1 Servidor de OCR Sistema Eletrônico de Documentos. Nesta Edição

SED 2.0. Guia Rápido. Módulo 1 Servidor de OCR Sistema Eletrônico de Documentos. Nesta Edição SED 2.0 Guia Rápido Módulo 1 Servidor de OCR Sistema Eletrônico de Documentos Nesta Edição 1 Parâmetros da Digitalização 2 Configuração do MODO AVANÇADO 3 Adicionando Documento ao Cadastro 4 Utilizando

Leia mais

Guia de Atualização do Windows XP para Windows 7

Guia de Atualização do Windows XP para Windows 7 Guia de Atualização do Windows XP para Windows 7 Conteúdo Etapa 1: Saiba se o computador está pronto para o Windows 7... 3 Baixar e instalar o Windows 7 Upgrade Advisor... 3 Abra e execute o Windows 7

Leia mais

Índice. Manual Backup Online. 03 Capítulo 1: Visão Geral

Índice. Manual Backup Online. 03 Capítulo 1: Visão Geral Índice 03 Capítulo 1: Visão Geral 04 Capítulo 2: Conta de Usuário 04 Criação 08 Edição 09 Grupo de Usuários 10 Informações da Conta 12 Capítulo 3: Download do Backup Online Embratel 16 Capítulo 4: Cópia

Leia mais

Criando Banco de Dados, Tabelas e Campos através do HeidiSQL. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

Criando Banco de Dados, Tabelas e Campos através do HeidiSQL. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011 Criando Banco de Dados, Tabelas e Campos através do HeidiSQL Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011 Edição 2 Pedreiros da Informação Criando Banco de Dados, Tabelas e Campos através do HeidiSQL

Leia mais

MODEM USB LTE LU11. Manual do Usuário

MODEM USB LTE LU11. Manual do Usuário MODEM USB LTE LU11 Manual do Usuário 2 Tabela de Conteúdo Manual do Usuário... 1 1 Introdução... 3 2 Instalação... 4 3 Descrição da Interface do Cliente... 5 3 Conexão... 8 5 Mensagens SMS... 10 6 Contatos...

Leia mais