Olá galera, nesta Quick Tips irei mostrar como descobrir o State de um DataSet (ClientDataSet, por exemplo), o State seria o estado em que o DataSet se encontra, veja os tipos definidos :
-
TDataSetState
- dsInactive
- dsBrowse
- dsEdit
- dsInsert
- dsSetKey
- dsCalcFields
- dsFilter
- dsNewValue
- dsOldValue
- dsCurValue
- dsBlockRead
- dsInternalCalc
- dsOpening
Agora como descobrir o State que se encontra o DataSet ? Já ouviram falar ou já usaram a unit TypInfo, nela temos uma function GetEnumName(TypeInfo: PTypeInfo; Value: Integer): string;, onde esta retorna a string representada pelo Enumerado declarado, no caso TDataSetState.
Vamos a construção do Exemplo.
-
Adicione ;
- 1 ClientDataset, CDSState ( Construí um XML, porém nada lhe impede de usar uma base própria )
- 1 DataSource, DSState
- 1 DBGrid
- 1 DBNavigator
Agora iremos dar uses em TypInfo, e logo em seguida criar uma function RetornaEstado
function TFrmPrincipal.RetornaEstado(DataSet: TDataSet): String;
begin
Result := Format('Estado: %s', [GetEnumName(TypeInfo(TDataSetState),
Ord(DataSet.State))]);
end;
Nossa function já esta pronta, vamos agora usar a mesma, geralmente usamos o evento AfterScrol (ClientDataSet), onde os State do DataSet é modificado quando o mesmo entra em Edição, Inserção, e por ai vai.
- CDSState : AfterScroll
procedure TFrmPrincipal.CDSStateAfterScroll(DataSet: TDataSet);
begin
Caption := RetornaEstado(CDSState);
end;
Fico por aqui e na próxima Quick Tips espero que tenham gostado e peço que mandem e-mail com sugestões para as Quick Tips.
Um abraço