Bonjour

J'utilises la Grid de devexpress, quand je marque plulsieurs ligne pour delete, ca marche

mais s'il y a un regroupement ca marche plus, il ne passe plus dans mon for i
je suis obligé d'interdire la suppression si regroupement, et c'est pas normal

j ai mis mon code : ou est le probleme

merci

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
procedure TFRepertoire.Supprimerlafiche1Click(Sender: TObject);
var
  QueryDeleteIndividu: TIBQuery;
  sMessage: string;
  i: integer;
begin
 
  if (dxDBGridNom.SelectedCount > 0) and (dxDBGridNom.GroupColumnCount > 0) then
    begin
      Showmessage('Suppression de fiches interdite, car il y a un regroupement. Enlevez d''abord le regroupement');
      exit;
    end;
 
  if dxDBGridNom.SelectedCount > 1 then
    sMessage := 'Confirmez-vous la suppression des ' + intToStr(dxDBGridNom.SelectedCount) + ' fiches individu ?'
  else
    sMessage := 'Confirmez-vous la suppression de cette fiche individu ?';
 
  if MyMessageDlg(sMessage, mtWarning, [mbYes, mbNo], 0) = mrYes then
    begin
      try
        screen.Cursor := crHourglass;
        for i := 0 to dxDBGridNom.Count - 1 do
          if dxDBGridNom.items[i].Selected = true then
            begin
 
              //showmessage(dxDBGridNom.Items[i].Values[dxDBPrenom.Index]); //.FocusedNode.Strings[dxDBPrenom.Index],);
              Application.ProcessMessages;
              QueryDeleteIndividu := TIBQuery.Create(Self);
              QueryDeleteIndividu.Close;
              QueryDeleteIndividu.DataBase := dm.ibd_BASE;
              QueryDeleteIndividu.Transaction := dm.IBT_BASE;
              QueryDeleteIndividu.SQL.Clear;
              QueryDeleteIndividu.SQL.Add('delete from individu where CLE_FICHE=:CLE_FICHE');
              QueryDeleteIndividu.ParamByName('CLE_FICHE').AsInteger := StrToInt(dxDBGridNom.Items[i].Values[dxDBCleFiche.Index]);
 
              QueryDeleteIndividu.ExecSQL;
              QueryDeleteIndividu.Close;
              FreeAndNil(QueryDeleteIndividu);
 
            end;
 
        dm.IBT_BASE.CommitRetaining;
        Application.ProcessMessages;
 
        InitOngletsActifs;
        doRefreshRepertoire;
        FMain.doCompteIndi;
 
        screen.Cursor := crDefault;
      except
      end;
    end;
 
  dxDBGridNom.ClearSelection;
end;