Может, у кого есть опыт вставки TCheckbox в TStringGrid в Lazarus? Помогите, плиз.

Модератор: Модераторы
* cbsCheckboxColumn
This editor style is at the moment only available in TDBGrid. It can be useful when field contents associated with the column are restricted to a pair of values, for example, yes-no, true-false, on-off
StringGrid.Objects[col, row]:=TCheckBox.Create(StringGrid);
TCheckBox(StringGrid.Objects[col, row]).Parent:=StringGrid;
procedure TForm1.StringGrid1DrawCell(Sender: TObject; aCol, aRow: Integer;
aRect: TRect; aState: TGridDrawState);
begin
if((aCol=0)and(aRow=0))then
begin
IsledGrid.Canvas.Font.Name:='TimesNewRoman';
IsledGrid.Canvas.Font.Size:=10;
IsledGrid.Canvas.TextOut(aRect.Left+30,aRect.Top+1,'многострочный');
IsledGrid.Canvas.TextOut(aRect.Left+14,aRect.Top+14,'заголовок');
end;
end;
Climber писал(а):А можно сделать то же самое, но только чтобы чекбоксы были в строчку? Мне надо, чтобы они были в каждом столбце, начиная со второго, и во второй строке.
В принципе, я обхожусь конструкцией
- Код: Выделить всё
StringGrid.Objects[col, row]:=TCheckBox.Create(StringGrid);
TCheckBox(StringGrid.Objects[col, row]).Parent:=StringGrid;
С обработкой события перерисовки ячейки сетки, но если можно сделать проще, будет лучше...
Andrew писал(а):пытался создавать checkbox-ы вручную по примеруClimber писал(а):А можно сделать то же самое, но только чтобы чекбоксы были в строчку? Мне надо, чтобы они были в каждом столбце, начиная со второго, и во второй строке.
В принципе, я обхожусь конструкцией
- Код: Выделить всё
StringGrid.Objects[col, row]:=TCheckBox.Create(StringGrid);
TCheckBox(StringGrid.Objects[col, row]).Parent:=StringGrid;
С обработкой события перерисовки ячейки сетки, но если можно сделать проще, будет лучше...
но все они отображаються в верхнем левом углу stringgrid-а
пробовал на версиях:
lazarus-0.9.26-fpc-2.2.2
lazarus-0.9.26.2-fpc-2.2.2
Lazarus-0.9.27-20715-fpc-2.2.5-20090623
ОС windows
function CellRect(ACol, ARow: Integer): TRect;
Vadim писал(а):Andrew
Так Вы же канву клетки перерисовываете, следовательно затираете и рисунок чекбокса. Чекбоксы надо вставлять после перерисовки.
Vadim писал(а):Dark Ichigo
В дизайнере StringGrid.Columns, создать столько колонок, сколько Вам неоходимо и в той колонке, где нужен чекбокс, выбрать в свойстве колонки ButtonStyle:=cbsCheckboxColumn.
zmirk писал(а):Покажите пожалуйста кусок кода,
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 240