
На самом деле странно, что эти свойства в рантайме нельзя менять...хотя может и можно, просто я пока не знаю как...
Модератор: Модераторы
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
Grids, StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
StringGrid1: TStringGrid;
procedure FormCreate(Sender: TObject);
procedure StringGrid1DrawCell(Sender: TObject; aCol, aRow: Integer;
aRect: TRect; aState: TGridDrawState);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
List:TList;//будет содержать список визуальных обьектов
implementation
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
var C:^TCheckBox;
I:integer;
begin
List:=TList.Create; //Список наших визуальных обьектов
List.Capacity:=StringGrid1.RowCount; //ну типа скока их :)
for I:=1 to StringGrid1.RowCount do //Заполнения списка созданными обьектами
begin //если быть честным то указателями на них
new(C);
C^:=TCheckBox.Create(StringGrid1);
C^.Parent:=StringGrid1;
C^.Visible:=False;
List.Add(C); //само добавление указателя
end;
end;
procedure TForm1.StringGrid1DrawCell(Sender: TObject; aCol, aRow: Integer;
aRect: TRect; aState: TGridDrawState);
begin
//процедура которая перерисовывает ячейку с номером колонки aCol и строки aRow
// aRect - прямоугольник нашей ячейки
if (acol=2) and (aRow<>0)then
begin //предположим что нуна рисовать во 2-ой колонке.
TCheckBox(List[aRow]^).Top:=arect.Top;
TCheckBox(List[aRow]^).Left:=arect.Left;
TCheckBox(List[aRow]^).Visible:=True;
end;
if (acol=3) and (aRow=3)then
begin //чисто для примера
TCheckBox(List[0]^).Top:=arect.Top;
TCheckBox(List[0]^).Left:=arect.Left;
TCheckBox(List[0]^).Visible:=True;
end;
end;
initialization
{$I unit1.lrs}
end.
Делает с колонками что угодно, даже выравнивание по содержимому (а я для этого процедуру писал).
Гм... Это сделать крайне затруднительно, т.к. я использую для этой цели только свойство компонента в дизайнере и никакого кода.
выше был предложен более универсальный и правильный способ вставки компонентов в таблицу через отрисовку, используйте его, тогда раскраска будет без проблем
Почему тебя отрисовка страшит?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 245