Registro TDmxFieldRec

Unit

Declaração

type TDmxFieldRec = record

Descrição

O registro TDmxFieldRec é usado para guardar as informações passadas pelos Templates das strings.

Visão Geral

Campos

Public Alias: AnsiString;
Public AliasList: TStringList;
Public LinkEdit: TComponent;
Public Template_org: AnsiString;
Public Next: pDmxFieldRec;
Public RSelf: pDmxFieldRec;
Public Prev: pDmxFieldRec;
Public access: byte;
Public Fieldnum: Integer;
Public ScreenTab: integer;
Public ColumnWid: byte;
Public ShownWid: byte;
Public TypeCode: AnsiChar;
Public FldEnum_Lookup:TFldEnum_Lookup;
Public FillValue: AnsiChar;
Public UpperLimit: byte;
Public ShowZeroes: boolean;
Public TrueLen: byte;
Public Parenthesis: boolean;
Public Decimals: byte;
Public FieldSize: integer;
Public DataTab: integer;
Public Template: ptString;
Public DataSource: TDataSource;
Public KeyField: AnsiString;
Public ListField: AnsiString;
Public ListComboBox: PSItem;
Public ListComboBox_Default: Longint;
Public ExecAction: AnsiString;
Public LinkExecAction: pDmxFieldRec;
Public CharShowPassword: AnsiChar;
Public var _Mask: TDates.TMask;
Public QuitFieldAltomatic: Boolean;
Public CurPos: integer;
Public SelStart: Integer;
Public SelEnd: Integer;
Public _FieldAltered: Boolean;
Public HelpCtx_Hint: AnsiString;
Public HelpCtx_Porque: AnsiString;
Public HelpCtx_Onde: AnsiString;
Public _OkSpcAnt: Boolean;
Public ProviderFlags: TUiTypes.TMiProviderFlags;
Public ForeignKey: TuiTypes.TForeignKey;
Public KeyForeign: AnsiString;

Métodos

Public function Mask:TDates.TMask;
Public Function GetOwner: TUiDmxScroller;
Public Function GetAsStringFromBuffer(aWorkingData : pointer):AnsiString;
Public function RemoveMaskNumber(S: AnsiString): AnsiString;
Public function RemoveMask(S: AnsiString): AnsiString;
Public Function AddMask(S: AnsiString;DisplayText: Boolean):Ansistring;
Public Procedure SetAsString(S:AnsiString);
Public Function GetAsString:AnsiString;
Public Function IsInputText:Boolean;
Public function SItemsLen(S: PSItem) : SmallInt;
Public function MaxItemStrLen(AItems: PSItem) : integer;
Public Function GetMaxLength():integer;
Public function IsStaticText:Boolean;
Public function IsInputRadio:Boolean;
Public function IsInputCheckbox:Boolean;
Public function isInputPassword:Boolean;
Public function IsInputHidden:Boolean;
Public function IsSelect:Boolean;
Public function IsComboBox:Boolean;
Public function FirstField: pDmxFieldRec;
Public function LastField: pDmxFieldRec;
Public function NextField: pDmxFieldRec;
Public function PrevField: pDmxFieldRec;
Public Procedure Select;
Public Function GetCount_Cluster:Integer;
Public Function GetValue_Cluster(aItem: Integer):AnsiString;
Public Procedure SetValue_Cluster(aItem:Integer;wValue:AnsiString);
Public Function GetChecked_Cluster( aItem: Integer):Boolean;
Public Procedure SetChecked_Cluster( aItem : Integer;aValue:Boolean);
Public Function GetCount_InputRadio:Integer;
Public Function GetValue_InputRadio(aItem: Integer):AnsiString;
Public Procedure SetValue_InputRadio(aItem:Integer;aValue:AnsiString);
Public Function GetChecked_InputRadio( aItem: Integer):Boolean;
Public Procedure SetChecked_InputRadio( aItem : Integer;aValue:Boolean);
Public Function get_Item_Focused_InputRadio:Longint;
Public Function GetCount_InputCheckbox:Integer;
Public Function GetValue_InputCheckbox(aItem: Integer):AnsiString;
Public Procedure SetValue_InputCheckbox(aItem: Integer;aValue:AnsiString);
Public Function GetChecked_InputCheckbox( aItem: Integer):Boolean;
Public Procedure SetChecked_InputCheckbox( aItem : Integer;aValue:Boolean);
Public Function GetCount_Select:Variant;
Public Function GetSize_Select():Variant;
Public Function GetValue_Select(aItem: Integer):AnsiString;
Public Procedure SetValue_Select(aItem: Integer;aValue:AnsiString);
Public Function GetChecked_Select( aItem: Integer):Boolean;
Public Procedure SetChecked_Select( aItem : Integer;aValue:Boolean);
Public Function IsNumber:Boolean;
Public Function IsNumberReal:Boolean;
Public Function IsNumberInteger:Boolean;
Public function IsBoolean: Boolean;
Public function IsData: Boolean;
Public Function SetAccess(aaccess : byte):Byte;
Public procedure DoOnEnter(Sender: TObject);
Public procedure DoOnExit(Sender: TObject);
Public Procedure CopyFrom(aDataField:TField);
Public Procedure CopyTo(aDataField:TField);

Propriedades

Public property FieldName : AnsiString read _FieldName write SetFieldName;
Public property ID_Dynamic : AnsiString Read _ID_Dynamic Write _ID_Dynamic;
Public property owner_UiDmxScroller : TUiDmxScroller read _owner_UiDmxScroller write SetOwner;
Public property FieldAltered : Boolean read GetFieldAltered write _FieldAltered;
Public property OkSpc : Boolean read _OkSpc write SetOkSpc;
Public property OkMask : Boolean read getOkMask write SetokMask;
Public property AsString : AnsiString read GetAsString write SetAsString;
Public property Value : Variant Read GetValue write SetValue;
Public property FldOrigin_Y: Integer Read GetFldOrigin_Y Write _FldOrigin_Y;
Public property FldOrigin : TPoint read getFldOrigin;
Public property reintrance_OnEnter: Boolean Read Getreintrance_OnEnter Write Setreintrance_OnEnter;
Public property reintrance_OnExit: Boolean Read Getreintrance_OnExit Write Setreintrance_OnExit;

Descrição

Campos

Public Alias: AnsiString;

O campo Alias é usado para associar label ao corrente campo.

  • NOTA

    • Esse campo foi necessário para implementar campos do tipo boolean [X] por que o mesmo sempre vem associado a um rótulos amigável e o controle checkbox precisa dele.

  • EXEMPLO

    • Template de um botão checkbox:

      
      Resourcestring
        tmp_Aceita = '\X Aceita o contrato +ChFN+'Aceita_contrato'+CharHint+'Aceita os termos do contrato?

Public AliasList: TStringList;

O campo AliasList é usado para registrar as opções possívesivel para o campo.

  • NOTAS

    • Este campo deve ser criado em DataField.AddFileds() e destruido em dispose() quando o campo for:

      • FldRadioGroup;

    • Os Campos FldRadioGroup conté um alias do campo onde este alias é adicionado ao campo no qual o alias pertence.

    • EXEMPLO

      • Template de um botão radioButton:

        
        Resourcestring
        
          ˆA˜˜\Ka Indefinido ˆBsexoˆN+'O campo sexo é necessário para....';
          ˆA˜˜\Ka Maculino   ˆBsexo
          ˆA˜˜\Ka Feminino   ˆBsexo

Public LinkEdit: TComponent;

O campo LinkEdit guarda o componente corrente que está editando esse campo.

Public Template_org: AnsiString;

O campo Template_org guarda o modelo original do Template e deve ser inicializado em CreateStruct

Public Next: pDmxFieldRec;

O campo Next aponta para o próximo campo

Public RSelf: pDmxFieldRec;

O campo RSelf é usado para referenciar-se a si mesmo.

Public Prev: pDmxFieldRec;

O campo Prev aponta para o campo anterior

Public access: byte;

O campo access é usado para read-only, hidden, skip, accSpecX

Public Fieldnum: Integer;

O campo Fieldnum Número do campo, varia de 1 a totalFields (Se zero (0) é porque trata-se um rótulos)

Public ScreenTab: integer;

O campo ScreenTab contém o número do controle

Public ColumnWid: byte;

O campo ColumnWid informa a largura do campo

Public ShownWid: byte;

O campo ShownWid informa o número de caracteres que serpa visualizado

Public TypeCode: AnsiChar;

O campo TypeCode é usado para o tipo do código 's', 'r', etc.

Public FldEnum_Lookup:TFldEnum_Lookup;
 
Public FillValue: AnsiChar;

If the Field is numeric, fill in with '#0' if it's alphanumeric, fill in with ' '

Public UpperLimit: byte;

maximum value limit

Public ShowZeroes: boolean;

display zero values

Public TrueLen: byte;

unformatted text length

Public Parenthesis: boolean;

'('/')' AnsiCharacters

Public Decimals: byte;

decimal point or cluster value

Public FieldSize: integer;

sizeof (datatype)

Public DataTab: integer;

position in record

Public Template: ptString;

Field Template

Public DataSource: TDataSource;

A propriedade DataSource permite que controles da LCL (Lazarus Componentes Library) possam usar os dados do componente TDmxScroller.

  • NOTA

    • Essa integração permite que TDmxScroller utilize todos os componentes de banco de dados do Free Pascal.

Public KeyField: AnsiString;

O atributo KeyField contém o nome do campo chave da tabela associada a ListComboBox.

Public ListField: AnsiString;

O atributo ListField contém o nome do campo da tabela associada a ser visualizado a ListComboBox.

Public ListComboBox: PSItem;

O atributo ListComboBox contém uma lista de opções possíveis para o campo.

  • Nota:

    • Após caractere CharListComboBox contém um ponteiro para uma lista de opções do mesmo tipo de campo.

      • Exemplo:

        
        Const
           '˜Dia de vencimento:˜\Ssssss'+ChFN+'Dia'+CreateOptions(accNormal, 1,
              NewSItem('Dia 10',
              NewSItem('Dia 15',
              NewSItem('Dia 20',
              NewSItem('Dia 25',
                       nil)))));

Public ListComboBox_Default: Longint;

O Atributo ListComboBox_Default* é usado guardar o valor padrão para a lista do BomboBox ou LookupBox

  • Exemplo para selecionar "Dia 20" da lista.

    • O número 2 representa o terceiro item da lista.

      
      Const
         '˜Vencimento:˜\Ssssss'+ChFN+'Dia'+CreateOptions(accNormal, 2,
            NewSItem('Dia 10',
            NewSItem('Dia 15',
            NewSItem('Dia 20',
            NewSItem('Dia 25',
                     nil)))));

Public ExecAction: AnsiString;

O campo ExecAction é inicializado no interpretador de Template quando o caractere CharExecAction é encontrado.

  • EXEMPLO DE USO DE AÇÕES NO TEMPLATE

    1. Se o atributo Fieldnum do campo for diferente de zero, então o rótulo do botão associado a ação será o caracteres 🔍 e a ação pode atualizar o buffer do campo.

      • No exemplo a seguir a função CreateExecAction retorna a string chFN+aFieldName+'˜ 🔍˜'+ChEA+(aFieldName+'.'+aExecAction).

      • O interpretador de Template atualiza a string LinkExecAction caso o o ponto seja encontrado no ExecAction do Label.

        
        Result := NewSItem('˜Cliente:˜'+'\LLLLL'+
                            CreateExecAction('Cliente',Pesquisa.Name),nil);

    2. Se o atributo Fieldnum do campo for igual a zero, então a rótulo do botão será o rótulo do campo.

      • No exemplo a seguir um rótulo de novo cliente (icons 🆕) e um botão ok (icons 🆗)

        
        NewSItem('˜ 🆕 &Novo cliente:˜'+CharExecAction+Action_Novo.name+
                 '˜   ˜˜ 🆗 ˜'+CharExecAction+Action_Ok.name)

Public LinkExecAction: pDmxFieldRec;

O atributo LinkExecAction é atualizado com o ponteiro do campo passado por execAction.

  • O Interpretador de Template deve pegar o campo usando a função FieldByName(aFieldName passado em execAction), quando execAction tiver um ponto antes do nome da ação.

    • Ex: (aFieldName.aExecAction).


Result := NewSItem('˜Cliente:˜'+'\LLLLL'+CreateExecAction('Cliente',Pesquisa.Name),nil);

Public CharShowPassword: AnsiChar;

O campo CharShowPassword indica que este campo não deve ser visualizado, usado nos campos tipo senha

Public var _Mask: TDates.TMask;
 
Public QuitFieldAltomatic: Boolean;

O campo QuitFieldAltomatic se true os campos Strings passa para o próximo campo quando o cursor estiver na ultima posição e um novo caractere for digitado.

Public CurPos: integer;

O campo CurPos contém a posição do curso quando este campo estiver sendo editado.

Public SelStart: Integer;

O campo SelStart posição do início da seleção quando este campo estiver sendo editado.

Public SelEnd: Integer;

O campo SelEnd contém a posição do fim da seleção quando este campo estiver sendo editado.

Public _FieldAltered: Boolean;
 
Public HelpCtx_Hint: AnsiString;

O campo HelpCtx_Hint contém a documentação resumida do registro.

Public HelpCtx_Porque: AnsiString;

O campo HelpCtx_Porque contém o por que preciso deste campo?

Public HelpCtx_Onde: AnsiString;

O campo HelpCtx_Onde contém o texto indicando onde esse campo será usado?

Public _OkSpcAnt: Boolean;

Salva o valor de _OkSpc antes de setar com aOkSpc

Public ProviderFlags: TUiTypes.TMiProviderFlags;

O atributo ProviderFlags é usado nos métodos TUiDmxScroller_sql.CreateTables e TUiDmxScroller_sql.CreateBufDataset_FieldDefs para integração do componente TDmxScroller com o componente TSqlDbConnector.

Public ForeignKey: TuiTypes.TForeignKey;

O atributo ForeignKey é usado para criar chave estrangeira e os relacionamentos

Public KeyForeign: AnsiString;

O atributo KeyForeign contém uma string com o nome da tabela estrangeira e a lista de campos relacionados

  • EXEMPLO

    • CIDADES,ESTADO;CIDADE

      • CIDADES = tabela estrangeira

      • ESTADO = Estado da cidade.

      • CIDADE = Cidade do estado.

Métodos

Public function Mask:TDates.TMask;

O função Mask retorna o tipo da mascara contida em template_org;

Public Function GetOwner: TUiDmxScroller;
 
Public Function GetAsStringFromBuffer(aWorkingData : pointer):AnsiString;
 
Public function RemoveMaskNumber(S: AnsiString): AnsiString;
 
Public function RemoveMask(S: AnsiString): AnsiString;
 
Public Function AddMask(S: AnsiString;DisplayText: Boolean):Ansistring;
 
Public Procedure SetAsString(S:AnsiString);
 
Public Function GetAsString:AnsiString;
 
Public Function IsInputText:Boolean;
 
Public function SItemsLen(S: PSItem) : SmallInt;
 
Public function MaxItemStrLen(AItems: PSItem) : integer;
 
Public Function GetMaxLength():integer;
 
Public function IsStaticText:Boolean;
 
Public function IsInputRadio:Boolean;
 
Public function IsInputCheckbox:Boolean;
 
Public function isInputPassword:Boolean;
 
Public function IsInputHidden:Boolean;
 
Public function IsSelect:Boolean;

O objeto filho que implementar um ISelect deve anular e retornar a interface ISelect;

Public function IsComboBox:Boolean;

Usado quando trata-se de campos enumerados em memória ou em arquivos.

Public function FirstField: pDmxFieldRec;
 
Public function LastField: pDmxFieldRec;
 
Public function NextField: pDmxFieldRec;
 
Public function PrevField: pDmxFieldRec;
 
Public Procedure Select;
 
Public Function GetCount_Cluster:Integer;
 
Public Function GetValue_Cluster(aItem: Integer):AnsiString;
 
Public Procedure SetValue_Cluster(aItem:Integer;wValue:AnsiString);
 
Public Function GetChecked_Cluster( aItem: Integer):Boolean;
 
Public Procedure SetChecked_Cluster( aItem : Integer;aValue:Boolean);
 
Public Function GetCount_InputRadio:Integer;
 
Public Function GetValue_InputRadio(aItem: Integer):AnsiString;
 
Public Procedure SetValue_InputRadio(aItem:Integer;aValue:AnsiString);
 
Public Function GetChecked_InputRadio( aItem: Integer):Boolean;
 
Public Procedure SetChecked_InputRadio( aItem : Integer;aValue:Boolean);
 
Public Function get_Item_Focused_InputRadio:Longint;
 
Public Function GetCount_InputCheckbox:Integer;

Construção da propriedade Count

  • Objetivo: Retorna o numero de items da lista onde os itens devem ser acessados com index 0 a count-1

Public Function GetValue_InputCheckbox(aItem: Integer):AnsiString;

Construção da propriedade Value

  • Objetivo: Ler o label associado a opção ou trocar seu valor.

  • Sintaxe: Setando = Value[1] = 'Sim'; Value[2] = 'Nao'; Value[1] = 'Yes' Lendo = If LowerCase(Value[1]) = 'SIM' Then;

Public Procedure SetValue_InputCheckbox(aItem: Integer;aValue:AnsiString);
 
Public Function GetChecked_InputCheckbox( aItem: Integer):Boolean;

Construção da propriedade Checked - Sintaxe: 1 = If Checked[1] then; 2 = Checked[1] := True.

  • Objetivo: Selecionar um item da lista de opções ou checar se a opção está selecionada

Public Procedure SetChecked_InputCheckbox( aItem : Integer;aValue:Boolean);
 
Public Function GetCount_Select:Variant;

Construção da propriedade Count de campos enumerados

  • Objetivo: Retorna o numero de items da lista onde os itens devem ser acessados com index 0 a count-1

Public Function GetSize_Select():Variant;

Número de Linhas a ser mostrada no box. Usado em campos enumerados.

Public Function GetValue_Select(aItem: Integer):AnsiString;

Construção da propriedade Value

  • Objetivo: Ler o label associado a opção ou trocar seu valor.

  • Sintaxe: Setando = Value[1] = 'Sim'; Value[2] = 'Nao'; Value[1] = 'Yes' Lendo = If LowerCase(Value[1]) = 'SIM' Then;

Public Procedure SetValue_Select(aItem: Integer;aValue:AnsiString);
 
Public Function GetChecked_Select( aItem: Integer):Boolean;

Construção da propriedade Checked - Sintaxe: 1 = If Checked[1] then; 2 = Checked[1] := True.

  • Objetivo: Selecionar um item da lista de opções ou checar se a opção está selecionada

Public Procedure SetChecked_Select( aItem : Integer;aValue:Boolean);
 
Public Function IsNumber:Boolean;

O método IsNumber retorna true se o campo é numérico e false se alfanumérico

Public Function IsNumberReal:Boolean;
 
Public Function IsNumberInteger:Boolean;
 
Public function IsBoolean: Boolean;
 
Public function IsData: Boolean;
 
Public Function SetAccess(aaccess : byte):Byte;
 
Public procedure DoOnEnter(Sender: TObject);

O método DoOnEnter é executado toda vez antes do controle ler do buffer do campo.

  • Descrição

    • O método DoOnEnter é chamado quando o campo associado à instância de TDmxFieldRec recebe foco. Ele assegura que o campo seja registrado como o campo atual e atualizado adequadamente dentro do owner_UiDmxScroller. Além disso, ele executa os eventos de entrada de campo e cálculo de campo, se definidos, e também atualiza os buffers se o campo foi alterado.

  • Parâmetros Locais

    • reintrance_DmxFieldRec_OnEnter: Variável booleana para evitar reentrância no método, garantindo que a lógica seja executada apenas uma vez por chamada.

  • Fluxo de Execução

    1. Verifica se reintrance_DmxFieldRec_OnEnter está desativada e se owner_UiDmxScroller está atribuído.

      1. Define reintrance_DmxFieldRec_OnEnter como true para evitar reentrância.

      2. Chama os métodos SetCurrentField e Scroll_it_inview no owner_UiDmxScroller para atualizar o campo atual e garantir que ele esteja visível na interface.

      3. Executa o evento onEnterField se ele estiver atribuído e o número do campo (Fieldnum) for diferente de zero.

      4. Executa o evento OnCalcField se ele estiver atribuído e o número do campo (Fieldnum) for diferente de zero.

      5. Se o campo tiver sido alterado (FieldAltered), chama os métodos PutBuffers e UpdateBuffers no owner_UiDmxScroller para atualizar o estado dos buffers.

      6. No bloco finally, redefine reintrance_DmxFieldRec_OnEnter para false.

  • Ver Também

    • TDmxScroller.SetCurrentField

    • TDmxScroller.Scroll_it_inview

    • TDmxScroller.onEnterField

    • TDmxScroller.OnCalcField

    • TDmxScroller.PutBuffers

    • TDmxScroller.UpdateBuffers

Public procedure DoOnExit(Sender: TObject);

O método DoOnExit é executado toda vez antes do controle gravar no buffer do campo.

  • Descrição

    • O método DoOnExit é executado quando o campo associado à instância de TDmxFieldRec perde o foco. Ele garante que os eventos e cálculos relacionados à saída do campo sejam processados e que os buffers sejam atualizados se o campo foi alterado.

  • Parâmetros Locais

    • reintrance_DmxFieldRec_OnExit: Variável booleana para evitar reentrância no método, assegurando que o processamento de saída ocorra apenas uma vez por chamada.

  • Fluxo de Execução

    1. Verifica se reintrance_DmxFieldRec_OnExit está desativada e se owner_UiDmxScroller está atribuído.

    2. Define reintrance_DmxFieldRec_OnExit como true para evitar reentrância.

    3. Executa o evento onExitField se ele estiver atribuído e o número do campo (Fieldnum) for diferente de zero.

    4. Executa o evento OnCalcField se ele estiver atribuído e o número do campo for diferente de zero.

    5. Se o número do campo for diferente de zero e o campo tiver sido alterado (FieldAltered), executa o evento OnChangeField (caso atribuído) e chama DoChangeField.

    6. Chama o método DoCalcFields para recalcular os campos, se necessário.

    7. Se o campo foi alterado, chama os métodos PutBuffers, UpdateCommands e UpdateBuffers para atualizar os buffers e comandos do scroller.

    8. No bloco finally, redefine reintrance_DmxFieldRec_OnExit para false.

  • Ver Também

    • TDmxScroller.onExitField

    • TDmxScroller.OnCalcField

    • TDmxScroller.OnChangeField

    • TDmxScroller.DoChangeField

    • TDmxScroller.DoCalcFields

    • TDmxScroller.PutBuffers

    • TDmxScroller.UpdateCommands

    • TDmxScroller.UpdateBuffers

Public Procedure CopyFrom(aDataField:TField);

O atributo CopyFrom copia o conteúdo de TDataField para self

Public Procedure CopyTo(aDataField:TField);

O atributo CopyTo copia o conteúdo de self para TDataField.

Propriedades

Public property FieldName : AnsiString read _FieldName write SetFieldName;

O campo FieldName guarda o nome do campo e deve ser inicializado em CreateStruct

Public property ID_Dynamic : AnsiString Read _ID_Dynamic Write _ID_Dynamic;
 
Public property owner_UiDmxScroller : TUiDmxScroller read _owner_UiDmxScroller write SetOwner;
 
Public property FieldAltered : Boolean read GetFieldAltered write _FieldAltered;

A propriedade FieldAltered indica que o campo foi alterado e deve ser atualizado na visão caso a tabela esteja em modo de edição.

Public property OkSpc : Boolean read _OkSpc write SetOkSpc;
 
Public property OkMask : Boolean read getOkMask write SetokMask;

O método OkMask é usado para habilitar ou não em GetString a mascara em campos numéricos.

Public property AsString : AnsiString read GetAsString write SetAsString;
 
Public property Value : Variant Read GetValue write SetValue;
 
Public property FldOrigin_Y: Integer Read GetFldOrigin_Y Write _FldOrigin_Y;
 
Public property FldOrigin : TPoint read getFldOrigin;
 
Public property reintrance_OnEnter: Boolean Read Getreintrance_OnEnter Write Setreintrance_OnEnter;

A propriedade reintrance_OnEnter usado para evitar reentrância do evento DoOnEnter()

Public property reintrance_OnExit: Boolean Read Getreintrance_OnExit Write Setreintrance_OnExit;

A propriedade reintrance_OnExit é usado para evitar reentrância do evento DoOnExit()


Gerado por PasDoc 0.16.0.