|
|
Linha 156: |
Linha 156: |
| | | |
| =Componentes= | | =Componentes= |
− | #'''USys'''
| |
− | :'''Gerente do sistema''', centraliza os processamentos do sistema
| |
− | :*Executa processos dos CSs;
| |
− | :*Trabalha os direitos (verifica, delega);
| |
− | :*Troca de informações entre processos;
| |
− | :*Controle e troca de informações com BD (a implementar no futuro ''''proximo'''');
| |
− |
| |
− | :Primeiro a ser instanciado, inicializa a aplicação
| |
− | :*As configurações gerais do sistema ficam em um .ini junto com o .exe na secao [Geral];
| |
− | :*As configurações por maquina ficam no registro do windows;
| |
− | :*As configurações por usuario ficam no cadastro do usuário;
| |
− |
| |
− | protected
| |
− | ?? procedure Notification(AComponent: TComponent; Operation: TOperation); override;
| |
− | ??Recebe uma notificação para remover um CS da ListCS onde AComponent é o cs que será destruído e Operation = opRemove.
| |
− |
| |
− | public
| |
− | function Initialize: boolean;
| |
− | Inicializa o Sys. Verifica a existência dos componentes UError, UCPU e UUser e cria em ListCS uma lista com todos os UCS do form e chama o Initialize de cada cs. Se faltar algum componente ou o initialize de algum cs falhar (retornar false) então interrompe o processo e retorna false.
| |
− |
| |
− | procedure IniWriteKey(pchave:string;pvalor:string);
| |
− | Escreve no arquivo ini com o mesmo nome do executável e no objeto USys.INI o valor pvalor na chave pchave.
| |
− |
| |
− | procedure VersionCheck;
| |
− | Compara o número da versão que está gravado no arquivo ini com a versão do executável. Se o executável possui uma versão superior chama o evento BeforeNewVersion, atualiza a versão no Ini e chama o AfterNewVersion.
| |
− |
| |
− | function CSCount : integer;
| |
− | Retorna quantidade de CS do form.
| |
− |
| |
− | function SearchCS(s:string): TUCS;
| |
− | Recebe o nome de um cs e retorna a instância. Se não existe retorna nil.
| |
− |
| |
− | function SearchPSExe(pcs,pps:string;pincludedependent:boolean=False):TComponent;
| |
− | Recebe o nome de um ps e retorna a instância. Se não existe retorna nil.
| |
− |
| |
− | function FormClassOf(pcs,pps:string):TFormClass;
| |
− | Retorna o tipo de form do processo informado
| |
− |
| |
− | ?? function NewPS(pcs,pps:string;pdependent:TComponent=nil):TComponent;
| |
− | Cria e retorna uma nova instância PS do pcs. Onde o seu CS será o pcs e sua propriedade Dependent será o pdependent. É isso mesmo? Quando devo usa esta função?
| |
− |
| |
− | function AnyPS(pcs,pps:string;pincludedependent:boolean=False):TComponent;
| |
− | Retorna o PS pps. Se a instancia não existe, cria.
| |
− |
| |
− | ?? procedure BroadCast(o:TObject);
| |
− | Repassa o objeto para o sistema inteiro (para todos os PS do sistema). Para que serve exatamente?
| |
− |
| |
− | procedure AtualizeBarraTarefas;
| |
− | Atualiza os botões da barra de tarefas, de forma que exista um botão para cada OS instanciado.
| |
− |
| |
− | property ExePars : TUPars read FExePars write FExePars;
| |
− | Lista de parâmetros passados na chamada do executável.
| |
− |
| |
− | property Ini : TUpars read FIni write FIni;
| |
− | Parâmetros do sistema, lidos do arquivo de inicialização.
| |
− |
| |
− | property PSs : TUPars read FPSs write FPSs;
| |
− | Lista dos PS instanciados.
| |
− |
| |
− | property PSn : integer read FPSn write FPSn;
| |
− | Número de PSs instanciados.
| |
− |
| |
− | ?? property PSb : TList read FPSb write FPSb;
| |
− | Lista com o nome dos botões da barra da tarefas.
| |
− |
| |
− |
| |
− | published
| |
− | property Description : TStringList read GetDescription write SetDescription;
| |
− | Breve descrição do objetivo desta instância.
| |
− |
| |
− | property Documentation: TStringList read GetDocumentation write SetDocumentation stored false;
| |
− | Documentação para esta instância.
| |
− |
| |
− | property Development : TStringList read GetDevelopment write SetDevelopment stored false;
| |
− | Observações sobre o desenvolvimento.
| |
− |
| |
− | ?? property ID : string read FID write SetID;
| |
− | para registro do windows.
| |
− |
| |
− | property Version : string read FVersion write FVersion;
| |
− | Versão do sistema.
| |
− |
| |
− | property TaskBar : TWinControl read FTaskBar write SetTaskBar;
| |
− | Barra de tarefas do form principal.
| |
− |
| |
− | property BeforeNewVersion : TBeforeNewVersionEvent read FBeforeNewVersion write FBeforeNewVersion;
| |
− | Este evento é disparado pelo VersionCheck quando o executável for uma nova versão.
| |
− |
| |
− | property AfterNewVersion : TAfterNewVersionEvent read FAfterNewVersion write FAfterNewVersion;
| |
− | Este evento é disparado pelo VersionCheck depois do BeforeNewVersion e depois de atualizar a versão.
| |
− |
| |
− | #:UUser
| |
− | :Detém as informações do usuário que está logado.
| |
− |
| |
− | ?? property UserControl : boolean read FUserControl write FUserControl default True;
| |
− | ??para que serve?
| |
− |
| |
− | property UserID : string read FUserID write SetUserID;
| |
− | ID do usuário (Login).
| |
− |
| |
− | property UserName : string read FUserName write FUserName;
| |
− | Nome do usuário (para exibição)
| |
− |
| |
− | property UserPassword: string read FUserPassword write FUserPassword;
| |
− | Senha do usuário que está logado.
| |
− |
| |
− |
| |
− | #'''UErros'''
| |
− | :A idéia deste componente é ele receber e tratar todas as mensagens de erro do sistema. Entretanto, este componente ainda não teve nenhuma funcionalidade implementada (até hoje 11/12/2006).
| |
− |
| |
− | #'''UCS'''
| |
− | :Componente de Sistema. Gerencia a troca de mensagens entre um determinado grupo de processos de sistema.
| |
− |
| |
− | #'''UPS'''
| |
− | :Processos de Sistema.
| |
− |
| |
− | '''UPSCad, UPSSel, UPSRel'''
| |
− | São componentes idênticos ao UPS (até hoje 11/12/2006). Para um processo que representa um form de cadastro deve ser utilizado o UPSCad.Para um form de seleção o UPSSel, para um form de relatório um UPSRel e para outros forms ou processos o UPS.
| |
− |
| |
− | '''USeg'''
| |
− | Controle de segurança do sistema. Determina quando um usuário pode ter acesso a uma determinada função. Grava quando que cada registro foi incluído ou alterado pela última vez. Possui a função de gravar um log dos registros excluídos.
| |
− |
| |
− | '''UDatabase'''
| |
− | Contém a informação do tipo de banco de dados deve ser utilizado e têm a relação de quais componentes de conexão utilizar para cada banco de dados.
| |
− |
| |
− | '''UQuery'''
| |
− | Componente Query adicionado da possibilidade de ter um SQL para cada banco de dados e utiliza como conexão a conexão do UDatabase.
| |
− | * Obs1: Sempre que estiver conectado a um DE não utilizar JOIN explícito, fazer tudo no Where, pq o DE desmonta a query e monta do jeito dele. E ele não entende Joins explícitos.
| |
− | *Obs2: Em um detalhe deve fazer parte do SQL os parâmetros com o mesmo nome de campo do mestre.
| |
− | DataSource, não precisa.
| |
− | Genérico, Indica se é para utilizar o SQL genérico ou um SQL para cada banco.
| |
− | OrderDepois, ??
| |
− | RequestLive, ??
| |
− | SQL, Comando SQL genérico
| |
− | SQL<banco>, Comando SQL para cada banco.
| |
− | TabelaPrincipal, Carrega automático o nome da tabela principal qdo o dataset fica ativo. Apenas conferir.
| |
− | TabelaPrincipalAlias, Carrega automático o alias da tabela principal (se existir) qdo o dataset fica ativo. Apenas conferir.
| |
− | TrataCommitConcorrente, Utilizar o tratamento de Commit Concorrente da Ulib? Sempre q for cadastro, utilizar, se for tela de seleção, não.
| |
− | UDataBase, Componente UDatabase da aplicação. Normalmente está no form principal.
| |
− | OnAntesAtualiza, OnDepoisAtualiza, Antes e depois de mudar a propriedade SQL.
| |
− | GraveParametro(<parâmetro>,<Valor>,<TFieldType>), função que seta um parâmetro na UQuery.
| |
− |
| |
− | '''UField'''
| |
− | Campo do UQuery. Aqui devem ser definidas as propriedades referentes a cada campo.
| |
− | Campo, nome do campo no banco de dados. Obs: Se for alterar esta propriedade em tempo de execução, fazer isso antes de gravar o valor de um parâmetro para este campo (como é feito no botão filtra) porque quando este valor é alterado o valor passado como parâmetro é zerado.
| |
− | ChavePrimaria, Não carrega automaticamente. Setar manualmente quais os campos que são PK.
| |
− | Edição, em uma tela de cadastro, informar o componente UEdit, UCombo, etc... que será utilizado para gravar neste campo.
| |
− | Filtra, Indica se este campo deve estar disponível na tela de filtro padrão.
| |
− | Inicializa, valor padrão para o campo.
| |
− | MascaraGrid, mascara para o valor do campo do grid.
| |
− | NaNavegacao, Indica que o campo deve aparecer no grid de seleção.
| |
− | Ordena, indica se é possível ordenar por este campo ao clicar no cabeçalho do campo no grid. Obs: sempre utilizar este campo marcado em conjunto com o ordena.
| |
− | PreencheChave, Chave estrangeira. Em uma tela com mestre/detalhe setar esta propriedade nos campos do detalhe que são chave primária e estão relacionados com o campo do mestre. * Neste caso o relacionamento deve estar no SQL utilizando parâmetros com o mesmo nome de campo do DE do mestre.
| |
− | Procura, indica se o campo pode ser utilizado para localizar um registro.
| |
− | Tabela, TabelaAlias, nome da tabela e apelido da tabela do campo. Preenche automaticamente, entretanto quando o select possui join e vc muda determinadas coisas nele o valor deste campo pode ficar automaticamente errado, nesta caso corrigir manualemtne.
| |
− | Tipo, tipo do dado do campo, carregado autoamticamente.
| |
− | Titulo, título para mostrar no cabeçalho do grid.
| |
− |
| |
− |
| |
− | '''UDataSource'''
| |
− | Componente DataSource para acessar o UQuery. Normalmente não utilizado porque o DataEntry é q cuida de tudo.
| |
− |
| |
− |
| |
− | '''UDataEntry'''
| |
− | Componente com inúmeras funções para manipular os dados de um UDataSource
| |
− | DistânciaLinhas, distância entre as linhas do grid
| |
− | Limite, Número limite de registros para editar (normalmente 1 no cadastro e 9999 no detalhe.)
| |
− | LinhasVisíveis, Número de linhas visíveis na tela, repete os componentes de edição quantas vezes for informado.
| |
− | PermiteA, C, E, I, se a tela tem alguma particularidade q nela não pode realizar alguma das operações.
| |
− | SaveRecords, se o DE deve salvar automaticamente no banco ou vou fazer a DML na mão.
| |
− | UBotaoExclusao, botão para excluir o registro diretamente de um grid.
| |
− | UCadastro, UCadastro do DE, se for detalhe não setar.
| |
− | UDataEntry, usar no detalhe para apontar para o mestre.
| |
− | UDataSource, TUDatasource q ele referencia
| |
− | UsaScrollBar, se o grid deve ter scrollbar vertical quando o número de linhas visíveis não for suficiente para mostrar todos os registros selecionados.
| |
− | OnAntesExclusao,
| |
− | OnDepoisExclusao,
| |
− | OnDepoisInclusao,
| |
− | OnMoveuRegistro,
| |
− | OnPreencheCalculado, Antes de preenche o valor dos campos calculados
| |
− | OnPreencheChave, Antes de preencher a chave dos campos.
| |
− | OnValidar, Antes de gravar um registro, faz a validação.
| |
− |
| |
− |
| |
− | '''UCadastro'''
| |
− | Componente para controle de mensagens e de funções do Form. Ele é quem deve ser ativado para ativar a query. Ele ativa a query automaticamente ao mostrar o form.
| |
− | Active, Ativa query, carrega grid e ativa botões de IAEC conforme deve ser.
| |
− | GridProcura, grid da tela de seleção, pode não ter.
| |
− | NavCarrega, não implementado – Edição na tela de seleção
| |
− | Reposiciona – Quando fechar a tela de cadastro, reposiciona automaticamente no registro alterado/incluído, atualizando os dados.
| |
− | SelectNavAntes, não implementado
| |
− | UBotaoxxxx, Não utilizar na R04. Está no form Base.
| |
− | UBotaoOrdena, Para ordenar por mais de uma coluna, por padrão não utilizado.
| |
− | UChamaRetorno, F2 antigo, Obsoleto.
| |
− | UDataEntryPrincipal
| |
− | UprocuraEdit,
| |
− | UProcuraLabel
| |
− | OnAntesCancele, em seguida de clicar no botão cancelar
| |
− | OnAntesCommit, antes de comitar a transação
| |
− | OnAntesConfirme, em seguida de clicar no botão confirmar
| |
− | OnAntesIAE, antes de carregar a tela de cadastro
| |
− | OnAntesModoCadastro, antes de mudar o estado do dataset (traz a informação do estado anterior e o novo)
| |
− | OnConclui
| |
− | OnDepoisFiltro
| |
− | OnDepoisIAE, depois de carregada a tela de cadastro, antes de mostrar ela.
| |
− | OnDepoisModoCadastro, depois de mudar o estado do dataset (traz a informação do estado anterior e o novo)
| |
− | OnDepoisStartTransaction, em seguida de iniciar a transação.
| |
− | OnMoveuRegistro, Moveu o cursor de um registro para o outro.
| |
− | OnMudaActive, depois de alterar o estado para ativo ou inativo, retorna se conseguiu mudar o estado..
| |
− |
| |
− | '''UFBaseSelR03Data'''
| |
− | Componente responsável pela troca de mensagens entre a tela de seleção e seu respectivo cadastro.
| |
− | CallCS, CallPS, nome do CS e do PS referentes à tela de cadastro.
| |
− |
| |
− | '''UFBaseCadR03Data'''
| |
− | Componente responsável pela troca de mensagens entre a tela de cadastro e seu respectivo chamador.
| |
− | Eventos, na ordem q ocorrem:
| |
− | OnAfterCreateForm, neste momento o query do cad ainda não está ativo, se chamado por callCad, após chamar este evento abre o cad, se não retornar nada, destrói o form, vai para OnBeforeDestroy com o query já desativado.
| |
− | OnAfterLoaded, query ainda inativo, se a chamada for com CallCad este evento não ocorre.
| |
− | OnBeforeDestroy
| |
− | OnAnswer ocorre ao fechar a janela de cadastro qdo elea é chamado por callcad, ou é executado após o OnAfterCreateForm se form é chamado pelo CreateCall
| |
− |
| |
− |
| |
− | '''UEdit'''
| |
− | AjCod, indica se é para preencher com os zeros à esquerda ou não. Se for true, deve-se informar a propriedade MaxLength.
| |
− | Dependentes,
| |
− | Edita, usar no lugar do enabled.
| |
− | LabelAlign alinhamento da label em relação ao campo (left, right)
| |
− | LabelAssoc label associado ao campo
| |
− | LabelIndent espaço entre o label e o campo
| |
− | LabelLayout alinhamento da label em relacao a posição do campo (top, left, right, bottom)
| |
− | MostraBotaoChama usa-se o seeker e não este
| |
− | Name, Por padrão utilizar o nome do campo no banco de dados.
| |
− | Obrigatório, indica se o campo pode ser nulo.
| |
− | Sequencial, Quando for um número seqüencial (auto-incremento) informar o nome da tabela a qual o campo pertence.
| |
− | SoNumeros, Se true permite apenas a digitação de números
| |
− | UsaBotaoChama, botão que chama a tela de pesquisa (F2) – Obs: usar o seeker, deixar como falso
| |
− | ValidaInativo, se estiver true não executa os eventos para validação do conteúdo do campo.
| |
− | ValidaOnChange, chama a rotina de validação a cada alteração no conteúdo do campo.
| |
− | OnButtonClick, quando chama F2 ou BotãoChama
| |
− | OnCarregaDados, ocorre quando o DE carrega um dado no campo.
| |
− | OnChange, Não ocorre quando o DE carrega um dado no campo, apenas nos demais casos.
| |
− | OnInicializa, Colocar aqui rotinas para inicializar o Edit com um valor padrão.
| |
− | OnNewControl,
| |
− | OnNextControl,
| |
− | OnPreviousControl,
| |
− | OnSetColor,
| |
− | OnValidar, Incluir aqui as rotinas para validação do conteúdo do campo.
| |
− |
| |
− | '''UMaskEdit'''
| |
− | Igual ao UEdit com opção de máscara para digitação.
| |
− |
| |
− | '''UDateEdit'''
| |
− | Igual ao UEdit com máscara para digitação de datas.
| |
− | Valor : Variant, Valor de edição.
| |
− |
| |
− | '''UNumericEdit'''
| |
− | Igual ao UEdit com alinhamento à esquerda e com propriedades para digitação de números:
| |
− | DecimalPlaces, PermiteNegativo
| |
− |
| |
− | '''UComboBox'''
| |
− | Em Uitens colocar os valores como Sim|S então aparece Sim no combo mas o valor dele é S
| |
− |
| |
− | '''UCheckBox'''
| |
− | Checkbox que permite determinar o valor e imagem para marcado e desmarcado.
| |
− | Domínio, Valores possíveis, na mesma seqüência das imagens do IL.
| |
− | IL, ImageList com as imagens para o checkbox.
| |
− | FirstImage, LastImage, número da primeira e última imagem do IL para utilizar.
| |
− | Valor, contém o valor atual do campo.
| |
− | Valor.Type, contém o tipo dos valores do campo.
| |
− |
| |
− | '''DataSeeker'''
| |
− | Serve para procurar um valor no banco de dados, normalmente utilizado para procurar um valor que é chave estrangeira para preencher um formulário. Este componente possui um Query próprio e a função de buscar conforme a digitação do usuário.
| |
− | HideOnExit, se a propriedade Visible é por padrão false e ele deve sumir depois de utilizado, esta propriedade deve ser true.
| |
− | HotKeys, defina até 6 Hotkeys para quando o usuário estiver com foco no dataseeker. Cada uma delas dispara o seu evento correspondente (OnHotkey1-6).
| |
− | NextCtrl, defina qual o controle que deve receber foco quando o usuário tirar o foco do DataSeeker.
| |
− | OrdemInicial, nome do campo que o SQL traz ordenado por padrão.
| |
− | Query, componente query para conexão com o banco
| |
− | Active, ativa a conexão.
| |
− | SingleFields, quando SingleQuery é true, então escrever aqui separado por vírgulas o nome dos campos que devem ser retornados.
| |
− | SingleQuery, quando true não é necessário informar um SQL, apenas o nome da tabela e os SIngleFIelds. Mas se o SQL precisa de algum JOIN, informe false nessa propriedade e escreva o SQL.
| |
− | SQL, quando SingleQuery é false determina o SQL que vai ser executado para buscar os dados utilizados na busca.
| |
− | UDatabase, conexão com o banco de dados.
| |
− | GridColumns, define as colunas do Dataseeker, incluir manualmente.
| |
− | FieldName, nome do campo retornado pelo SQL que a coluna representa.
| |
− | Title.Caption, Rótulo da coluna.
| |
− | Width, Tamanho da coluna
| |
− | SortFields, escrever em cada linha o nome de um campo que pode ser ordenado e buscado.
| |
− | OnGetSQL, ocorre antes de executar o
| |
− | OnHotkeyX
| |
− | OnSeek
| |
− |
| |
− | '''UPars'''
| |
− | ?? Lista de parâmetros. Não entendi como funciona.
| |
− |
| |
− | procedure Clear;
| |
− | procedure Delete(pnome:string);
| |
− | function Count:integer;
| |
− | function Exists(pnome:string):boolean;
| |
− | property AutoCreatePar : Boolean read FAutoCreatePar write FAutoCreatePar;
| |
− | property Par[pvar:string] : TUPar read GetPar;
| |
− | property Value[pvar:string]: Variant read GetValue write SetValue; default;
| |
− | property Obj[pvar:string] : TObject read GetObj write SetObj;
| |
− | property Name[i:integer] : string read GetName;
| |
− |
| |
− | TURel
| |
− | Componente para montar relatórios em modo texto, possui vários recursos para facilitar o desenho do layout do relatório. É organizado em impressão de uma parte fixa do relatório e impressão do corpo do relatório.
| |
− |
| |
− | BodyLines, Quantidade de registros do corpo (detalhe) que cabe em uma página.
| |
− | BodyStart, Número da linha onde inicia o corpo do relatório.
| |
− | LeftOffSet, Número de colunas em 20cpi que o relatório deve ser deslocado em relação à margem esquerda.
| |
− | ModeFileRep, mdAssignedFile = Saída em AssignFile(...,Port). mdCreateFile = Saída em CreateFile(Port...
| |
− | PageLength, Número de linhas equivalente à altura da página. Uma página Carta, com 6LPI contém 64 linhas. Esta propriedade serve apenas para configurar a impressora depois de quantas linhas deve ser dado o saldo de página.
| |
− | Port, porta de impressão ou caminho e nome de arquivo de saída.
| |
− | PrinterType, define o conjunto de comandos de impressão a utilizar (ptEpson, ptHP).
| |
− | Spacing, número de linhas por polegada (sp6LPI ou sp8LPI)
| |
− | TopOffSet, Número de linhas que o relatório deve ser deslocado em relação ao topo da página.
| |
− | OnPrintBody, Incluir aqui a rotina que imprime um registro do corpo (detalhe) do relatório. Quando for o último registro, o parâmetro pLast deve ser setado para true. Se pLast nunca for true o programa entrará em loop e ficará chamando este evento indefinidamente. Para o relatório ter alguma saída é obrigatório que este evento esteja implementado e gere algum texto para imprimir, ou seja em b seja atribuída alguma propriedade.
| |
− | OnPrintFixed, incluir aqui as rotinas que imprimem a parte fixa do relatório (cabeçalhos e rodapés). Se a OnPrintBody não estiver definida ou não gerar nada para imprimir então esta rotina nem é chamada.
| |
− | Colunas, Para imprimir mais de uma página por folha na horizontal, adicione colunas a esta propriedade. É necessário que exista pelo menos uma coluna.
| |
− | TURelCol
| |
− | É um item da propriedade Colunas, pode ser adicionado em tempo de projeto pelo ObjectInspector ou em tempo de execução;
| |
− |
| |
− | BufferOut, Envia todo o conteúdo do Buffer do TURel para a impressora. Este método é chamado internamente ao final de cada página. Quando estiver definido mais do que uma coluna e passar false para o parâmetro EndReport, ele apenas coleciona o conteúdo do Buffer no buffer da coluna ‘ProximaColuna’ e incrementa o contador ProximaColuna. Se esta for a última coluna ele manda o conteúdo para a impressora, e zera o contador ProximaColuna.
| |
− |
| |
− | Os campos do relatório devem ser determinados dentro dos eventos OnPrintBody e OnPrintFixed nos objetos
| |
− | b e f : TURelGrupo, respectivamente.
| |
− |
| |
− | '''TURelColumn'''
| |
− | Campo do relatório.
| |
− | Para criar uma coluna basta atribuir uma propriedade qualquer a um f[‘nomecampo’].
| |
− | Top, número da linha para imprimir o campo, em relação ao topo da página no OnPrintFixed ou em relação ao BodyStart no OnPrintBody. * A primeira linha é 0.
| |
− | Left, número da coluna para imprimir o campo e relação à margem esquerda da página em caracteres 20cpi, não importando o tamanho da fonte deste campo. A primeira coluna é 0.
| |
− | Width, número máximo de caracteres do campo.
| |
− | TextFont, tamanho da fonte: 5, 10, 12, 15 e 20cpi, que em uma impressora 80 colunas equivalem respectivamente a 40, 80, 96, 137 e 160 caracteres por linha.
| |
− | TextBold, Negrito. Se vc estiver utilizando fonte 12, 15 ou 20 cpi o texto em negrito será impresso em um caracter maior. (booleano).
| |
− | Alignment, Alinhamento. Alinha o texto à esquerda, centro ou direita dentro do campo. Para funcionar a propriedade width deve estar definida (<> 0).
| |
− | DecimalPlaces, Número de casas decimais. Uma vez atribuído, se a propriedade text contiver um número no formato ####.## o número será formatado truncando no número de casas decimais especificado e o separador decimal será a vírgula.
| |
− | ThousandSeparator, Utilizar separador de milhar. Uma vez atribuído, se a propriedade text contiver um número no formato ####.## o número será formatado com separadores de milhar. Se Decimal places não for atribuído ou for = 0, então o número será formatado como um número inteiro com separador de milhar.
| |
− | Text, Texto a ser impresso. Deve ser uma string.
| |
− |
| |
− | '''UCodBarMatr'''
| |
− | Unit com funções para impressão de código de barras em matricial.
| |
− | Basta incluir esta unit no uses e chamar a função codbar.
| |
− |
| |
− | TCodBar = (cbClean13, cbClean8, cbCLUPC, cbCL25, cbCL39);
| |
− | Tlpi = (sp6LPI,sp8LPI)
| |
− |
| |
− | function clean8(codigo: string): string;
| |
− | recebe o número a codificar e devolve a string q contém os comandos para imprimir uma linha com código de barras
| |
− | function clean13(codigo: string): string;
| |
− | function clUPC(codigo: string): string;
| |
− | function cl25(codigo: string): string;
| |
− | function cl39(codigo: string): string;
| |
− |
| |
− | codbar(codigo: string; tipo: TCodBar; ultlin: boolean; lpi: Tlpi; left : integer)
| |
− | função criada para impressão de código de barras no mapa e protocolo do unilabw
| |
− | retorna uma string contendo os comandos que devem ser enviados para uma impressora padrão Epson com uma linha do código de barras selecionado. Se ultlin for false, imprime uma linha, salta meia linha, imprime outra linha e deixa o salto configurado para meia linha. Para isso deve ser passado o número de linhas por polegada e a posição horizontal (left) da barra em número de caracteres 20cpi em relação à margem esquerda. Na prática este recurso é útil para utilizar esta unit em conjunto com o componente URel, onde a coluna que contém este código de barras deve ser a última coluna da linha. Este recurso evita um espaço em branco entre a primeira e segunda linha do código de barras imprimindo uma linha com o mesmo código entre as duas linhas. Quando ultlin for false na linha seguinte deve ter uma chamada à mesma função com ultlin true, que reconfigura o saldo de linha para o tamanho normal.
| |
− |
| |
− | ==TUQuery==
| |
− | [[Arquivo:CompQ.png|frameless|left|Componente TUQuery]]
| |
− |
| |
− | *<font face="Courier" color=#990000>Nome Default:</font> Q;
| |
− | **<font face="Courier" color=#990033>Generico:</font> Essa propriedade define a consulta a ser utilizada;
| |
− | **<font face="Courier" color=#990033>SQL, SQLIB, SQLMS, SQLMySQL e SQLORACLE:</font> consulta destinada à um tipo de banco. SQL deve ser configurada caso seja determinado <font face="Courier" color=#990033>Generico = true</font>;
| |
− | **<font face="Courier" color=#990033>TabelaPrincipal:</font> Deve conter o nome da tabela utilizada no SQL, em interfaces SEL, é comum o uso de Views para essa consulta;
| |
− | **<font face="Courier" color=#990033>TabelaPrincipalAlias:</font> Caso a tabela possua um alias na SQL, ele deve ser informado aqui;
| |
− | **<font face="Courier" color=#990033>UDataBase:</font> referencia <font face="Courier" color=#990033>FMain.UDB</font> que é a database do sistema.
| |
− |
| |
− | ====TDataSource====
| |
− | [[Arquivo:CompDS.png|frameless|left|27px|]]
| |
− | *<font face="Courier" color=#990000>Nome Default:</font> DS;
| |
− | **<font face="Courier" color=#990000>UQuery:</font> Esse campo deve estar referenciado para o componente anteriormente descrito, Q.
| |
− |
| |
− | ====TUDataEntry====
| |
− | [[Arquivo:CompDE.png|frameless|left|Componente TUDataEntry]]
| |
− | *<font face="Courier" color=#990000>Nome Default:</font> DE;
| |
− | **<font face="Courier" color=#990000>Limite:</font> Determina a quantidade máxima de cadastros de detalhes;
| |
− | **<font face="Courier" color=#990000>LinhasVisiveis:</font> Define quantos campos aparecem abaixo do edit de detalhe (inclusive);
| |
− | **<font face="Courier" color=#990000>UCadastro:</font>Precisa referenciar o <font face="Courier" color=#990000>TUCadastro</font> associado à grid;
| |
− | **<font face="Courier" color=#990000>UDataSource:</font> Esse campo deve estar referenciado para o componente anteriormente descrito, DS;
| |
− | **<font face="Courier" color=#990000>UDataEntry:</font> Quando for utilizar relações mestre-detalhe na interface, o Data Entry responsável pelo detalhe referencia o Data Entry do mestre.
| |
− | **<font face="Courier" color=#990000>UsaScrollBar:</font> Necessário quando o numero de 'Limite' ultrapassa 'LinhasVisiveis'.
| |
− |
| |
− | ====TUDataEntry====
| |
− | [[Arquivo:CompCAD.png|frameless|left|27px]]
| |
− | *<font face="Courier" color=#990000>Nome Default:</font> CAD;
| |
− | **<font face="Courier" color=#990000>UDataEntry:</font> Esse campo deve estar referenciado para o componente anteriormente descrito, DE.
| |
− |
| |
− | Para poder trabalhar as configurações visuais da grid, como largura da coluna, propriedades de leitura, etc.
| |
− |
| |
− | Use o RightClick nesse componente e selecione '''colunas da grid de procura'''.
| |
− |
| |
− | (Você acessa a coluna individualmente buscando a propriedade Columns da DBGridP)
| |
− |
| |
− | ====TUField====
| |
− | Para acessar os Campos do dataset, DoubleClick o componente de Query.[[Arquivo:Qfields.png|frame|Exemplo de uma interface de QFields]]
| |
− |
| |
− | *<font face="Courier" color=#990000>Nome Default:</font> Q concatenado do mesmo nome da coluna do banco;
| |
− | **<font face="Courier" color=#990000>Campo:</font> Qual campo do banco ele representará;
| |
− | **<font face="Courier" color=#990000>ChavePrimaria:</font> Identificar a PK da tabela;
| |
− | **<font face="Courier" color=#990000>Edicao:</font> Indica o componente visual que '''edita''' esse valor;
| |
− | **<font face="Courier" color=#990000>Filtra:</font> Habilita o campo a ser uma chave no botão Filtra;
| |
− | **<font face="Courier" color=#990000>NaNavegacao:</font> Define se a coluna aparecerá na Grid;
| |
− | **<font face="Courier" color=#990000>Ordena:</font> Permite o usuário Ordenar os resultados utilizando a coluna como parâmetro, é obrigatório no mínimo 1 dos campos ser True;
| |
− | **<font face="Courier" color=#990000>PreencheChave:</font> Em uma situação mestre-detalhe, esse parâmetro permite que seja inserido no campo a chave primária do '''mestre''';
| |
− | **<font face="Courier" color=#990000>Procura:</font> Habilita a procura de valores na coluna pelo botão Procura;
| |
− | **<font face="Courier" color=#990000>Sequencial:</font>Quando for um número seqüencial (auto-incremento) informar o nome da tabela a qual o campo pertence;
| |
− | **<font face="Courier" color=#990000>Tabela:</font> Indica a qual tabela o campo pertence;
| |
− | **<font face="Courier" color=#990000>TabelaAlias:</font> Preenchido caso a tabela possua alias;
| |
− | **<font face="Courier" color=#990000>Titulo:</font> valor a ser apresentado no cabeçalho da coluna;
| |
− |
| |
− | ====TUFBase???R03Data====
| |
− | [[Arquivo:CompData.png|frameless|left|]]??? pode-se interpretar como 'Cad' ou 'Sel'.
| |
− | *<font face="Courier" color=#990000>Nome Default:</font> ???Data;
| |
− | **No '''Sel'''Data:
| |
− | ***<font face="Courier" color=#990000>CallCadModal:</font> Não permite que seja aberta mais de uma tela de Cad;
| |
− | ***<font face="Courier" color=#990000>CallCs:</font> Nome do CS que gerenciará essa interface (UFMain);
| |
− | ***<font face="Courier" color=#990000>CallPs:</font> Identificar o processo da interface (UFMain);
| |
− |
| |
− | ====TUOrdemCombo====
| |
− | [[Arquivo:Question.png|frameless|left|26px]](Esse é um componente Invisível)
| |
− | *<font face="Courier" color=#990000>Nome Default:</font> OC;
| |
− | **<font face="Courier" color=#990000>AliasInicial:</font> Coluna definida para que o edit possa fazer uma busca;
| |
− |
| |
− | ====TDataSeeker====
| |
− | [[Arquivo:Dataseeker.png|frameless|left]]
| |
− | *É a popup de auto-complete do projeto:
| |
− | **<font face="Courier" color=#990000>Flutuante:</font> Não prende o seeker nas delimitações do form;
| |
− | **<font face="Courier" color=#990000>GridColumns:</font> Colunas exibidas na popup;
| |
− | **<font face="Courier" color=#990000>Hotkeys:</font> configurar o botão de retorno;
| |
− | **<font face="Courier" color=#990000>NextCtrl:</font> Componente a receber o foco quando a popup for encerrada;
| |
− | **<font face="Courier" color=#990000>OrdemInicial:</font> Define a coluna em que a pesquisa se ordena;
| |
− | **<font face="Courier" color=#990000>Query:</font>
| |
− | ***<font face="Courier" color=#990000>SingleFields:</font> Define o nome das colunas;
| |
− | ***<font face="Courier" color=#990000>SingleQuery:</font> Se a consulta utiliza apenas uma tabela;
| |
− | ***<font face="Courier" color=#990000>SingleTable:</font> Nome da tabela;
| |
− |
| |
− | ====TUEdit ou outras formas de input====
| |
− | Caso o componente esteja referenciando um <font face="Courier" color=#990000>CODI</font>, Alterar:
| |
− | *AJCod - Preenche o campo com zeros;
| |
− | *MaxLength - Define o tamanho máximo do campo.
| |
− |
| |
− |
| |
− | ----
| |
− |
| |
− | ===Configurando permissões===
| |
− |
| |
− | Ao criar uma nova interface, por padrão nenhuma permissão é atribuída aos usuários do sistema,
| |
− | com exceção do administrador que possui todos os direitos do programa.
| |
− |
| |
− | Dependendo de sua regra ou aplicação, as permissões da interface podem exigir uma configuração avançada.
| |
− | A seguir estão as informações ''mais importantes'' desse processo:
| |
− |
| |
− | ====Compreendendo o USeg====
| |
− | [[Arquivo:Useg.png|frameless|left]]
| |
− |
| |
− | TUSeg é a classe responsável pela gerência de permissões no sistema Unilab.
| |
− | Esse componente faz parte da biblioteca <font face="Courier" color=#990000>R03</font>.
| |
− |
| |
− | Instanciada no FMain, habilita/desabilita componentes da propriedade <font face="Courier" color=#990000>MainMenu</font>.
| |
− | A configuração do conteúdo é feito na interface UFUserCad.
| |
− |
| |
− | Há duas propriedades que não tenho certeza da funcionalidade: <font face="Courier" color=#990000>Tabelas</font> e <font face="Courier" color=#990000>Views</font>.
| |
− |
| |
− | ====Gerenciando permissões====
| |
− | [[Arquivo:Permissoes.png|frame|right]]
| |
− |
| |
− | Ao incluir uma interface no menu, automaticamente é criado as permissões
| |
− | <font face="Courier" color=#990000>'Inclusão'</font>,
| |
− | <font face="Courier" color=#990000>'Alteração'</font>,
| |
− | <font face="Courier" color=#990000>'Exclusão'</font> e
| |
− | <font face="Courier" color=#990000>'Consulta'</font> para a interface criada.
| |
− |
| |
− | É possível visualizar tais permissões pelo menu '''Cadastros > Usuários''', consultando o usuário de preferência e selecionando a aba '''Direitos'''.
| |
− |
| |
− | Na interface estão as opções do menu, antecipadas pelo botão que altera a permissão para o usuário em questão.
| |
− |
| |
− | Para realizar a leitura/escrita das permissões via código, a TUSeg possui o método
| |
− | <font face="Courier" color=#990000>TemDireito['NOME_FORM','TIPO_Operação']</font>
| |
− |
| |
− | ====Adicionando uma função específica====
| |
− |
| |
− | Algumas interfaces aplicam uma regra específica ao software, portanto, precisam de uma permissão diferenciada para realizar uma função unica.
| |
− |
| |
− | O componente USeg possui uma propriedade <font face="Courier" color=#990000>Direitos</font> utilizada para armazenar permissões especiais.
| |
− | Nessa propriedade, é necessário adicionar uma nova linha seguindo os parametros:
| |
− |
| |
− | <font face="Courier" color=#990000>NOME_FORM | NOME_PERMISSÃO | DESCRIÇÃO_PERMISSÃO </font>
| |
− |
| |
− | ==Problemas Conhecidos==
| |
− |
| |
− | Abaixo estão listadas algumas peculiaridades da biblioteca (problemas ou ''bug's'') que podem impedir o bom funcionamento tanto do software em si quanto o ambiente de programação.
| |
− |
| |
− | ===O campo CODI===
| |
− |
| |
− | A biblioteca, hoje, trabalha a '''chave primária''' como '''string''', e somente com esse tipo de dados;
| |
− |
| |
− | Além disso, ela suporta um limite de nove caracteres, e para uma melhor visualização, a Uniware preenche os valores com zeros à esqueda.
| |
− |
| |
− | ===Recarregando o DataSource===
| |
− |
| |
− | Quando for alterado alguma estrutura do banco de dados, será necessário recarregar o datasource da interface caso ela esteja aberta.
| |
− |
| |
− | Para isso, alterar algum campo da interface e fechar/abrir novamente a unit. (Há casos que não é necessário a alteração da propriedade)
| |
− |
| |
− | ===Remover um campo calculado===
| |
− |
| |
− | Ao remover um campo calculado da lista de TUFields, nenhum outro registro é selecionado.
| |
− |
| |
− | Se o programador selecionar alguma interface sem antes selecionar um campo da lista,
| |
− |
| |
− | o Delphi encerrará acusando um erro.
| |
− |
| |
− | ===AJCOD, recursos necessários===
| |
− |
| |
− | Há alguns recursos necessários para funcionar o AjCod, são eles: MaxLength & SoNumeros
| |
− | nota: só completa os números ao sair do campo, ok?
| |
− |
| |
− | ===Aribuir "vazio" para um campo do DE===
| |
− | Quando for atribuir um "nada" para um campo do DE q representa uma data, atribuir null ao invés de ' '; O banco de dados prevê null ou data para campos date e datetime, mas não prevê ' ' ' (string vazia).
| |
− |
| |
− | ==Outros componentes importantes==
| |
− |
| |
− | Talvez você não os use, mas é importante registrar aqui outros componentes da biblioteca para futuras consultas:
| |
− |
| |
− |
| |
− | ===UFBase===
| |
− |
| |
− | Esse formulário é a base dos forms utilizados no sistema unilab. A partir desse modelo são criados os três tipos de interface do sistema: Rel, Sel e Cad, Que por sua vez são herdadas nas interfaces da biblioteca R03.
| |
− | {| class="wikitable"
| |
− |
| |
− | !Nome
| |
− | !Funcionalidade
| |
− |
| |
− | |-
| |
− | |constructor TFBase.Create(AOwner: TComponent);||Todo formulário possui um componente com os eventos e dados referentes ao formulário. formulários mais especializados podem ter FormData especializados.
| |
− |
| |
− | A checagem do FormData é feita na constructor dos Forms. Além disso, este construtor cria o helptimer. O helptimer serve para evitar que o usuário abra várias vezes o help pressionando F1 várias vezes.
| |
− |
| |
− | |-
| |
− | |procedure FormClose(Sender: TObject; var Action: TCloseAction);||Evento para fechar o form e destruí-lo. Não entendi como funcionam as mensagens que ele procura e manda antes de fechar o form.
| |
− |
| |
− | |-
| |
− | |function FormHelp(Command: Word; Data: Integer; var CallHelp: Boolean): Boolean;||Chama a ajuda relacionada à tela quando usuário pressiona F1. O arquivo de help deve estar no <path do executável>\<LibParam.ProgHelp>\<nome do form>.p. Se o arquivo não existir copia para ele o arquivo “<path onde esta o executável>\manunilab..p”. Por fim, executa o help.
| |
− | *Obs: Utiliza o helptimer para evitar que o usuário abra várias vezes o help pressionando F1 várias vezes.
| |
− |
| |
− | |-
| |
− | |function SearchMsg(s:string): TUMsg;||Procura pela mensagem - nil se nao encontrar. Chama o SearchMsg do PS do Form.
| |
− |
| |
− | |-
| |
− | |function SearchMsgStarting(s:string): TUMsg;||Procura pela mensagem começando por s - nil se não encontrar. Chama o SearchMsgStarting do PS do Form.
| |
− |
| |
− | |-
| |
− | |function CreateMsg(pnome, pcs, pps: string;pforcenew:boolean=True): TUMsg;||Criação de mensagem de comunicação com outro processo. Chama o CreateMsg do PS do form.
| |
− |
| |
− | |-
| |
− | |procedure CreateCall(pname,pcs,pps,pretorno:string;pmodal:boolean=False); overload;||Cria uma chamada a uma tela de seleção - CreateCall('nome','cs','ps','ret'). Chama uma tela de seleção. Se a tela já existir, dá foco nela.
| |
− |
| |
− | |-
| |
− | |procedure CallCad(pmode: TModoCadastro;pname,pcs,pps:string;key:TUPars=nil; pmodal:boolean=False); overload;||Cria uma chamada a uma tela de CAD. Idêntico ao CreateCall, mas adicionado à possibilidade de definir o modo (inserção, alteração, exclusão) e os valores da chave.
| |
− |
| |
− | |-
| |
− | |procedure Answer(pmsg: TUMsg); virtual;||tratamento das mensagens
| |
− |
| |
− | |-
| |
− | |procedure DoAfterCreateForm;||apos a criar e mostrar o form
| |
− |
| |
− | |-
| |
− | |procedure DoAfterLoaded(pcalled:boolean);||apos a carregar o form, independente se direto ou por chamada msg (f2...)
| |
− |
| |
− | |-
| |
− | |procedure DoAfterCreateMsg(pmsg:TUMsg);||apos criar uma mensagem de ligacao com outro processo
| |
− |
| |
− | |-
| |
− | |procedure DoBeforeDestroy;||antes de destruir o PS
| |
− |
| |
− | |-
| |
− | |procedure DoOnDoneUpdated(pdone:Extended);||o processo avancou
| |
− |
| |
− | |-
| |
− | |property PS:TUPS read FPS write FPS default nil;||qual instancia de processo e dono do form
| |
− |
| |
− | |-
| |
− | |procedure Confirm(pclose:boolean=False);||Confirma a execucao do processo. Metodo chamado pelo programador para confirmar o form e chamar o processo que o form executa - no evento OnProcess do FormData.
| |
− |
| |
− | |-
| |
− | |procedure Cancel(pclose:boolean=True);||cancela a execucao do processo
| |
− |
| |
− | |-
| |
− | |property Done:extended read GetDone write SetDone;||Informa o quanto o processo esta pronto (%)
| |
− |
| |
− | |-
| |
− | |procedure PSDestroy(pmsg: TUMsg); virtual;||o PS que comunicava pela mensagem enviada foi destruido
| |
− |
| |
− | |-
| |
− | |property Msg[s:string]: TUMsg read GetMsg;|| ?
| |
− |
| |
− | |-
| |
− | |property Processing : boolean read FProcessing;|| ?
| |
− |
| |
− | |}
| |
− |
| |
− |
| |
− | ===USys===
| |
− |
| |
− | *Gerente do sistema, centraliza os processamentos do sistema:
| |
− | **executa processos (dos CSs);
| |
− | **trabalha direitos (verificar, delegar);
| |
− | **troca de informacoes entre processos;
| |
− | **controle e troca de informacoes com BD (a implementar no futuro 'proximo');
| |
− |
| |
− | *Primeiro a ser instanciado, inicializa a aplicacao;
| |
− |
| |
− | *As configuracoes gerais do sistema ficam em um .ini junto com o .exe na secao [Geral];
| |
− | *As configuracoes por maquina ficam no registro do windows;
| |
− | *As configuracoes por usuario ficam no cadastro do usuário.
| |
− |
| |
− | {| class="wikitable"
| |
− | !Classe !! Nome !! Funcionalidade
| |
− | |-
| |
− | !rowspan="1" |protected
| |
− | |procedure Notification(AComponent: TComponent; Operation: TOperation); override;
| |
− | |Recebe uma notificação para remover um CS da ListCS onde AComponent é o cs que será destruído e Operation = opRemove.
| |
− |
| |
− | |-
| |
− | !rowspan="16"|public
| |
− | |function Initialize: boolean;
| |
− | |Inicializa o Sys. Verifica a existência dos componentes UError, UCPU e UUser e cria em ListCS uma lista com todos os UCS do form e chama o Initialize de cada cs. Se faltar algum componente ou o initialize de algum cs falhar (retornar false) então interrompe o processo e retorna false.
| |
− | |-
| |
− | |procedure IniWriteKey(pchave:string;pvalor:string);
| |
− | |Escreve no arquivo ini com o mesmo nome do executável e no objeto USys.INI o valor pvalor na chave pchave.
| |
− | |-
| |
− | |procedure VersionCheck;
| |
− | |Compara o número da versão que está gravado no arquivo ini com a versão do executável. Se o executável possui uma versão superior chama o evento BeforeNewVersion, atualiza a versão no Ini e chama o AfterNewVersion.
| |
− | |-
| |
− | |function CSCount : integer;
| |
− | |Retorna quantidade de CS do form.
| |
− | |-
| |
− | |function SearchCS(s:string): TUCS;
| |
− | |Recebe o nome de um cs e retorna a instância. Se não existe retorna nil.
| |
− | |-
| |
− | |function SearchPSExe(pcs,pps:string;pincludedependent:boolean=False):TComponent;
| |
− | |Recebe o nome de um ps e retorna a instância. Se não existe retorna nil.
| |
− | |-
| |
− | |function FormClassOf(pcs,pps:string):TFormClass;
| |
− | |Retorna o tipo de form do processo informado
| |
− | |-
| |
− | |function NewPS(pcs,pps:string;pdependent:TComponent=nil):TComponent;
| |
− | |Cria e retorna uma nova instância PS do pcs. Onde o seu CS será o pcs e sua propriedade Dependent será o pdependent. É isso mesmo? Quando devo usa esta função?
| |
− | |-
| |
− | |function AnyPS(pcs,pps:string;pincludedependent:boolean=False):TComponent;
| |
− | |Retorna o PS pps. Se a instancia não existe, cria.
| |
− | |-
| |
− | |procedure BroadCast(o:TObject);
| |
− | |Repassa o objeto para o sistema inteiro (para todos os PS do sistema). Para que serve exatamente?
| |
− | |-
| |
− | |procedure AtualizeBarraTarefas;
| |
− | |Atualiza os botões da barra de tarefas, de forma que exista um botão para cada OS instanciado.
| |
− | |-
| |
− | |property ExePars : TUPars read FExePars write FExePars;
| |
− | |Lista de parâmetros passados na chamada do executável.
| |
− | |-
| |
− | |property Ini : TUpars read FIni write FIni;
| |
− | |Parâmetros do sistema, lidos do arquivo de inicialização.
| |
− | |-
| |
− | |property PSs : TUPars read FPSs write FPSs;
| |
− | |Lista dos PS instanciados.
| |
− | |-
| |
− | |property PSn : integer read FPSn write FPSn;
| |
− | |Número de PSs instanciados.
| |
− | |-
| |
− | |property PSb : TList read FPSb write FPSb;
| |
− | |Lista com o nome dos botões da barra da tarefas.
| |
− |
| |
− | |-
| |
− | !rowspan="9"|published
| |
− | |-
| |
− | |property Description : TStringList read GetDescription write SetDescription;
| |
− | |Breve descrição do objetivo desta instância.
| |
− | |-
| |
− | |property Documentation: TStringList read GetDocumentation write SetDocumentation stored false;
| |
− | |Documentação para esta instância.
| |
− | |-
| |
− | |property Development : TStringList read GetDevelopment write SetDevelopment stored false;
| |
− | |Observações sobre o desenvolvimento.
| |
− | |-
| |
− | |property ID : string read FID write SetID;
| |
− | |para registro do windows.
| |
− | |-
| |
− | |property Version : string read FVersion write FVersion;
| |
− | |Versão do sistema.
| |
− | |-
| |
− | |property TaskBar : TWinControl read FTaskBar write SetTaskBar;
| |
− | |Barra de tarefas do form principal.
| |
− | |-
| |
− | |property BeforeNewVersion : TBeforeNewVersionEvent read FBeforeNewVersion write FBeforeNewVersion;
| |
− | |Este evento é disparado pelo VersionCheck quando o executável for uma nova versão.
| |
− | |-
| |
− | |property AfterNewVersion : TAfterNewVersionEvent read FAfterNewVersion write FAfterNewVersion;
| |
− | |Este evento é disparado pelo VersionCheck depois do BeforeNewVersion e depois de atualizar a versão.
| |
− | |}
| |
− |
| |
− |
| |
− | ===UUser===
| |
− |
| |
− | Detém as informações do usuário que está logado.
| |
− |
| |
− | *property UserControl : boolean read FUserControl write FUserControl default True;
| |
− | **para que serve?
| |
− | *property UserID : string read FUserID write SetUserID;
| |
− | **ID do usuário (Login);
| |
− | *property UserName : string read FUserName write FUserName;
| |
− | **Nome do usuário (para exibição)
| |
− | *property UserPassword: string read FUserPassword write FUserPassword;
| |
− | **Senha do usuário que está logado.
| |
− |
| |
− |
| |
− | ===UErros===
| |
− | A idéia deste componente é ele receber e tratar todas as mensagens de erro do sistema. Entretanto, este componente ainda não teve nenhuma funcionalidade implementada (até hoje 11/12/2006).
| |
− |
| |
− |
| |
− | ===UCS===
| |
− | Componente de Sistema. Gerencia a troca de mensagens entre um determinado grupo de processos de sistema.
| |
− |
| |
− |
| |
− | ===UPS===
| |
− | Processos de Sistema.
| |
− |
| |
− |
| |
− | ===UPSCad, UPSSel, UPSRel===
| |
− | São componentes idênticos ao UPS (até hoje 11/12/2006). Para um processo que representa um form de cadastro deve ser utilizado o UPSCad.Para um form de seleção o UPSSel, para um form de relatório um UPSRel e para outros forms ou processos o UPS.
| |
− |
| |
− |
| |
− | <!--===USeg===
| |
− | Controle de segurança do sistema. Determina quando um usuário pode ter acesso a uma determinada função. Grava quando que cada registro foi incluído ou alterado pela última vez. Possui a função de gravar um log dos registros excluídos.
| |
− | -->
| |
− |
| |
− | ===UDatabase===
| |
− | Contém a informação do tipo de banco de dados deve ser utilizado e têm a relação de quais componentes de conexão utilizar para cada banco de dados.
| |
− |
| |
− |
| |
− | ===UMaskEdit===
| |
− | Igual ao UEdit com opção de máscara para digitação.
| |
− |
| |
− | ===UDateEdit===
| |
− | Igual ao UEdit com máscara para digitação de datas.
| |
− | *Valor : Variant, Valor de edição.
| |
− |
| |
− | ===UNumericEdit===
| |
− | Igual ao UEdit com alinhamento à esquerda e com propriedades para digitação de números:
| |
− | DecimalPlaces, PermiteNegativo
| |
− |
| |
− | ===UComboBox===
| |
− | Em Uitens colocar os valores como Sim|S então aparece Sim no combo mas o valor dele é S
| |
− |
| |
− | ===UCheckBox===
| |
− | Checkbox que permite determinar o valor e imagem para marcado e desmarcado.
| |
− | *Domínio, Valores possíveis, na mesma seqüência das imagens do IL.
| |
− | *IL, ImageList com as imagens para o checkbox.
| |
− | *FirstImage, LastImage, número da primeira e última imagem do IL para utilizar.
| |
− | *Valor, contém o valor atual do campo.
| |
− | *Valor.Type, contém o tipo dos valores do campo.
| |
− |
| |
− |
| |
− | <!--===DataSeeker===
| |
− | (Atualizar e transferir para o capítulo 2)
| |
− |
| |
− | Serve para procurar um valor no banco de dados, normalmente utilizado para procurar um valor que é chave estrangeira para preencher um formulário. Este componente possui um Query próprio e a função de buscar conforme a digitação do usuário.
| |
− | *HideOnExit, se a propriedade Visible é por padrão false e ele deve sumir depois de utilizado, esta propriedade deve ser true.
| |
− | *HotKeys, defina até 6 Hotkeys para quando o usuário estiver com foco no dataseeker. Cada uma delas dispara o seu evento correspondente (OnHotkey1-6).
| |
− | *NextCtrl, defina qual o controle que deve receber foco quando o usuário tirar o foco do DataSeeker.
| |
− | *OrdemInicial, nome do campo que o SQL traz ordenado por padrão.
| |
− | *Query, componente query para conexão com o banco
| |
− | *Active, ativa a conexão.
| |
− | *SingleFields, quando SingleQuery é true, então escrever aqui separado por vírgulas o nome dos campos que devem ser retornados.
| |
− | *SingleQuery, quando true não é necessário informar um SQL, apenas o nome da tabela e os SIngleFIelds. Mas se o SQL precisa de algum JOIN, informe false nessa propriedade e escreva o SQL.
| |
− | *SQL, quando SingleQuery é false determina o SQL que vai ser executado para buscar os dados utilizados na busca.
| |
− | *UDatabase, conexão com o banco de dados.
| |
− | *GridColumns, define as colunas do Dataseeker, incluir manualmente.
| |
− | *FieldName, nome do campo retornado pelo SQL que a coluna representa.
| |
− | *Title.Caption, Rótulo da coluna.
| |
− | *Width, Tamanho da coluna
| |
− | *SortFields, escrever em cada linha o nome de um campo que pode ser ordenado e buscado.
| |
− | -->
| |
− |
| |
− | ===UPars===
| |
− | Lista de parâmetros. Não entendi como funciona.
| |
− |
| |
− |
| |
− | ===TURel===
| |
− | Componente para montar relatórios em modo texto, possui vários recursos para facilitar o desenho do layout do relatório. É organizado em impressão de uma parte fixa do relatório e impressão do corpo do relatório.
| |
− |
| |
− | *BodyLines, Quantidade de registros do corpo (detalhe) que cabe em uma página.
| |
− | *BodyStart, Número da linha onde inicia o corpo do relatório.
| |
− | *LeftOffSet, Número de colunas em 20cpi que o relatório deve ser deslocado em relação à margem esquerda.
| |
− | *ModeFileRep, mdAssignedFile = Saída em AssignFile(...,Port). mdCreateFile = Saída em CreateFile(Port...
| |
− | *PageLength, Número de linhas equivalente à altura da página. Uma página Carta, com 6LPI contém 64 linhas. Esta propriedade serve apenas para configurar a impressora depois de quantas linhas deve ser dado o saldo de página.
| |
− | *Port, porta de impressão ou caminho e nome de arquivo de saída.
| |
− | *PrinterType, define o conjunto de comandos de impressão a utilizar (ptEpson, ptHP).
| |
− | *Spacing, número de linhas por polegada (sp6LPI ou sp8LPI)
| |
− | *TopOffSet, Número de linhas que o relatório deve ser deslocado em relação ao topo da página.
| |
− | *OnPrintBody, Incluir aqui a rotina que imprime um registro do corpo (detalhe) do relatório. Quando for o último registro, o parâmetro pLast deve ser setado para true. Se pLast nunca for true o programa entrará em loop e ficará chamando este evento indefinidamente. Para o relatório ter alguma saída é obrigatório que este evento esteja implementado e gere algum texto para imprimir, ou seja em b seja atribuída alguma propriedade.
| |
− | *OnPrintFixed, incluir aqui as rotinas que imprimem a parte fixa do relatório (cabeçalhos e rodapés). Se a OnPrintBody não estiver definida ou não gerar nada para imprimir então esta rotina nem é chamada.
| |
− | Colunas, Para imprimir mais de uma página por folha na horizontal, adicione colunas a esta propriedade. É necessário que exista pelo menos uma coluna.
| |
− |
| |
− |
| |
− | ===TURelCol===
| |
− | É um item da propriedade Colunas, pode ser adicionado em tempo de projeto pelo ObjectInspector ou em tempo de execução;
| |
− |
| |
− | *BufferOut, Envia todo o conteúdo do Buffer do TURel para a impressora. Este método é chamado internamente ao final de cada página. Quando estiver definido mais do que uma coluna e passar false para o parâmetro *EndReport, ele apenas coleciona o conteúdo do Buffer no buffer da coluna ‘ProximaColuna’ e incrementa o contador ProximaColuna. Se esta for a última coluna ele manda o conteúdo para a impressora, e zera o contador ProximaColuna.
| |
− | *Os campos do relatório devem ser determinados dentro dos eventos OnPrintBody e OnPrintFixed nos objetos b e f : TURelGrupo, respectivamente.
| |
− |
| |
− |
| |
− | ===TURelColumn===
| |
− | Campo do relatório.
| |
− | Para criar uma coluna basta atribuir uma propriedade qualquer a um f[‘nomecampo’].
| |
− | *Top, número da linha para imprimir o campo, em relação ao topo da página no OnPrintFixed ou em relação ao BodyStart no OnPrintBody. * A primeira linha é 0.
| |
− | *Left, número da coluna para imprimir o campo e relação à margem esquerda da página em caracteres 20cpi, não importando o tamanho da fonte deste campo. A primeira coluna é 0.
| |
− | *Width, número máximo de caracteres do campo.
| |
− | *TextFont, tamanho da fonte: 5, 10, 12, 15 e 20cpi, que em uma impressora 80 colunas equivalem respectivamente a 40, 80, 96, 137 e 160 caracteres por linha.
| |
− | *TextBold, Negrito. Se vc estiver utilizando fonte 12, 15 ou 20 cpi o texto em negrito será impresso em um caracter maior. (booleano).
| |
− | *Alignment, Alinhamento. Alinha o texto à esquerda, centro ou direita dentro do campo. Para funcionar a propriedade width deve estar definida (<> 0).
| |
− | *DecimalPlaces, Número de casas decimais. Uma vez atribuído, se a propriedade text contiver um número no formato ####.## o número será formatado truncando no número de casas decimais especificado e o separador decimal será a vírgula.
| |
− | *ThousandSeparator, Utilizar separador de milhar. Uma vez atribuído, se a propriedade text contiver um número no formato ####.## o número será formatado com separadores de milhar. Se Decimal places não for atribuído ou for = 0, então o número será formatado como um número inteiro com separador de milhar.
| |
− | *Text, Texto a ser impresso. Deve ser uma string.
| |
− |
| |
− |
| |
− | ===UCodBarMatr===
| |
− | Unit com funções para impressão de código de barras em matricial.
| |
− | Basta incluir esta unit no uses e chamar a função codbar.
| |
− | *TCodBar = (cbClean13, cbClean8, cbCLUPC, cbCL25, cbCL39);
| |
− | *Tlpi = (sp6LPI,sp8LPI)
| |
− | *function clean8(codigo: string): string;
| |
− | recebe o número a codificar e devolve a string q contém os comandos para imprimir uma linha com código de barras
| |
− | *codbar(codigo: string; tipo: TCodBar; ultlin: boolean; lpi: Tlpi; left : integer)
| |
− | função criada para impressão de código de barras no mapa e protocolo do unilabw
| |
− | retorna uma string contendo os comandos que devem ser enviados para uma impressora padrão Epson com uma linha do código de barras selecionado. Se ultlin for false, imprime uma linha, salta meia linha, imprime outra linha e deixa o salto configurado para meia linha. Para isso deve ser passado o número de linhas por polegada e a posição horizontal (left) da barra em número de caracteres 20cpi em relação à margem esquerda. Na prática este recurso é útil para utilizar esta unit em conjunto com o componente URel, onde a coluna que contém este código de barras deve ser a última coluna da linha. Este recurso evita um espaço em branco entre a primeira e segunda linha do código de barras imprimindo uma linha com o mesmo código entre as duas linhas. Quando ultlin for false na linha seguinte deve ter uma chamada à mesma função com ultlin true, que reconfigura o saldo de linha para o tamanho normal.
| |
− |
| |
− | ==RBuilder: Preview Maximizada==
| |
− | Para gerar um report com a tela de preview maximizada e com um determinado nível de zoom.
| |
− | Incluir no uses:
| |
− | *ppViewr
| |
− |
| |
− | Incluir o seguinte código no evento OnPreviewFormCreate do TppReport
| |
− | *R.PreviewForm.WindowState := wsMaximized;
| |
− | *TppViewer(R.PreviewForm.Viewer).ZoomSetting := zsPageWidth;
| |
− |
| |
− |
| |
− | == Metodos e propriedades do RD ==
| |
− |
| |
− | '''StartGroup''' – Inicia um grupo para inserção de conteúdo.
| |
− |
| |
− | '''EndGroup''' – Finaliza o grupo para inserção de conteudo.
| |
− |
| |
− | '''AddPage''' – Adiciona uma quebra de Página. *Não pode ser chamado de dentro de um grupo.
| |
− |
| |
− | '''NextGroup''' – Retorna a posição vertical para impressão do próximo grupo de conteúdo com base na posição onde o último conteúdo foi impresso.
| |
− |
| |
− | '''CurrentLine''' – Retorna a posição vertical onde o último conteúdo foi impresso.
| |
− |
| |
− | '''NextLine''' – Retorna a posição vertical seguinte ao último impresso.
| |
− |
| |
− |
| |
− | ===Métodos para formatação de texto:===
| |
− |
| |
− | Estes métodos só podem ser chamados de dentro de um grupo e sempre que um grupo é iniciado, ele reseta estas formatações.
| |
− |
| |
− | '''FontName''' – Seta a fonte a ser utilizada no conteúdo.
| |
− |
| |
− | '''FontSize''' – Determina o tamanho da fonte a ser utilizada.
| |
− |
| |
− | '''FontStyle''' – Determina o Estilo da fonte (Negrito, Itálico, Sublinhado).
| |
− |
| |
− |
| |
− |
| |
− | ===Métodos para impressão de conteúdo:===
| |
− |
| |
− | Estes métodos só podem ser chamados de dentro de um grupo
| |
− |
| |
− | '''TextOut''' – Imprime um texto na posição especificada.
| |
− |
| |
− | '''TextColumn''' – Imprime um texto na posição especificada dentro do objeto de coluna passado por parâmetro. Permite definir o alinhamento do texto dentro da coluna.
| |
− |
| |
− | '''TextAlignment''' – Imprime um texto na posição e alinhamento especificados por parâmetro..
| |
− |
| |
− | '''Line''' – imprime uma linha entre as coordenadas passadas por parâmetro.
| |
Esse guia tem por funcionalidade auxiliar o desenvolvedor na programação de interfaces utilizando a biblioteca da Uniware.
É importante observar que esse artigo não aborda a instalação dos componentes gráficos. Para isso, visite Instalação Delphi
O capítulo a seguir identifica possíveis problemas que o programador pode encontrar ao desenvolver suas primeiras interfaces. Relevando as propriedades principais:
Inserir o componente SUReportData da R04;
No evento OnStartReport é onde é criado as configurações de cabeçalho e as colunas.
Exemplo:
No evento OnNewPage é feita a impressão do cabeçalho. Seguindo o Exemplo:
Onde o result deve ser a posição vertical para impressão do corpo.
O evento OnNewPage sempre será executado quando iniciar uma nova pagina. A idéia é utilizá-lo para impressão de cabeçalhos da página.
No evento OnPage é onde é feito o loop da impressão. Cada página será impressa até que seu conteúdo atinja a posição marcada na propriedade EndPosition, então o antes de imprimir o comando que extrapolou o EndPosition é chamado o OnEndPage, é criada uma nova página, é chamado o OnNewPage e só depois este comando é impresso na página.
O evento OnEndPage é chamado antes de gerar uma nova página e no final do relatório, seu propósito é fazer a impressão do rodapé da página.
O evento OnEndReport é chamada uma vez depois do último OnEndPage do relatório.