Unit mi_rtl_ui_Dmxscroller
Descrição
A unit mi_rtl_ui_Dmxscroller
implementa a classe TUiDmxScroller e registro TDmxFieldRec.
ORIGEM DESTA IDEIA:
Este projeto foi criado baseado na ideia do projeto:
VERSÃO
Alpha - 1.0.0
HISTÓRICO
CÓDIGO FONTE:
PENDÊNCIAS
T12 Criar Property TMi_rtl_dmxScroller.TemplateClient_Path
T12 Criar Property TMi_rtl_dmxScroller.ClientTemplates_ dataModule_FileName
T12 Criar Property TMi_rtl_dmxScroller.ClientTemplates_Form_FileName
T12 O grupo TMi_RadioGroup_Lcl não é selecionado com a tecla na tecla TAB
Quando os botões TRadioButton estão dentro do TRadioGroup a propriedade TRadioGroup.TabStop não funciona.
T12 Implementar o campo FldLink. (Esse campo executa uma ação usando controle TStaticText.
T12 Implementar a possibilidade das fontes do label ser personalizada baseado em um estilo que pode ser uma variável global.
Suponha que ˆZ = <h1> Título e ˆD = <B> de negrito então o sistema informa a TDmxFieldRec.Style = nome do estilo onde nome do estilo = 'Font = FonteX; Size= XX; etc.. '
Exemplo:
˜ˆZCADASTRO DE ALUNOSˆZ˜
˜ˆDÑome do AlunoˆD:˜\ssssssssss
T12 Implementar a edição de campo FldMemo.
T!2 Implementar a campo fldBLOb;
t12 Implementar a edição de fldHexValue.
O campo Hexadecimal deve ser campo longint mais a edição é uma string comum . FldStr
T12 Implementar a execução do evento do tipo CharExecProc quando a tecla F7 é pressionada.
T12 Criar opção para gerar cliente HTML a partir de TDmxScroller
Referência: [Componente que espoe dados para o browser](https://wiki.freepascal.org/SqlDbRestBridge#Purpose)
T12 Nosso código só é executado com o editor de propriedade. Se não estamos no editor de propriedade então não temos controle do código no modo design. Qual o meu problema: O formulário deve ser criado em tempo de execução, porém eu queria ver como ele estava ficando sem precisar compilar e executar o código, por isso coloquei o código em um stringList e ao ativar o objeto, o formulário é criado. Porém esses objetos criados no designer não podem ficar no arquivo de recursos porque quando for executado vai haver duplicidade.
Quando eu desativo o objetos todos os objetos que ele criou são excluídos do arquivo de recursos.
Isso eu já faço agora, mais quando distribuir o componente as pessoas vão deixar esses componente usado no teste e ao executar vai haver error.
Por isso eu queria que caso a propriedade active tivesse em true eu queria que ela ficasse em false.
CONCLUÍDO
T12 Criar tipo TEn_OnEvent_DmxFieldRec;
T12 Criar TEnClientsApplication = (ApLcl,ApJavaScript,ApDynamichtml,ApVueJs,ApAngular); ✅
T12 Implementar o método public function Locate(): Boolean;override;overload;✅
T12 Implementar a propriedade public property CanModify: Boolean;
T12 Implementar a propriedade public property TDmxScrooler.Modified : Boolean read _Modified; ✅
T12 Criar método Select_First_Field_Normal para se acionado no método DoOnNewRecord.
T12 Implementar o evento OnChange em todos os controles, visto que o mesmo é mais fácil criar lógica de negócios visto que o mesmo só é executado se o campo for modificado. ✅
T12 Criar evento Procedure OnCalcField;✅
T12 Criar evento Procedure OnCalcFields;✅
T12 Criar evento TUiDmxScroller.OnBeforeDelete.✅
T12 Criar evento TUiDmxScroller.OnAfterDelete.✅
T12 Criar evento TUiDmxScroller.OnBeforeUpdate.✅
T12 Criar evento TUiDmxScroller.OnAfterUpdate. ✅
T12 Criar evento onAfterInsert e depurar as consequencias caso retorne false; ✅
T12 Criar método Procedure updateCommands; ✅
T12 Criar evento onBoforeInsert ✅
T12 Criar function GetNextValue(const SequenceName: string; IncrementBy: integer): Int64;✅
T12 Criar function MaxPKey(aTabela, aID: String): LongInt;overload;✅
T12 Criar Function MaxPKey: LongInt;Virtual;overload;✅
T12 Criar function GetRecNo: LongInt; virtual;✅
T12 Criar function TDmxFieldRec.Mask :TMask.✅
Retorna o tipo da mascrara contida no template;✅
T12 Checar porque o campo combobox não está funcinando o valor default;✅
T12 Criar método: Public Function UpdateRec_if_RecordAltered:Boolean;Virtual;✅
T12 Implementar edição do campo FldDateTime. Obs: 'D'; //:< D = TipoData dd/nn/yy✅
T12 Criar Método StarTransaction;✅
T12 Criar Método Commit✅
T12 Criar Método Rollback✅
T12 Quando o usuário teclar tab para passar o campo e o campo seguinte não estiver visível o sistema deve passar a página do controle parent.✅
T12 Implementar a edição FldBoolean. ✅
Os campo Boolean deve ser editados como uma campo enumerado onde:
0 - False; não
1 = True; sim
T12 Implementar a propriedade AlignmentLabels := taCenter; ✅ AlignmentLabels := taLeftJustify; ✅ AlignmentLabels := taRightJustify ; ✅
T12 Na construção do formulário LCL setar o campo PDmxFieldRec.LinkEdit; ✅
T12 Implementar o método: function FieldByNum(aFieldnum:Integer):PDmxFieldRec; ✅
T12 Criar método Edit semelhante a TdataSet.edit ✅
T12 Criar método: Public Function UpdateRec_if_RecordAltered:Boolean;Virtual;✅
T12 Criar método para habilitar e desabilitar a tabela de acordo com seu estado atual; ✅
O método EnableUpdateNewRecord é habilita os botões grava e Refresh quando o modo appending for true. É acionando em ChangeMadeOnOff.
public procedure EnableUpdateNewRecord;✅
O método EnableUpdateRecord habilita os botões Novo, grava e Refresh quando o modo appending for false. É acionando em ChangeMadeOnOff.
public procedure EnableUpdateRecord;✅
T12 Criar método habilitar todos os botões quando em changeMadeOnOff O registro não foi alterado;
Public procedure EnableRefresh; ✅
T12 O Método Refresh deve anular o que foi digitado até o momento com os dados do dataset. ✅
T12 Quando o DataSet estiver vazio o evento Do OnNewRecord deve ser acionado no método .Refresh ✅
T12 Criar Método: public procedure DisableCommands(aCommands: Array of AnsiString);✅
T12 Criar Método: Public procedure EnableCommands(aCommands: Array of AnsiString);✅
T12 Criar atributo: public Var Mi_ActionList : TActionList;✅
T12 Criar métodos: Public function GetAction(aName:AnsiString):TAction;✅
T12 Criar métodos: public Procedure SetStateAction(aName:AnsiString;aEnable:Boolean);✅
T12 Criar métodos: public Function getStateAction(aName:AnsiString):Boolean; ✅
T12 Criar métodos: public function CommandsEnabled(aCommands : array of ansistring): Boolean; ✅
T12 Criar métodos: public function CommandsDisabled(aCommands : array of ansistring): Boolean; ✅
T12 Publica a propriedade DoOnNewRecord_FillChar e atualizar o buffer quando setado em true; ✅
T12 Criar atributo CurrentBookmark: TBookMark; ✅
T12 Criar método: Public Function GetRec :Boolean; Virtual; ✅
T12 Criar método: Public Function DeleteRec :Boolean; Virtual; ✅
T12 Criar método: Public Function PutRec:Boolean;Virtual; ✅
T12 Criar método: Public Function UpdateRec: Boolean; Virtual; ✅
T12 Criar método: Public Function AddRec:Boolean ;Virtual; ✅;
T12 Criar método: Public Function LastRec: Boolean;overload;virtual; ✅
T12 Criar método: Public Function FirstRec: Boolean;overload;virtual; ✅
T12 Criar método: Public Function PrevRec: Boolean;overload;virtual; ✅
T12 Criar método: Public Function NextRec: Boolean;overload;virtual; ✅
T12 O campo FldCheckBox não está funcionando o flag charHint ✅.
T12 Implementar o controle ChatHint no Template para seja possível passar um documento markdown pelo Template; ✅.
T12 Ao executar o evento OnExit é necessário o redraw em de todos os campo caso haja alteração ao retorna da chamada. ✅.
T12 O componente TMi_ui_Button_lcl não está na lista dos campos selecionados na tecla tab. ✅
T12 Os campos FldEnum não estão mostrando o help. ✅
T12 Criar a propriedade Locked; ✅
T12 No pacote mi.rtl.ui, transferir toda dependência do pacote LCL para o pacote mi.rtl.form.
T12 Implementar a propriedade TUiDmxScroller.JSONObject ✅
T12 No método SetString em caso de erro de gera exceção informando valor máximo do campo e não o valor digitado. ✅
Uses
- Classes
- SysUtils
- ActnList
- db
- BufDataset
- xmldatapacketreader
- SqlDb
- fpjson
- Variants
- mi.rtl.miStringlist
- mi.rtl.Consts.StrError
- mi.rtl.Objects.Methods.Exception
- mi.rtl.Objects.Methods
- mi.rtl.Objects.Consts.Mi_MsgBox
- mi_rtl_ui_Types
- mi.rtl.objects.Methods.dates
- mi.rtl.Consts
- mi_rtl_ui_methods
Visão Geral
Classes, Interfaces, Objetos e Registros
Nome | Descrição |
---|---|
Interface IMi_rtl_ui_Form |
|
Classe TFldEnum_Lookup |
|
Registro TDmxFieldRec |
|
Classe TMiBufDataset |
|
Classe TDataFields |
|
Classe TFields |
|
Classe TUiDmxScroller |
Funções e Procedimentos
function Message(Receiver: TObjectsMethods; What, Command: Word;InfoPtr: Pointer): Pointer; |
Tipos
PSItem = TUiMethods.PSItem; |
tString = TUiMethods.tString; |
ptString = TUiMethods.Ptstring; |
TDates = mi.rtl.objects.Methods.dates.TDates; |
PValue = TUiMethods.PValue; |
TValue = TUiMethods.TValue; |
TEvent = TUiMethods.TEvent; |
SmallWord = TUiMethods.SmallWord; |
TEnClientsApplication = TUiMethods.TEnClientsApplication ; |
TNameClientsApplication = TUiMethods.TNameClientsApplication; |
pDmxFieldRec = ˆTDmxFieldRec; |
TOnGetTemplate = function (aNext: PSItem) : PSItem of Object unimplemented; |
TOnAddTemplate = Procedure(const aUiDmxScroller:TUiDmxScroller) of Object unimplemented; |
TEndProc = Procedure(Const AOwner:TUiDmxScroller; Const ADmxFieldRec:PDmxFieldRec); |
TOnEnter = Procedure(aDmxScroller:TUiDmxScroller) of Object unimplemented; |
TOnExit = Procedure(aDmxScroller:TUiDmxScroller) of Object unimplemented; |
TOnNewRecord = Procedure(aDmxScroller:TUiDmxScroller) of Object unimplemented; |
TOnCloseQuery = Procedure(aDmxScroller:TUiDmxScroller; var CanClose:boolean) of Object unimplemented; |
TOnEnterField = Procedure(aField:pDmxFieldRec) of Object unimplemented; |
TOnExitField = Procedure(aField:pDmxFieldRec) of Object unimplemented; |
TOnCalcField = Procedure(aField:pDmxFieldRec) of Object unimplemented; |
TOnChangeField = Procedure(aField:pDmxFieldRec) of Object unimplemented; |
TOnBeforeInsert = function(const aUiDmxScroller:TUiDmxScroller):boolean of Object unimplemented; |
TOnAfterInsert = function(const aUiDmxScroller:TUiDmxScroller):boolean of Object unimplemented; |
TOnBeforeUpdate = function(const aUiDmxScroller:TUiDmxScroller):boolean of Object unimplemented; |
TOnAfterUpdate = function(const aUiDmxScroller:TUiDmxScroller):boolean of Object unimplemented; |
TOnBeforeDelete = function(const aUiDmxScroller:TUiDmxScroller):boolean of Object unimplemented; |
TOnAfterDelete = function(const aUiDmxScroller:TUiDmxScroller):boolean of Object unimplemented; |
TOnCalcFields = Procedure(const aUiDmxScroller:TUiDmxScroller) of Object unimplemented; |
TEn_OnEvent_DmxFieldRec = (...); |
TMiDataPacketFormat = (...); |
Constantes
AccNormal = TUiMethods.AccNormal; |
LF = TConsts.LF; |
Descrição
Funções e Procedimentos
function Message(Receiver: TObjectsMethods; What, Command: Word;InfoPtr: Pointer): Pointer; |
Tipos
PSItem = TUiMethods.PSItem; |
tString = TUiMethods.tString; |
ptString = TUiMethods.Ptstring; |
TDates = mi.rtl.objects.Methods.dates.TDates; |
PValue = TUiMethods.PValue; |
TValue = TUiMethods.TValue; |
TEvent = TUiMethods.TEvent; |
SmallWord = TUiMethods.SmallWord; |
TEnClientsApplication = TUiMethods.TEnClientsApplication ; |
O tipo |
TNameClientsApplication = TUiMethods.TNameClientsApplication; |
O tipo |
pDmxFieldRec = ˆTDmxFieldRec; |
O tipo |
TOnGetTemplate = function (aNext: PSItem) : PSItem of Object unimplemented; |
Usado para criar modelos de formulários dinamicamente usando como parâmetro listas de PSItems. |
TOnAddTemplate = Procedure(const aUiDmxScroller:TUiDmxScroller) of Object unimplemented; |
O tipo
|
TEndProc = Procedure(Const AOwner:TUiDmxScroller; Const ADmxFieldRec:PDmxFieldRec); |
O tipo |
TOnEnter = Procedure(aDmxScroller:TUiDmxScroller) of Object unimplemented; |
O tipo |
TOnExit = Procedure(aDmxScroller:TUiDmxScroller) of Object unimplemented; |
O tipo |
TOnNewRecord = Procedure(aDmxScroller:TUiDmxScroller) of Object unimplemented; |
O tipo |
TOnCloseQuery = Procedure(aDmxScroller:TUiDmxScroller; var CanClose:boolean) of Object unimplemented; |
O tipo
|
TOnEnterField = Procedure(aField:pDmxFieldRec) of Object unimplemented; |
O tipo |
TOnExitField = Procedure(aField:pDmxFieldRec) of Object unimplemented; |
O tipo |
TOnCalcField = Procedure(aField:pDmxFieldRec) of Object unimplemented; |
O tipo |
TOnChangeField = Procedure(aField:pDmxFieldRec) of Object unimplemented; |
O tipo
|
TOnBeforeInsert = function(const aUiDmxScroller:TUiDmxScroller):boolean of Object unimplemented; |
O tipo |
TOnAfterInsert = function(const aUiDmxScroller:TUiDmxScroller):boolean of Object unimplemented; |
O tipo |
TOnBeforeUpdate = function(const aUiDmxScroller:TUiDmxScroller):boolean of Object unimplemented; |
O tipo |
TOnAfterUpdate = function(const aUiDmxScroller:TUiDmxScroller):boolean of Object unimplemented; |
O tipo |
TOnBeforeDelete = function(const aUiDmxScroller:TUiDmxScroller):boolean of Object unimplemented; |
O tipo |
TOnAfterDelete = function(const aUiDmxScroller:TUiDmxScroller):boolean of Object unimplemented; |
O tipo |
TOnCalcFields = Procedure(const aUiDmxScroller:TUiDmxScroller) of Object unimplemented; |
O tipo |
TEn_OnEvent_DmxFieldRec = (...); |
O tipo enumerado
Valores
|
TMiDataPacketFormat = (...); |
A classe Valores
|
Constantes
AccNormal = TUiMethods.AccNormal; |
LF = TConsts.LF; |
Gerado por PasDoc 0.16.0.