FastCube 2.0 Programmer Manual



Documentos relacionados
1. REFERÊNCIA DE MACROS DO MICROSOFT ACCESS AÇÕES DE MACRO E OS PARÂMETROS DE CADA UMA :

Plano de Aula - Access cód Horas/Aula

UNIVERSIDADE FEDERAL DE PELOTAS. Índice

Simulado de Linguagem de Programação Java

CONTEÚDO DO HP ALM 11.5 ADOPTION READINESS TOOL (ART)

Manual do Professor AVA - Moodle/Unesp (versão 3.0) Grupos e agrupamentos

Fireworks CS6 Plano de Aula - 16 Aulas (Aulas de 1 Hora).

Plano de Aula - Access cód Horas/Aula

Parte IV Como projetar um layout de página

REITORA Ulrika Arns. VICE-REITOR Almir Barros da Silva Santos Neto. DIRETOR DO NTIC Leonardo Bidese de Pinho

Word 2010 Avançado Plano de Aula 24 Aulas (aulas de 1 Hora)

Construção de Aplicações de Acesso a Banco de Dados Parte II (Relação Mestre/Detalhe)

Word 2013 Plano de Aula 24 Aulas (Auluas de 1 Hora)

Plano de Aula - Word 2013 Avançado - cód Horas/Aula

APRESENTAÇÃO... 3 IGEO... 3 ACESSO AO SISTEMA... 4 MANUAL DO USUÁRIO... 4 FUNCIONALIDADES... 5 NAVEGAÇÃO E CONSULTA... 5 MANIPULAÇÃO DE CAMADAS...

Listagens & Relatórios

1 - Obter as séries temporais de um ponto (pág. 1/2)

A Linguagem Lua Lua Puc-Rio

Sumário Objetivos Estudo de caso 1 Criação de template Exercício 1 Detalhamento da peça Exemplo... 23

CRIAÇÃO DE TABELAS NO ACCESS. Criação de Tabelas no Access

APRESENTAÇÃO DO THUNDERBIRD MANUAL DO USUÁRIO CORREIO ELETRÔNICO

Especificações e limites de planilha e de pasta de trabalho

Aula 11: Desvios e Laços

Guia do usuário Dell Display Manager

Sistema de Atendimento Telefônico Automático. Manual do Usuário

Adicionar uma figura, como um botão Submeter, a um formulário

Definições das opções Ferramentas, Opções Ferramentas, Opções Opções do Sistema Propriedades do Documento Opções do Sistema

Manual do Usuário. VpetConverter Ferramenta para adequação de documentos para Petições Eletrônicas.

aplicação arquivo Condições Gerais de Utilização

Estatísticas e Relatórios. Treinamento OTRS Help Desk

Manual de Programação TED1000 versão TC100 Ethernet

Jornal do Padre. Instruções para usar este modelo. Continuação dos artigos nas páginas. Usando estilos neste modelo

Versão do documento agosto Usando recursos avançados de geração de relatórios Soluções Ariba On-Demand

Modularidade. Objetivos: Introduzir noções básicas de modularidade. Funções e procedimentos

Tabelas. Banco de Dados I MySQL

Aula 01 Excel Prof. Claudio Benossi

Boletins Informativos

Introdução a Tecnologia da Informação

Instruções de uso da ferramenta Cálculo de investimentos

Avisos legais KYOCERA Document Solutions Inc.

Exibe configurações do otimizador que podem ser editas pelo usuário. Cada otimizador possui configurações diferentes.

Aula 01 Microsoft Excel 2016

Sumário APRESENTAÇÃO...3 ACESSO AO SISTEMA...4 FUNCIONALIDADES...5 SIG-PCJ... 3 ACESSANDO O SISTEMA VIA WEB...4 MANUAL DO USUÁRIO...

Oracle Database 11g: Introdução à Linguagem SQL Novo

Writer 3.4 Plano de Aula - 16 Aulas (Aulas de 1 Hora).

Classes o Objetos. Classes, objetos, métodos e variáveis de instância

Minicurso de JavaScript PET Sistemas de Informação Terceiro Dia Anthony Tailer. Clécio Santos. Rhauani Fazul.

Tutorial para atualização de notícias/blog

PLANO DE AULA. OBJETIVO: Conhecer os programas para editar textos: WordPad e Microsoft Office Word 2007.

Sintaxe do Pascal Simplificado Estendido de 12 novas construções em Notação EBNF (BNF estendida)

é usado para fechar a janela do são telas que podem conter textos, imagens, vídeos, sons e efeitos visuais.

Introdução ao ASP.NET

Capítulo 9 - Imagens. Imagens

Flash CC Plano de Aula - 24 Aulas (Aulas de 1 Hora).

Criação de Sessões do Blackboard Collaborate Professores

BASE DE DADOS DA ASSISTÊNCIA FARMACÊUTICA. BI Business Intelligence Componente Estratégico da Assistência Farmacêutica. MANUAL DE UTILIZAÇÃO

1 INTRODUÇÃO AO WRITER

MANUAL DO MÓDULO PRESTAÇÃO DE SERVIÇOS (ORDEM DE SERVIÇOS)

5.0. Guia Prático 5 4G. Luz de notificação 2 Inserir ou retirar a. Tecla Liga/ Desliga Aumentar/ Diminuir volume. tampa traseira. bateria.

Plano de Aula - Flash CC - cód Horas/Aula

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA DEPARTAMENTO DE INFORMÁTICA APLICADA INF INTRODUÇÃO À INFORMÁTICA

Variáveis Tipos de Dados. APROG (Civil) Aula 2

Manual Portal PADRÃO. Gerenciador de Temas: Editar Estilo. 1. Clique na aba Extensões e em seguida em Gerenciador de Temas.-

Módulos Tainacan. Estrutura

Variáveis Tipos de Dados

APÊNDICE A. Este documento tem como finalidade especificar os limites e as funcionalidades de BJIn OLAP Tool. Diagrama de Casos de Uso

Introdução à Ciência da Computação

5.0 GUIA PRÁTICO. Flash Câmera frontal 2 Carregar a bateria. Diminuir/ Aumentar volume Tecla Liga/ Desliga. Início. Visão geral. Voltar.

CENTRO PAULA SOUZA ETEC PADRE JOSÉ NUNES DIAS APLICATIVOS INFORMATIZADOS WORD 2007 PROFESSORA: ALINE PRISCILA SCHMIDT ALUNO:

Loops. Loops Simples Switches Simples Loops Encadeados Switches Encadeados Utilizando Loops e Switches

Dispositivos Apontadores e Teclado Guia do Usuário

Para acessar a TV Corporativa, deve-se informar o endereço do Servidor, barra(/) mge,

aplicativo: Índice Situação: 20/06/2017

Oracle Database 10g: Fundamentos de SQL e PL/SQL

DreamweaverCC Plano de Aula - 24 Aulas (Aulas de 1 Hora).

Plano de Aula - DreamWeaver CC - cód Horas/Aula

ESCOLA DE EDUCAÇÃO PROFISSIONAL SENAC PELOTAS CENTRO HISTORICO. gpedit.smc TÉCNICO EM INFORMATICA PRONATEC. Professor Nataniel

Access 2010 Plano de Aula - 24 Aulas (Aulas de 1 Hora).

Usando o painel do operador

Ambiente Virtual de Aprendizagem Moodle 3.0 Orientações Didático-Pedagógicas e Tutoriais. O Ambiente Moodle ferramentas e funcionalidades

Centro de Suporte. (Sistema Android) RCAMail Manual de Utilização Página 1

Criar um gráfico do início ao fim

Tabelas Dinâmicas Excel

5. NOÇÕES DE PROGRAMAÇÃO

Apostila Impress 01. Partes da Janela Principal do Impress

Fundamentos Programação

Transcrição:

FastCube 2.0 Programmer Manual

I FastCube 2.0 Programmer Manual Table of contents Chapter I Arquitetura do FastCube 2 2 Chapter II Utilizaçã o dos componentes do FastCube 5 1 Salvar... e carregar um cubo e uma fatia 5 Dados do cubo... 5 Configurações... de fatia 6 Outras configurações... 7 2 Carregamento... de dados 8 Carregamento... de um cubo a partir de uma única tabela de banco de dados 8 Configurar... campos de TfcxDataSource 10 Criar e ajustar... atributos de TfcxDataSource 11 3 Configurar... a fatia 13 Criar a estrutura... da fatia 13 Gerenciamento... de medidas 15 4 Gerenciamento... de filtros 16 5 Gerenciamento... de grupos 17 I

I

Chapter I Arquitetura do FastCube 2

Arquitetura do FastCube 2 2 A biblioteca de componentes do FastCube 2 é um conjunto de componentes visuais e nã o visuais que armazenam, manipulam e visualizam dados multidimensionais. A arquitetura do FastCube 2 é representada no diagrama a seguir: O FastCube 2 é composto dos seguintes componentes: Componentes nã o visuais: TfcxDBDataSet - componente para conectar a uma fonte de banco de dados TfcxUserDataSet - componente para conectar a uma fonte do usuário (baseado em manipuladores de eventos) TfcxDataSource - componente que vincula todas as fontes de dados do cubo e descreve os campos e atributos TfcxCube - (um cubo) o armazenamento de dados principal TfcxSlice - (uma fatia) a estrutura responsável pela apresentaçã o de dados e a preparaçã o dos dados do cubo para isso TfcxFilterManager - gerencia a filtragem dos dados do cubo para a fatia Componentes visuais principais: TfcxCubeGrid - (tabela de dados) visualiza os dados de origem do cubo

3 FastCube 2.0 Programmer Manual TfcxSliceGrid - (tabela cruzada) visualiza os dados baseada em uma estrutura de fatia e permite que os usuários manipulem os dados e a estrutura TfcxCubeGridToolbar - (barra de ferramentas da tabela de dados) contém um conjunto de botões que permitem executar ações na tabela de dados TfcxSliceGridToolbar - (barra de ferramentas da tabela cruzada) contém um conjunto de botões que permitem executar ações na tabela cruzada, na fatia e no cubo Componentes de gráfico: TfcxChart - visualiza os dados de origem do cubo como um gráfico ou diagrama TfcxChartToolbar - (barra de ferramentas do gráfico) contém um conjunto de botões que permitem executar ações no gráfico

Chapter II Utilizaçã o dos componentes do FastCube

5 FastCube 2.0 Programmer Manual 2.1 Salvar e carregar um cubo e uma fatia Os dados carregados no cubo podem ser salvos para a utilizaçã o futura. Dados salvos podem ser carregados no cubo sem a necessidade de acessar o banco de dados de origem. Assim como os dados, as configurações da fatia, grupos, filtros e gráficos também podem ser salvas. Os dados e as configurações do cubo podem ser salvos em um arquivo, fluxo ou em um campo BLOB em um banco de dados, ao usar os métodos dos componentes TfcxCube, TfcxSlice, TfcxFilterManager e TfcxChart. 2.1.1 Dados do cubo Dados do cubo (TfcxCube): function LoadFromFile(ACubeFileName: String): Boolean; Carrega os dados do cubo de um arquivo. Retorna True se o arquivo foi carregado com êxito. O cubo é limpo antes de carregar os dados. function LoadFromStream(ACubeStream: TStream): Boolean; Carrega os dados do cubo de um fluxo. Retorna True se o fluxo foi carregado com êxito. O cubo é limpo antes de carregar os dados. function AppendFromFile(ACubeFileName: String): Boolean; Anexa dados do cubo de um arquivo. Retorna True se o arquivo foi carregado com êxito. O cubo mescla os dados que já contém com os dados carregados. function AppendFromStream(ACubeStream: TStream): Boolean; Anexa dados do cubo de um fluxo. Retorna True se o fluxo foi carregado com êxito. O cubo mescla os dados que já contém com os dados carregados. procedure SaveToFile(ACubeFileName: String; AFilter: TObject = nil); Salva dados do cubo em um arquivo. Se o argumento de AFilter apontar para um objeto TfcxFilterManager, o cubo salva somente os dados que passarem pelo filtro. procedure SaveToStream(ACubeStream: TStream; ACompressionLevel: TCompressionLevel = clmax; AFilter: TObject = nil); Salva dados do cubo em um fluxo. Se o argumento de AFilter apontar para um objeto TfcxFilterManager, o cubo salva somente os dados que passarem pelo filtro. Um argumento ACompressionLevel define o nível de compactaçã o. O cubo salva as configurações de grupos e fatias junto com os dados. O cubo nã o salva o estado de filtros e as configurações de gráficos vinculadas.

Utilizaçã o dos componentes do FastCube 6 O arquivo do cubo tem uma extensã o padrã o mdc. Exemplos de código: fcxcube1.loadfromfile('c:\cube1.mdc'); fcxcube1.appendfromfile('c:\cube1.mdc'); fcxcube1.savetofile('c:\cube2.mdc'); fcxcube1.savetofile('c:\cube2filter.mdc', fcxfiltermanager1); 2.1.2 Configurações de fatia Configurações de fatia (TfcxSlice): function LoadFromFile(AFileName: String): Boolean; Carrega as configurações de fatia de um arquivo. Retorna True se o arquivo foi carregado com êxito. A fatia é redefinida antes do carregamento. Se as configurações carregadas possuirem informações sobre grupos, entã o as configurações de grupos do cubo sã o limpas antes do carregamento. Se as configurações carregadas possuirem informações sobre filtros, entã o as configurações do gerenciador de filtros sã o limpas antes do carregamento. Se as configurações carregadas possuirem informações sobre gráficos, entã o as configurações de gráfico sã o limpas antes do carregamento. function LoadFromStream(ASliceStream: TStream): Boolean; Carrega as configurações de fatia de um fluxo. Retorna True se o fluxo foi carregado com êxito. A fatia é redefinida antes do carregamento. Se as configurações carregadas possuirem informações sobre grupos, entã o as configurações de grupos do cubo sã o limpas antes do carregamento. Se as configurações carregadas possuirem informações sobre filtros, entã o as configurações do gerenciador de filtros sã o limpas antes do carregamento. Se as configurações carregadas possuirem informações sobre gráficos, entã o as configurações de gráfico sã o limpas antes do carregamento. procedure SaveToFile(AFileName: String; AStoreItems: TfcxItemsForStoreWithSlice = []); Salva as configurações de fatia em um arquivo. O argumento AStoreItems define quais informações adicionais também devem ser salvas (filtros, grupos, gráficos). procedure SaveToStream(ASliceStream: TStream; AStoreItems: TfcxItemsForStoreWithSlice = []); Salva as configurações de fatia em um fluxo. O argumento AStoreItems define quais informações adicionais também devem ser salvas (filtros, grupos, gráficos). Arquivos de fatias também podem conter configurações de grupos, configurações de filtro e configurações de gráfico. Arquivos de fatia sã o arquivos xml com uma extensã o mds por padrã o.

7 FastCube 2.0 Programmer Manual Exemplos de código: fcxslice1.loadfromfile('c:\schema1.mds'); fcxslice1.savetofile('c:\schema2.mds'); fcxslice1.savetofile('c:\schema3.mds', [fcxiss_filters, fcxiss_groups, fcxiss_charts]); 2.1.3 Outras configurações Configurações de filtro (TfcxFilterManager): function LoadFromFile(AFileName: String): Boolean; Carrega as configurações do filtro de um arquivo. Retorna True se o arquivo foi carregado com êxito. As configurações do filtro sã o limpas antes do carregamento. function LoadFromStream(AStream: TStream): Boolean; Carrega as configurações do filtro de um fluxo. Retorna True se o arquivo foi carregado com êxito. As configurações do filtro sã o limpas antes do carregamento. procedure SaveToFile(AFileName: String); Salva as configurações do filtro em um arquivo. procedure SaveToStream(AStream: TStream); Salva as configurações do filtro em um fluxo. O arquivo de configuraçã o do filtro tem uma extensã o fcf por padrã o. Configurações de grupos (TfcxCube): function LoadGroupsFromFile(AGroupsFileName: String): Boolean; Carrega as configurações de grupos de um arquivo. Retorna True se o arquivo foi carregado com êxito. As configurações de grupos sã o limpas antes do carregamento. function LoadGroupsFromStream(AStream: TStream): Boolean; Carrega as configurações de grupos de um fluxo. Retorna True se o arquivo foi carregado com êxito. As configurações de grupos sã o limpas antes do carregamento. procedure SaveGroupsToFile(AGroupsFileName: String); Salva as configurações de grupos em um arquivo. procedure SaveGroupsToStream(AStream: TStream); Salva as configurações de grupos em um fluxo. O arquivo de configurações de grupos tem uma extensã o fcg por padrã o.

Utilizaçã o dos componentes do FastCube 8 Configurações de gráfico (TfcxChart): function LoadFromFile(AFileName: String): Boolean; Carrega as configurações de gráfico de um arquivo. Retorna True se o arquivo foi carregado com êxito. As configurações de gráfico sã o limpas antes do carregamento. function LoadFromStream(AStream: TStream): Boolean; Carrega as configurações de gráfico de um fluxo. Retorna True se o arquivo foi carregado com êxito. As configurações de gráfico sã o limpas antes do carregamento. procedure SaveToFile(AFileName: String); Salva as configurações de gráfico em um arquivo. procedure SaveToStream(AStream: TStream); Salva as configurações de gráfico em um fluxo. O arquivo de configurações de gráfico tem uma extensã o mdt por padrã o. Exemplos de código: fcxfiltermanager1.loadfromfile('c:\filter1.fcf'); fcxfiltermanager1.savetofile('c:\filter2.fcf'); fcxcube1.loadgroupsfromfile('c:\group1.fcg'); fcxcube1.savegroupstofile('c:\group2.fcg'); fcxchart1.loadfromfile('c:\chart1.mdt'); fcxchart1.savetofile('c:\chart2.mdt'); 2.2 Carregamento de dados O carregamento de dados de bancos de dados e fontes do usuário. 2.2.1 Carregamento de um cubo a partir de uma única tabela de banco de dados O objetivo principal da biblioteca de componentes do FastCube é criar uma tabela cruzada de resumo a partir de dados simples. A fonte de dados do cubo mais simples é uma tabela de um banco de dados. Para carregar dados no cubo, deve ser criada uma conexã o com o banco de dados através de um descendente do componente TDataSet. A escolha exata do componente depende do componente do banco de dados usado no aplicativo. É necessário um componente TfcxDBDataSet para vincular o descendente de TDataSet a um componente TfcxDataSource.

9 FastCube 2.0 Programmer Manual O componente TfcxDataSource contém a descriçã o completa da estrutura de dados do cubo. Ele descreve todas as fontes de dados, os arquivos das fontes, as relações entre as fontes, as regras da conversã o de dados etc. Uma das fontes deve ser a fonte principal, que é atribuída à propriedade TfcxDataSource.DataSet. Somente quando todos os dados a serem carregados estiverem contidos em uma única tabela de banco de dados, a fonte principal deve ser atribuída. Depois disso, os componentes TfcxDataSource, TfcxCube, TfcxSlice e TfcxSliceGrid devem ser vinculados juntos. TfcxCube e TfcxSlice podem ser vinculados através do gerenciador de filtros TfcxFilterManager. Se um componente TfcxFilterManager nã o for adicionado explicitamente ao aplicativo, TfcxSlice irá criar um TfcxFilterManager interno automaticamente. Um componente explícito de gerenciador de filtros somente é necessário quando um gerenciador de filtros é utilizado por mais de uma fatia. TfcxDataSource pode conter uma lista dos campos de origem. Se a lista de campos nã o estiver presente, entã o todos os campos de origem serã o carregados automaticamente. TfcxDataSource.Fields contém a lista dos principais campos de origem. A lista de campos pode ser excluída ao chamar TfcxDataSource.DeleteFields. Uma lista de campos pode ser carregada da fonte ao chamar TfcxDataSource.AddFields. A lista de campos é carregada somente quando a fonte possuir objetos de campo (que foram definidos no designer de formulários ou criados automaticamente quando o DataSet foi aberto). Se a lista de campos nã o será alterada, entã o nã o é necessário chamar AddFields, já que ela é chamada automaticamente quando a fonte é aberta. A fonte do cubo pode ser um componente TfcxDataSource, um arquivo de cubo ou um fluxo de cubo. O tipo de fonte a ser utilizada é especificado na propriedade TfcxCube.CubeSource : TfcxCubeSource. A enumeraçã o TfcxCubeSource é: TfcxCubeSource = ( fccs_none, fccs_datasource, fccs_cubefile, fccs_cubestream ); // Nenhum // carregar de fcxdatasource // carregar do arquivo // carregar do fluxo Em nosso caso precisamos usar o valor fccs_datasource. O cubo carrega seus dados quando o método TfcxCube.Open é chamado. O cubo abre a fonte especificada automaticamente e carrega os dados dos campos necessários. A tabela cruzada está pronta para o uso após o carregamento dos dados. Exemplos de código: // criar componentes necessários no tempo de execução

Utilizaçã o dos componentes do FastCube 10 fcxdbdataset1 := TfcxDBDataSet.Create(Self); fcxdatasource1 := TfcxDataSource.Create(Self); fcxcube1 := TfcxCube.Create(Self); fcxslice1 := TfcxSlice.Create(Self); fcxslicegrid1 := TfcxSliceGrid.Create(Self); fcxslicegrid1.parent := Self; fcxslicegrid1.align := alclient; // definir os vínculos entre eles fcxdbdataset1.dataset := DataSet1; fcxdatasource1.dataset := fcxdbdataset1; fcxcube1.datasource := fcxdatasource1; fcxslice1.cube := fcxcube1; fcxslicegrid1.slice := fcxslice1; // limpar a lista de campos fcxdatasource1.deletefields; // definir o tipo de fonte do cubo fcxcube1.cubesource := fccs_datasource; // carregar dados fcxcube1.open; 2.2.2 Configurar campos de TfcxDataSource A lista de campos de TfcxDataSource precisa ser especificada somente nos seguintes casos: se somente alguns campos da fonte de dados forem necessários se os dados precisarem ser convertidos se os campos de data e hora precisarem ser divididos em partes (por exemplo dia, mês) se diversas fontes de dados precisarem ser vinculadas A propriedade TfcxDataSource.Fields contém a lista de campos da fonte principal. Os atributos do campo da fonte SourceFieldProperties depende do seu tipo - SourceFieldType : TfcxAttributeType. A enumeraçã o de TfcxAttributeType é: TfcxAttributeType = ( fcxsft_reference, fcxsft_custom, fcxsft_date, partes) fcxsft_time partes) ); // um campo da fonte // um campo de usuário // um campo de data (que pode ser separado em // um campo de hora (que pode ser separado em A propriedade DataField descreve o tipo dos dados de origem, com atributos: nome e legenda do campo na fonte

11 FastCube 2.0 Programmer Manual necessidade de converter os dados, junto ao tipo dos dados de destino nome e legenda do campo no cubo. Os atributos de DataField dependem de SourceFieldType. Exemplos de código: // Carregar lista de campos fcxdatasource1.addfields; // Alterar o rótulo de exibição do campo indexado em 2 fcxdatasource1.fields[2].datafield.cubefielddisplaylabel := 'Customer'; // Definir uma regra para converter o campo 'Population' para uma cadeia TfcxReferenceDataField(fcxDataSource1.Fields.FieldByName ['Population'].DataField).Convert := True; TfcxReferenceDataField(fcxDataSource1.Fields.FieldByName ['Population'].DataField).CubeFieldType := fcdt_string; 2.2.3 Criar e ajustar atributos de TfcxDataSource SplitProperty: TfcxSplitProperty descreve como dividir um campo baseado em seus "atributos". Atributos podem ser partes de campos de data e hora (ano, dia, hora etc.) ou os campos de uma fonte de dados que está vinculada à principal fonte de dados do cubo. Um atributo pode ter seus próprios subatributos. O nível de aninhamento de atributos nã o é limitado. Um campo pode ter um atributo CaptionSourceAttribute (para substituir legendas de valores possíveis daquele atributo) e um atributo OrderSourceAttribute (para ordenar valores de acordo com a ordem dos valores dos atributos). Se esses atributos nã o forem definidos, entã o o campo irá utilizar seus próprios valores como legendas e para a ordenaçã o. Os atributos e o campo principal sã o do tipo TfcxSourceField. TfcxSplitProperty.Attributes contém a lista de atributos. DateSplitPaths e TimeSplitPaths especificam quais partes da data e hora sã o necessárias para o campo (quando o campo for uma data ou hora). Exemplos de código: var ARefField: TfcxReferenceAttributeSFProperties; AAttribute: TfcxSourceField; begin // carregar lista de campos fcxdatasource1.addfields;

Utilizaçã o dos componentes do FastCube 12 // especificar que os atributos Day, Month e Year são necessários para o campo 'Date1' fcxdatasource1.fields.fieldbyname ['Date1'].SplitProperty.DateSplitPaths := [odt_day, odt_month, odt_year]; // criar um atributo para a legenda do campo 'IdClient'... // criar um atributo novo para o campo 'IdClient' AAttribute := TfcxSourceField(fcxDataSource1.Fields.FieldByName ['IdClient'].SplitProperty.Attributes.Add); // definir o tipo de atributo correto AAttribute.SourceFieldType := fcxsft_reference; ARefField := TfcxReferenceAttributeSFProperties (AAttribute.SourceFieldProperties); // definir a fonte do atributo como igual à fonte do campo principal ARefField.DataSet := TfcxReferenceSourceFieldProperties (fcxdatasource1.fields.fieldbyname ['IdClient'].SourceFieldProperties).DataSet; // definir o nome do campo do atributo na fonte como 'FullName' ARefField.DataField.DataFieldName := 'FullName'; // definir o nome do atributo criado como a fonte das legendas para o campo fcxdatasource1.fields.fieldbyname ['IdClient'].SourceFieldProperties.CaptionSourceAttribute := 'FullName'; // a mesma tarefa, porém com o nome do cliente retirado de outra fonte... // criar um atributo novo para o campo 'IdClient' AAttribute := TfcxSourceField(fcxDataSource1.Fields.FieldByName ['IdClient'].SplitProperty.Attributes.Add); // definir o tipo de atributo correto AAttribute.SourceFieldType := fcxsft_reference; ARefField := TfcxReferenceAttributeSFProperties (AAttribute.SourceFieldProperties); // definir a fonte do atributo como fcxdataset2 - que é uma tabela de referência que contém uma chave 'Id' e um nome 'FullName' ARefField.DataSet := fcxdataset2; // o campo-chave na fonte do atributo é 'Id' ARefField.DataField.IdField.DataFieldName := 'Id'; // O campo de nome na fonte do atributo é 'FullName' ARefField.DataField.DataFieldName := 'FullName'; // definir o nome do atributo criado como a fonte das legendas do campo fcxdatasource1.fields.fieldbyname ['IdClient'].SourceFieldProperties.CaptionSourceAttribute := 'FullName'; end;

13 FastCube 2.0 Programmer Manual 2.3 Configurar a fatia O componente TfcxSlice é utilizado para configurar uma fatia. Campos de fatia (TfcxSliceField) sã o criados automaticamente baseados nos campos do cubo. A fatia possui contêineres que podem conter campos de área (TfcxCommonFieldOfRegion): XAxisContainer - eixo X, contém campos do tipo TfcxAxisField YAxisContainer - eixo Y, contém campos do tipo TfcxAxisField PageContainer - área do filtro, contém campos do tipo TfcxAxisField MeasuresContainer - medidas, contém campos do tipo TfcxMeasureField Campos TfcxAxisField sã o criados baseados nos campos de fatia. As medidas TfcxMeasureField podem ser criadas baseadas nos campos de fatia ou em um script FastScript. Qualquer campo de fatia pode ser colocado em qualquer contêiner. Uma medida baseada em campos de fatia nã o impede que este campo seja colocado em outro contêiner ao mesmo tempo. 2.3.1 Criar a estrutura da fatia Para adicionar uma dimensã o (campo) a uma área de eixo ou à área de filtros, utilize os seguintes métodos de contêiner: function AddDimension(ASliceField: TfcxSliceField; AName: TfcxString = ''; ACaption: TfcxString = ''): integer; Adiciona uma dimensã o baseada no campo ASliceField no final da lista de campos da área especificada. Retorna a posiçã o do campo na lista de campos da área. Se o campo de área baseado em ASliceField já existir, entã o ele é movido para a posiçã o especificada na área especificada. Se ele nã o existir, um novo campo de área é criado. procedure InsertDimension(ASliceField: TfcxSliceField; AIndex: integer; AName: TfcxString = ''; ACaption: TfcxString = ''); Insere uma dimensã o baseada no campos ASliceField na posiçã o especificada na área especificada. Se o campo da área baseado em ASliceField já existir, entã o ele é movido para a posiçã o especificada na área especificada. Se ele nã o existir, um novo campo de área é criado. procedure DeleteDimension(AIndex: integer); Exclui uma dimensã o especificada pelo índice. O campo de área é destruído.

Utilizaçã o dos componentes do FastCube 14 Para editar o campo Measures, utilize os seguintes métodos de contêiner: function AddMeasuresField: integer; Move o campo "Measures" para o final da área especificada. Retorna a posiçã o do campo "Measures". function InsertMeasuresField(AIndex: TfcxSmallCount): integer; Move o campo "Measures" para a posiçã o especificada da área especificada. Retorna a posiçã o do campo "Measures". procedure DeleteMeasuresField; Exclui o campo "Measures" da área especificada. O campo "Measures" é movido automaticamente para a primeira posiçã o da área de filtros. IMPORTANTE! O campo "Measures" é um campo virtual que é sempre criado mas nunca está presente na lista de campos do contêiner correspondente. Para acessar suas propriedades, utilize a propriedade MeasuresContainer do objeto de fatia. A posiçã o do campo "Measures" na área é definida pela propriedade MeasuresContainer.Position. Todos os campos de área com um índice igual ou maior que MeasuresContainer.Position sã o exibidos após o campo "Measures". A propriedade MeasuresContainer.Container define um contêiner que corresponde ao campo "Measures". É melhor colocar todas as operações que alteram a estrutura da fatia entre as chamadas BeginUpdate e EndUpdate. Isso evita recálculos e recompilações desnecessárias depois de cada alteraçã o. Exemplo de código: // iniciar a alteração da estrutura - suspender recálculos na fatia fcxslice1.beginupdate; // adicionar um campo de fatia indexado em 0 ao eixo Y fcxslice1.yaxiscontainer.adddimension(fcxslice1.slicefield[0]); // adicionar um campo de fatia indexado em 1 à posição 0 do eixo Y fcxslice1.yaxiscontainer.insertdimension(fcxslice1.slicefield[1], 0); // adicionar um campo de fatia chamado 'FullName' ao eixo X fcxslice1.xaxiscontainer.adddimenssion(fcxslice1.slicefieldbyname ['FullName']); // adicionar o campo 'Measures' ao eixo X fcxslice1.xaxiscontainer.addmeasuresfield; // terminar a alteração da estrutura, iniciar recálculos na fatia fcxslice1.endupdate;

15 FastCube 2.0 Programmer Manual 2.3.2 Gerenciamento de medidas Uma medida pode ser criada baseada em um campo de fatia ou um script FastScript. function AddMeasure(ASliceField: TfcxSliceField; AName, ACaption: TfcxString; AAgrFunc: TfcxAgrFunc): Integer; Adiciona uma medida baseada em ASliceField com a funçã o de agregaçã o AAgrFunc. Retorna a posiçã o da medida no contêiner. function AddCalcMeasure(AName, ACaption: TfcxString; AAgrFunc: TfcxAgrFunc; AScriptFunctionName: String; AScriptFunctionCode: TfcxString): Integer; Adiciona uma medida calculada baseada na funçã o de script AScriptFunctionName com a funçã o de agregaçã o AAgrFunc. AScriptFunctionCode - o código da funçã o. Retorna a posiçã o da medida no contêiner. function AddMeasure(AField: TfcxMeasureField): Integer; Adiciona a medida especificada AField. Retorna a posiçã o da medida no contêiner. procedure InsertMeasure(ASliceField: TfcxSliceField; AName, ACaption: TfcxString; AAgrFunc: TfcxAgrFunc; AIndex: TfcxSmallCount); Insere uma medida baseada em ASliceField com a funçã o de agregaçã o AAgrFunc na posiçã o de contêiner especificada. procedure InsertCalcMeasure(AName, ACaption: TfcxString; AAgrFunc: TfcxAgrFunc; AScriptFunctionName: String; AScriptFunctionCode: TfcxString; AIndex: TfcxSmallCount); Insere uma medida calculada baseada na funçã o de script AScriptFunctionName com a funçã o de agregaçã o AAgrFunc na posiçã o de contêiner especificada. AScriptFunctionCode - o código da funçã o. procedure InsertMeasure(AField: TfcxMeasureField; AIndex: TfcxSmallCount); Insere a medida especificada AField na posiçã o de contêiner especificada. procedure DeleteMeasure(AMeasureIndex: TfcxSmallCount; ADoStopChange: Boolean = False); Exclui a medida com o índice especificado. Os métodos e propriedades MeasuresContainer permitem o acesso e a ediçã o de medidas. Medidas podem ser ocultadas. Medidas ocultas também sã o calculadas. function MoveMeasure(AFromIndex, AToIndex: TfcxSmallCount): boolean; Move a medida dentro do contêiner. property Measures[AIndex: TfcxSmallCount]: TfcxMeasureField; Propriedade de acesso à medida. As propriedades e métodos TfcxMeasureField permitem a ediçã o de propriedades

Utilizaçã o dos componentes do FastCube 16 de medidas: property Visible: Boolean; Medida de visibilidade. property DisplayAs: TfcxDisplayAs; Estilo de exibiçã o. É melhor colocar todas as operações que alteram a estrutura da fatia entre as chamadas BeginUpdate e EndUpdate. Isso evita recálculos e recompilações desnecessárias depois de cada alteraçã o. Exemplos de código: // iniciar a alteração da estrutura - suspender recálculos na fatia fcxslice1.beginupdate; // adicionar uma medida baseada no campo de fatia indexado em 3 e na função de agregação af_sum fcxslice1.measurescontainer.addmeasure(fcxslice1.slicefield[3],'sum1', 'Income', af_sum); // adicionar uma medida calculada que calcula a metade da receita fcxslice1.measurescontainer.addcalcmeasure('calc1', 'Half of Income', af_formula, 'CalcScript1', 'Result := measures [''Sum1''].currentvalue / 2'); // mover a medida indexada em 1 para a posição 0 fcxslice1.measurescontainer.movemeasure(1, 0) // ocultar a medida indexada em 1 fcxslice1.measurescontainer.measures[1].visible := False; // terminar a alteração da estrutura, iniciar recálculos na fatia fcxslice1.endupdate; 2.4 Gerenciamento de filtros Filtros sã o necessários para limitar a quantidade de dados calculados, de acordo com os critérios especificados. É possível editar filtros usando métodos de fatia e propriedades. Exemplos de código: // limpar o filtro indexado em 3 do campo de fatia indexado em 0 fcxslice1.slicefield[0].uvfilterofvalue[3] := False; // iniciar a alteração do filtro fcxslice1.slicefieldbyname['firstname'].beginupdatefieldfilter; // desativar filtro para todos os valores do campo 'FirstName' fcxslice1.slicefieldbyname['firstname'].setnonefilter; // ativar o filtro com o valor 'Sergey' para o campo 'FirstName'

17 FastCube 2.0 Programmer Manual fcxslice1.slicefieldbyname['firstname'].uvfilterofvalue['sergey'] := True; // ativar o filtro com o valor indexado em 12 para o campo 'FirstName' fcxslice1.slicefieldbyname['firstname'].uvfilterof[12] := True; // terminar de alterar o filtro (aplicar alterações) fcxslice1.slicefieldbyname['firstname'].endupdatefieldfilter; // ativar o filtro somente para o valor indexado em 4 para o campo de fatia indexado em 0 fcxslice1.slicefield[0].uvsingleindex := 4; // inverter o a ativação do filtro para os valores do campo de fatia indexado em 0 fcxslice1.slicefield[0].inversefilter; // configurar a ativação do filtro de acordo com o critério especificado por ARange fcxslice1.slicefield[0].setrangefilter(arange); // configurar o tipo do filtro como "radio" SliceField[1].UVFilterType := uvft_single; 2.5 Gerenciamento de grupos Grupos aprimoram a representaçã o dos dados. Grupos podem ser editados usando os métodos e propriedades de um campo de fatia e o gerenciador de grupos (GroupManager) do campo de fatia. Grupos podem ser editados (criados, alterados etc.) após a ativaçã o do modo de agrupamento (CanGroup) para o campo de fatia. Exemplos de código: // ativar o modo de agrupamento ASliceField.CanGroup := True; // verificar se é possível usar grupos if ASliceField.CanGroup then begin // criar um grupo chamado 'Group1' AGroupIndex := ASliceField.GroupManager.CreateGroup('Group1').Index; // adicionar valores indexados em 3 ao grupo indexado em AGroupIndex ASliceField.GroupManager.AddUVInGroup(3, AGroupIndex); // adicionar os valores de 30 ao grupo indexado em AGroupIndex ASliceField.GroupManager.AddUVValueInGroup(30, AGroupIndex); // criar o grupo predefinido "Others" ASliceField.GroupManager.CreateOtherGroup; end;