Конференция "Базы" » Как безопасно удалять объекты из StringGrid? [MySQL]
 
  • Alez © (30.01.12 17:22) [0]
    Здравствуйте.
    Помогите пожалуйста с проблемой.
    Есть StringGrid, в него встроены CheckBox'ы
         NewCheckBox := TCheckBox.Create(Application);
         NewCheckBox.Caption :='Новый чекбокс';
         NewCheckBox.Parent := StringGrid1.Parent;
         Stringgrid1.Objects[0,i]:=NewCheckBox;


    Далее по коду если мне нужно создать заного эти чекбоксы я сначала их дестрою, а потом создаю по-новой.
    Иногда получается так что в StringGrid'е нет чекбоксов и остаётся 2 строки - одна загаловок, вторая пустая.
    И при попытке удаления вознивает ошибка "Invalid Pointer Operation".
    Удаляю так
    begin
     for i := 1 to StringGrid1.RowCount-1 do
     begin
       if Assigned(StringGrid1.Objects[0, i] as TCheckBox) then
       begin
         (StringGrid1.Objects[0, i] as TCheckBox).Destroy;
         StringGrid1.Cells[1, i]:='';
       end;
     end;
     StringGrid1.RowCount:=2;
    end;

    procedure TForm5.Prev_page;
    begin
     if NOT (Cur_page=0) then
     Begin
       Cur_page:=Cur_page-1;
       DrawPage;
     end;
    end;


    Вопрос: Как ВСЕГДА безопасно можно удалять CheckBox'ы из StringGrid'а? Думаю что при помощи FreeAndNil
    FreeAndNil(StringGrid1.Objects[0, i] as TCheckBox)


    Но так ругается "Constant object cannot be passed as var parameter".
    Прошу помощи :(
  • RWolf © (30.01.12 17:34) [1]
    (StringGrid1.Objects[0, i] as TCheckBox).Free;
    StringGrid1.Objects[0, i] := nil;

  • Alez © (30.01.12 17:58) [2]
    Идеально, спасибо.
 
Конференция "Базы" » Как безопасно удалять объекты из StringGrid? [MySQL]
Есть новые Нет новых   [134431   +11][b:0][p:0.001]