faustrash |
Значит никто не расскажет в чем может быть дело?(( |
Ну почему же поведаю тебе я эту страшную тайну))), короче все ячейки которые в данный момент не отображены имеют Rect равный 0, для размещения видимых обьектов в стринг гриде тебе необходимо создать потомка от стринг грида в котором напишеш свою процедуру отображения и скрытия обьектов, эту процедуру повесиш на обработчики событий OnTopLeftChanged и OnResize, также требуется перегрузка метода:
procedure ColWidthsChanged; override;
в которой после inherited нужно прописать вызов процедуры изменений, например так:
procedure TUnitsCustomGrid.RepaintCheckBox(Sender: TObject);
var
i: Integer;
ARect: TRect;
begin
for i := 1 to RowCount - 1 do
if not(Objects[0, i] = nil) then
begin
ARect := CellRect(0, i);
if ARect.Right = ARect.Left then
begin
TCheckBox(Objects[0, i]).Visible := False;
Continue;
end
else
TCheckBox(Objects[0, i]).Visible := True;
TCheckBox(Objects[0, i]).Left := ARect.Left;
TCheckBox(Objects[0, i]).Top := ARect.Top;
TCheckBox(Objects[0, i]).Width := ARect.Right - ARect.Left;
TCheckBox(Objects[0, i]).Height := ARect.Bottom - ARect.Top;
end;
end;
только будь окуратен, большое количество обьектов очень сильно тормозит