Histórico da Página
| Button | ||||
|---|---|---|---|---|
|
API de Window para Geração de Gráficos (003)
Nome Físico: utp/wutapi011.w
Nome do Include com Parâmetros: utp/utapi011.i
Versão de Integração: 003
Objetivo:
Criação de gráficos.
Pré-requisitos:
Homologado para Windows 7 e inferiores.Considerações Gerais
- Esse programa utiliza o OCX ChartFx para geração dos gráficos, para o seu correto funcionamento é necessário instalar o OCX utilizando um dos arquivos .bat existentes no diretório interfac/chartfx do produto;
- O programa pode ser executado a partir da API utapi011 ou pode ser executado diretamente por outro programa;
- A include {utp/utapi011.i} contém as definições das Temp-Table´s que podem ser passadas como parâmetro para a geração dos gráficos;
- Só podem ser construídos no máximo 2 gráficos na mesma aplicação, vide exemplo;
- Maiores informações em relação aos valores e descrições dos atributos podem ser encontradas no HELP do Chart FX(chartfx_com_win_api.chm) que encontra-se no diretório interfac/chartfx da instalação do produto;
- Para visualizar o conteúdo do arquivo chartfx_com_win_api.chm é necessário copiá-lo para um diretório local ou realizar os procedimentos descritos no endereço http://support.microsoft.com/kb/896358;
- Para obter informações sobre as temp-tables que podem ser passadas como parâmetro, deve-se consultar o arquivo docapi/utapi011.doc que encontra-se no diretório de instalação do produto;
- Todos os parâmetros que referem-se a cor devem utilizar os valores gerados ou pela função Progress RGB-VALUE ou pela função interna da API fnc_convColor que faz a conversão das cores disponíveis na utapi011 para o valor RGB adequado;
- Sempre que o desenvolvedor optar por construir gráficos sem utilizar as temp-tables, a responsabilidade de validar os dados informados não é da API;
- Todas as procedures da API retornam, através do RETURN-VALUE, “OK” quando a procedure foi executada com sucesso e “NOK” no caso de algum erro.
- Existe uma limitação do componente ChartFx em relação a impressão de gráficos com o tipo “Pizza”. Os tipos de gráficos (campo GraphType) 1 e 2 não devem ser utilizados como opção inicial de impressão, deve ser utilizado outro tipo de gráfico. Caso haja a necessidade que o gráfico seja do tipo pizza, deve ser setado no desenvolvimento do programa outro tipo de gráfico e após a geração pode ser mudado o gráfico para o tipo pizza, utilizando a opção “Gallery” na guia de controle do componente.
Procedures
Funções
INPUT iStyle AS INTEGER
INPUT cType ASParâmetros de entrada
Temp table tt-atributos
TEMP-TABLE tt- |
atributos | |||
Atributo | Tipo | Formato | Valor Inicial |
i-versao-integracao
integer
">>9"
c-assunto
Char
c-corpo
Char
c-local
Char
c-categoria
Char
dt-dataini
Date
“99/99/9999”
dt-horaini
Char
l-lembrete
Logical
No
l-diatodo
Logical
No
i-duracao
Integer
“9999”
i-horaaviso
Integer
i-tipohorario
integer
c-convidadosreq
Char
c-convidadosopc
Char
c-convidadosrec
Char
i-importancia
Integer
i-tipo
Integer
l-periodico
Logical
No
i-tipoperiodo
Integer
i-intervalo
Integer
i-diassemana
Integer
i-mesdoano
Integer
i-diadomes
Integer
dt-fimperiodico
date
i-inicioocorrencia
integer
i-ocorrencias
integer
* ver Principais Validações da Temp-Table tt-reuniao
Atributo
Descrição
i-versao-integracao
Campo usado para verificar compatibilidade entre programa e api
c-assunto
Campo referente ao assunto do compromisso
c-corpo
Texto que seguira junto com o compromisso, é o corpo da mensagem
c-local
Local do compromisso
c-categoria
Categorias que o compromisso pertence separadas por “;”
dt-dataini
Data inicial do compromisso em formato mm/dd/yyyy
c-horaini
Hora de início do compromisso em formato hh:mm:ss
i-lembrete
Define se deve ser habilitado o lembrete para aviso prévio do compromisso
i-diatodo
Define se o compromisso ocupa todo o dia (hora de início deve ser informada)
i-duracao
Duração, em minutos, do compromisso.
i-horaaviso
Define o tempo, em minutos, para aviso prévio antes do compromisso (a função lembrete deverá estar ativada)
i-tipohorario
Define como deve ser mostrado o horário 0-Disponível 1-Provisório 2- Ocupado 3-Fora do escritório
c-convidadosreq
Convidados requeridos separados por “;”, podendo ser usado o nome do catálogo de endereços ou endereço de e-mail. *
c-convidadosopc
Convidados opcionais separados por “;”, podendo ser usado o nome do catálogo de endereços ou endereço de e-mail.*
c-convidadosrec
Convidados do tipo recurso separados por “;”, podendo ser usado o nome do catálogo de endereços ou endereço de e-mail. *
i-importancia
Importância da reunião 0-baixa 1-normal 2-alta
i-tipo
Tipo do compromisso 0-normal 1-pessoal 2-privado 3-confidencial.
i-periodico
Define se o compromisso é do tipo periódico, ou seja, se o mesmo tem várias ocorrências. **
i-tipoperiodo
Define o tipo de período a ser usado no compromisso.**
i-intervalo
Define o intervalo entre as ocorrências, como 2 meses 3 dias dependendo do tipo da mesma. **
i-diassemana
Máscara que define o(s) dias(s) de semana a serem usados para o compromisso. **
i-mesdoano
Define o mês de 1 a 12 para o compromisso. **
i-diadomes
Define o dia do mês para o compromisso. **
dt-fimperiodico
Data do fim das ocorrências de um compromisso periódico, sobrescreve o valor da variável i-ocorrências. **
i-inicioocorrencia
Define o dia de início de ocorrência para certos tipos de períodos como terceira (segunda) de cada mês. **
i-ocorrencias
Número de ocorrências de um compromisso periódico. **
*O contato deverá existir no catálogo de endereços
** Verificar tópico referente a compromissos periódicos em “Outras informações”.
Temp-Table tt-erros: possui todos os erros encontrados pela API.
TEMP-TABLE tt-erros
Atributo
Tipo
Formato
Valor Inicial
cod-erro
Integer
desc-erro
Character
x(256)
* ver Definição Temp-Table tt-erros
Atributo | Descrição |
cod-erro | Número do erro |
desc-erro | Descrição do erro ocorrido da ut-msgs |
NumGraph | Integer | 1 | |
Cod-Versao-Integracao | Integer | ||
GraphTitle | Character | ||
GraphTitleColor | Integer | ||
GraphType | Integer | ||
GraphStyle | Integer | ||
LabelsColor | Integer | ||
LeftTitle | Character | ||
LeftTitleStyle | Integer | 0 | |
LeftTitleColor | Integer | ||
BottomTitle | Character | ||
BottomTitleColor | Integer | ||
DataLabels | Integer | 0 | |
DataLabelsColor | Integer | ? | |
LimitLines | Integer | 0 | |
LimitLinesColor | Integer | ||
LimitHighLabel | Character | ||
LimitLowLabel | Character | ||
LimitHighValue | Decimal | ||
LimitLowValue | Decimal | ||
LineStats | Integer | ||
MeanLineColor | Integer | ||
MinMaxLinesColor | Integer | ||
StDevLinesColor | Integer | ||
BestFitLinesColor | Integer | ||
CurveType | Integer | ||
CurveColor | Integer | ||
ThickLines | Integer | ||
GridStyle | Integer | 0 | |
GridLineStyle | Integer | 0 | |
TitleFontName | Character | Arial | |
TitleFontSize | Integer | 200 | |
TitleFontStyle | Integer | 0 | |
OtherFontName | Character | Arial | |
OtherFontSize | Integer | 150 | |
OtherFontStyle | Integer | 0 | |
LabelFontName | Character | Arial | |
LabelFontSize | Integer | 100 | |
LabelFontStyle | Integer | 0 | |
LegendFontName | Character | Arial | |
LegendFontSize | Integer | 100 | |
LegendFontStyle | Integer | 0 | |
LegendPos | Integer | 0 |
Atributo | Descrição |
NumGraph | Identifica o gráfico a que pertencem os atributos do registro. (1 ou 2) |
Cod-Versao-Integracao | Indica a versão atual da API |
GraphTitle | Título do Gráfico. |
GraphType | Tipo do gráfico. *Ver tabela Tipos de gráficos |
GraphStyle | Estilo do Gráfico. *Ver tabela Estilos de Gráficos |
LabelsColor | Cor dos Labels do gráfico. *Ver Tabela de Cores |
LeftTitle | Título do eixo das Ordenadas (Y) |
LeftTitleStyle | Estilo do título do eixo das ordenadas (Y). *Ver tabela Estilos do Título das Ordenadas |
LeftTitleColor | Cor do título do eixo das Ordenadas (Y). *Ver tabela de Cores |
BottomTitle | Título do eixo das Abscissas (X) |
BottomTitleColor | Cor do título das Abscissas(X). *Ver Tabela de Cores |
DataLabels | Habilita a visualização de labels de valores para todos os gráficos do tipo 2D exceto para o tipo Pizza. *Ver Tabela de Labels de Valores |
DataLabelsColor | Cor dos labels de valores. *Ver Tabela de Cores. |
LimitLines | Linhas que definem limites no gráfico. |
LimitLinesColor | Cor das linhas de limites. *Ver Tabela de Cores |
LimitHighLabel | Label da linha de limite superior |
LimitLowLabel | Label da linha de limite inferior |
LimitHighValue | Valor para a linha de limite superior |
LimitLowValue | Valor para a linha de limite inferior |
LineStats | Define linhas estatísticas. *Ver Tabela de Linhas de Estatística |
MeanLineColor | Cor da linha de meio. *Ver Tabela de Cores |
MinMaxLinesColor | Cor das linhas de valores máximo e mínimo. *Ver Tabela de Cores |
StDevLinesColor | Cor da linha de desvio padrão. *Ver Tabela de Cores |
BestFitLinesColor | Cor das linhas de nível. *Ver tabela de Cores |
CurveType | Tipo de Curvas. LineStats deve possuir valor entre 16 e 31. *Ver Tabela de Curvas |
CurveColor | Cor da curva. *Ver Tabela de Cores |
ThickLines | Linhas espessas (1) ou não (0 default) |
GridStyle | Estilo do Grid do gráfico. |
GridLineStyle | Estilo da linha do Grid do gráfico. |
TitleFontName | Nome da fonte do Título. |
TitleFontSize | Tamanho da fonte do Título. |
TitleFontStyle | Estilo da fonte do título do gráfico. *Ver tabela estilo de fontes. |
OtherFontName | Nome da fonte das strings que não pertencem aos títulos. |
OtherFontSize | Tamanho da fonte das strings que não pertencem aos títulos. |
OtherFontStyle | Estilo da fonte das strings que não pertencem aos títulos. *Ver tabela estilo de fontes. |
LabelFontName | Nome da fonte dos Labels. |
LabelFontSize | Tamanho da fonte dos Labels. |
LabelFontStyle | Estilo da fonte do título dos Labels. *Ver tabela estilo de fontes. |
LegendFontName | Nome da fonte das Legendas. |
LegendFontSize | Tamanho da fonte das Legendas. |
LegendFontStyle | Estilo da fonte do título das Legendas. *Ver tabela estilo de fontes. |
LegendPos | Posição das legendas do gráfico. *Ver tabela de Posições da Legenda. |
LeftTitleStyle | Estilo da fonte das Legendas. *Ver tabela Estilo de Legendas. |
Temp-table tt-points-2: Na Temp-Table tt-points são definidas as características comuns aos points do gráfico. Um point refere-se a um período do gráfico, ou seja, ao intervalo entre dois valores do eixo X. Também é fundamental que a cada novo set, o valor do campo NumPoint inicie em 1
TEMP-TABLE tt-points-2 | |||
Atributo | Tipo | Formato | Valor Inicial |
NumPoint | Integer | ||
NumGraph | Integer | 1 | |
LabelText | Character | “” | |
Atributo | Descrição |
NumPoint | Número do Point. |
NumGraph | Identifica a qual gráfico pertencem os atributos do registro. |
LabelText | Label do Point. |
Temp-table tt-sets: Na Temp-Table tt-sets são definidas as características dos sets do gráfico. Um set refere-se aos valores representados em um point. Existe limite de valores para o número de sets em relação ao tipo de gráfico, para maiores informações sobre estas limitações consulte o HELP do Chart FX(chartfx_com_win_api.chm) que encontra-se no diretório interfac/chartfx da instalação do produto.
TEMP-TABLE tt-sets | |||
Atributo | Tipo | Formato | Valor Inicial |
NumSet | Integer | ||
NumGraph | Integer | 1 | |
LegendText | Character | ||
ColorSet | Integer | ||
Atributo | Descrição |
NumSet | Número do Set. |
NumGraph | Identifica a qual gráfico pertencem os atributos do registro. |
LegendText | Legenda do Set. |
ColorSet | Cor do Set. *Ver tabela de Cores. |
TEMP-TABLE tt-reuniao | |||
Atributo | Tipo | Formato | Valor Inicial |
i-versao-integracao | integer | ">>9" | |
c-assunto | Char | ||
c-corpo | Char | ||
c-local | Char | ||
c-categoria | Char | ||
dt-dataini | Date | “99/99/9999” | |
dt-horaini | Char | ||
l-lembrete | Logical | No | |
l-diatodo | Logical | No | |
i-duracao | Integer | “9999” | |
i-horaaviso | Integer | ||
i-tipohorario | integer | ||
c-convidadosreq | Char | ||
c-convidadosopc | Char | ||
c-convidadosrec | Char | ||
i-importancia | Integer | ||
i-tipo | Integer | ||
l-periodico | Logical | No | |
i-tipoperiodo | Integer | ||
i-intervalo | Integer | ||
i-diassemana | Integer | ||
i-mesdoano | Integer | ||
i-diadomes | Integer | ||
dt-fimperiodico | date | ||
i-inicioocorrencia | integer | ||
i-ocorrencias | integer | ||
* ver Principais Validações da Temp-Table tt-reuniao
Atributo | Descrição |
i-versao-integracao | Campo usado para verificar compatibilidade entre programa e api |
c-assunto | Campo referente ao assunto do compromisso |
c-corpo | Texto que seguira junto com o compromisso, é o corpo da mensagem |
c-local | Local do compromisso |
c-categoria | Categorias que o compromisso pertence separadas por “;” |
dt-dataini | Data inicial do compromisso em formato mm/dd/yyyy |
c-horaini | Hora de início do compromisso em formato hh:mm:ss |
i-lembrete | Define se deve ser habilitado o lembrete para aviso prévio do compromisso |
i-diatodo | Define se o compromisso ocupa todo o dia (hora de início deve ser informada) |
i-duracao | Duração, em minutos, do compromisso. |
i-horaaviso | Define o tempo, em minutos, para aviso prévio antes do compromisso (a função lembrete deverá estar ativada) |
i-tipohorario | Define como deve ser mostrado o horário 0-Disponível 1-Provisório 2- Ocupado 3-Fora do escritório |
c-convidadosreq | Convidados requeridos separados por “;”, podendo ser usado o nome do catálogo de endereços ou endereço de e-mail. * |
c-convidadosopc | Convidados opcionais separados por “;”, podendo ser usado o nome do catálogo de endereços ou endereço de e-mail.* |
c-convidadosrec | Convidados do tipo recurso separados por “;”, podendo ser usado o nome do catálogo de endereços ou endereço de e-mail. * |
i-importancia | Importância da reunião 0-baixa 1-normal 2-alta |
i-tipo | Tipo do compromisso 0-normal 1-pessoal 2-privado 3-confidencial. |
i-periodico | Define se o compromisso é do tipo periódico, ou seja, se o mesmo tem várias ocorrências. ** |
i-tipoperiodo | Define o tipo de período a ser usado no compromisso.** |
i-intervalo | Define o intervalo entre as ocorrências, como 2 meses 3 dias dependendo do tipo da mesma. ** |
i-diassemana | Máscara que define o(s) dias(s) de semana a serem usados para o compromisso. ** |
i-mesdoano | Define o mês de 1 a 12 para o compromisso. ** |
i-diadomes | Define o dia do mês para o compromisso. ** |
dt-fimperiodico | Data do fim das ocorrências de um compromisso periódico, sobrescreve o valor da variável i-ocorrências. ** |
i-inicioocorrencia | Define o dia de início de ocorrência para certos tipos de períodos como terceira (segunda) de cada mês. ** |
i-ocorrencias | Número de ocorrências de um compromisso periódico. ** |
*O contato deverá existir no catálogo de endereços
** Verificar tópico referente a compromissos periódicos em “Outras informações”.
Temp-table tt-dados: Informações referentes aos dados do gráfico. Um dado do gráfico deve estar obrigatoriamente relacionado a um point e a um set, portanto para que um registro da tt-dados exista, devem existir relacionamentos com a tt-points e tt-sets. Ou seja, um dado deve pertencer a um point e a um set. Também é fundamental que a cada novo set, o valor do campo NumPoint inicie em 1.
TEMP-TABLE tt-dados | |||
Atributo | Tipo | Formato | Valor Inicial |
NumGraph | Integer | 1 | |
NumPoint | Integer | ||
NumSet | Integer | ||
GraphData | Decimal | 0 | |
Atributo | Descrição |
NumGraph | Identifica a qual gráfico pertencem os atributos do registro. |
NumPoint | Número do Point. |
NumSet | Número do Set. |
GraphData | Valor do dado do gráfico. |
Temp-table tt-erros: A tt-erros é uma tabela de retorno de dados referentes aos erros encontrados na manipulação dos dados das tabelas de entrada. A tt-erros retorna dados através de um registro contendo o código do erro e a sua descrição.
Obs.: Após a chamada feita à API é imprescindível tratar os erros retornados caso existam.
TEMP-TABLE tt-erros | |||
Atributo | Tipo | Formato | Valor Inicial |
Cod-Erro | Integer | ||
Desc-Erro | Character | ||
Atributo | Descrição |
Cod-Erro | Número do erro. Seqüencial dentro da temp-table. |
Desc-Erro | Descrição do erro. |
Execução
A geração de gráficos pode ser feita de duas maneiras:
- Aprimeira é criando as informações nas temp-tables da mesma maneira como é feito para a utapi011. Após criar as informações nas temp-tables é necessário executar a API de forma persistente, executar as procedures que passam as temp-tables para a API e por último executar a procedure pi-inicializar.
Sintaxe:
| Bloco de código | ||
|---|---|---|
| ||
Def var hwutapi011 as handle no-undo.
RUN utp/wutapi011.w PERSISTENT SET hwutapi011.
RUN pi-set-tt-atributos IN hwutapi011(INPUT TABLE tt-atributos).
RUN pi-set-tt-points-2 IN hwutapi011 (INPUT TABLE tt-points-2).
RUN pi-set-tt-sets IN hwutapi011 (INPUT TABLE tt-sets).
RUN pi-set-tt-dados IN hwutapi011 (INPUT TABLE tt-dados).
RUN dispatch IN hwutapi011 (INPUT "INITIALIZE").
RUN pi-inicializar IN hwutapi011.
IF RETURN-VALUE = "NOK" THEN DO:
RUN pi-get-tt-erros IN hwutapi011(OUTPUT TABLE tt-erros).
DELETE OBJECT hwutapi011.
RETURN "NOK".
END.
IF VALID-HANDLE(hwutapi011) THEN DO:
WAIT-FOR CLOSE OF hwutapi011.
END.
IF VALID-HANDLE(hwutapi011) THEN DO:
DELETE OBJECT hwutapi011.
END. |
| Expandir | |||||
|---|---|---|---|---|---|
| |||||
|
A segunda maneira de criar os gráficos é o desenvolvedor executar diretamente os métodos da API. Nesse caso não será realizada nenhuma validação.
Sintaxe:
| Bloco de código | ||
|---|---|---|
| ||
Def var hwutapi011 as handle no-undo.
RUN utp/wutapi011.w PERSISTENT SET hwutapi011.
RUN dispatch IN hwutapi011 (INPUT "INITIALIZE").
IF VALID-HANDLE(hwutapi011) THEN DO:
WAIT-FOR CLOSE OF hwutapi011.
END.
IF VALID-HANDLE(hwutapi011) THEN DO:
DELETE OBJECT hwutapi011.
END. |
| Expandir | |||||
|---|---|---|---|---|---|
| |||||
|
Referências
No retorno da execução do utp/wutapi011
Execução
O programa utp/utapi028.p irá executar 2 validações básicas:
O programa também executará outras validações referentes a erros específicos que serão abordados na seção “Possíveis erros” deste documento.
Cabe ao programa de origem, verificar a consistência do registro que está sendo enviado.
* ver descrições da Temp-Table tt-reuniao
Parâmetros de Saída
No retorno da execução do utp/utapi028.p, será retornado um dos valores via RETURN-VALUE:
NOK:
Envio do compromisso interrompido, os dados passados como parâmetros, através das Temp-Tables, são inconsistentes ou foram insuficientes;Retorna o código e a descrição do erro.
OK:
Criação do compromisso com sucessoO gráfico será exibido através do programa utp/wutapi011.w, que roda na mesma seção Progress do programa que executou a API. O programa que executou a utapi011 ficará aguardando o encerramento do programa wutapi011.w para encerrar sua execução.
No caso do retorno ser NOK, todos os erros encontrados serão retornados através da Temp-Table tt-erros.
Outras Informações
Compromissos periódicos:
Os compromissos periódicos podem ser dos seguintes tipos:
Definições das Temp-Tables a serem utilizadas pela API utp/utapi028.p
Exemplo de Utilização
| Bloco de código | ||
|---|---|---|
| ||
{utp/utapi028.i}
CREATE tt-reuniao.
ASSIGN c-assunto = "Assunto da mensagem"
c-corpo = " Aqui vai um grande texto para o corpo da mensagem"
c-local = " Local qualquer"
dt-dataini = 12/23/2002
l-lembrete = FALSE
c-horaini = "00:00:00"
l-diatodo = FALSE
i-duracao = 800
i-horaaviso = 50
i-importancia = 0
i-tipohorario = 3
c-convidadosreq = "[email protected]"
c-convidadosopc = "João da Silva"
c-convidadosrec = "Luiz Cesar Medeiros Filho;Joao da Silva"
i-tipo =2
c-categoria = "Importante"
/* inicia periódico */
l-periodico = TRUE
i-tipoperiodo = 1
i-diassemana = 127
i-inicioocorrencia = 2
i-intervalo = 2.
run utp/utapi028.p persistent set h-utapi028.
run pi-execute in h-utapi028 (input table tt-reuniao,output table tt-erros).
for each tt-erros:
disp "Erro: " tt-erros.cod-erro skip
"Descrição: " tt-erros.desc-erro format "x(50)".
end.
delete procedure h-utapi028.
|