Canclose

Résolu
pierrotk10d
Messages postés
107
Date d'inscription
mardi 13 novembre 2007
Statut
Membre
Dernière intervention
20 juillet 2021
- 30 janv. 2019 à 16:35
pierrotk10d
Messages postés
107
Date d'inscription
mardi 13 novembre 2007
Statut
Membre
Dernière intervention
20 juillet 2021
- 31 janv. 2019 à 10:08
Bonjour,
Comment faire pour s'assurer que toutes les tables d'une fiche ne sont pas mode dsEdit ou dsInsert avant de fermer la fiche. J'aimerais utiliser Canclose. Comment passer la liste des tables à la fonction IsTableEnEdition? j'ai un peu de difficulté à me remettre dedans. C'est l'age!
procedure TfEdition.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
// peut on faire: for i := 0 to le nombre de tables ?
CanClose := IsTableEnEdition(DM. Table[i]);
end;

function TfEdition.IsTableEnEdition(DataSet: TDataSet): Boolean;
begin
Result := True;
With TDBDataset(Dataset) do begin
if (State in dsEditModes) then begin
if MessageDlg('Appliquer les modifications avant de fermer ?',
mtConfirmation, [mbYes, mbNo], 0) = mrYes then
Cancel
else
Result := False;
end;
end;
end;

Cordiales salutations
A voir également:

1 réponse

pierrotk10d
Messages postés
107
Date d'inscription
mardi 13 novembre 2007
Statut
Membre
Dernière intervention
20 juillet 2021
3
31 janv. 2019 à 10:08
Bonjour,
J'ai trouvé.

procedure TfEdition.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var i: Integer;
begin
For i := 0 To DM.ComponentCount -1 do
If (DM.Components[i] is TTable) then
CanClose := IsTableEnEdition(Components[i] as TTable);
end;

function TfEdition.IsTableEnEdition(DataSet: TDataSet): Boolean;
begin
Result := True;
With TDBDataset(Dataset) do begin
if (State in dsEditModes) then begin
if MessageDlg('Appliquer les modifications avant de fermer ?',
mtConfirmation, [mbYes, mbNo], 0) = mrYes then
Cancel
else
Result := False;
end;
end;
end;

0