J'ai peut être oublié quelque chose en enlevant le superflu pour votre cas, voici le code complet :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| procedure ResetDataSource(Form:TObject);
Var I : Integer;
Begin
If Form.ClassName = 'FMain' Then // A remplacer par la valeur recheché
Begin
For I := 0 To TForm(Form).ComponentCount -1 Do
If TForm(Form).Components[I].ClassName = 'TwwDBGrid' Then
TwwDBGrid(TForm(Form).Components[I]).DataSource := Nil
Else If TForm(Form).Components[I].ClassName = 'TDataSource' Then
TDataSource(TForm(Form).Components[I]).DataSet := Nil
Else If TForm(Form).Components[I].ClassName = 'TwwDBEdit' Then
Begin
TwwDBEdit(TForm(Form).Components[I]).DataField := '';
TwwDBEdit(TForm(Form).Components[I]).DataSource := nil;
End
Else If TForm(Form).Components[I].ClassName = 'TADOQuery' Then
Begin
TADOQuery(TForm(Form).Components[I]).BeforePost := nil;
TADOQuery(TForm(Form).Components[I]).AfterPost := nil;
TADOQuery(TForm(Form).Components[I]).BeforeOpen := nil;
TADOQuery(TForm(Form).Components[I]).AfterOpen := nil;
TADOQuery(TForm(Form).Components[I]).Filtered := False;
TADOQuery(TForm(Form).Components[I]).Filter := '';
End
Else If TForm(Form).Components[I].ClassName = 'TDateTimePicker' Then
TDateTimePicker(TForm(Form).Components[I]).Date := Now();
End
Else If Form.ClassName = 'TData' Then // DEUXIEME CLASSNAME POSSIBLE
Begin
For I := 0 To TDataModule(Form).ComponentCount -1 Do
If TDataModule(Form).Components[I].ClassName = 'TDataSource' Then
TDataSource(TDataModule(Form).Components[I]).DataSet := Nil;
End;
End; |
Et l'appel à la fonction :
ResetDataSource(MaForm); //Dans cet exemple Maform.Classname = 'FMain'
Encore une fois ce code a été fait pour un cas bien précis, il est donc a adapter ^^
Partager