![]() |
|
|
|
|
#1
|
|||
|
|||
|
Здравствуйте!
Подскажите пожалуйста, существует ли какой-нибудь способ сделать контрол в виде таблицы, чтобы в ней (допустим чётные) столбцы, отрисовывались с небольшим смещением (в половину ячейки) по вертикали? Т.е. не в одну строку. Может быть есть у listview или у data-grid метод который рисует сразу все ячейки? Или тут проще не заморачиваться, а написать полностью свой контрол? |
|
#2
|
||||
|
||||
|
Используй TDrawGrid.
|
|
#3
|
|||
|
|||
|
|
|
#4
|
||||
|
||||
|
Код:
TDrawGrid = class(TCustomDrawGrid)
TCustomDrawGrid = class(TCustomGrid)
private
FOnDrawCell: TDrawCellEvent;
TDrawCellEvent = procedure (Sender: TObject; ACol, ARow: Longint;
Rect: TRect; State: TGridDrawState) of object;Код:
type
TForm1 = class(TForm)
DrawGrid1: TDrawGrid;
procedure DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
...
procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
InflateRect(Rect, 10, 10);
end;вроде все честно |
|
#5
|
|||
|
|||
|
Цитата:
Да, что-то близкое <InflateRect> меняет только ширину и высоту прямоугольника. Вот бы как-нибудь изменить положение x и y. |
|
#6
|
||||
|
||||
|
Код:
Rect:=Rect(NewTop ,NewLeft, NewRight, NewBottom); |
|
#7
|
||||
|
||||
|
Цитата:
|
|
#8
|
|||
|
|||
|
Здравствуйте!
Ребята, всё перепробовал, но так ничего и не получается. <InflateRect> работает, но меняет только ширину и высоту. Конструктор TRect сразу отпадает. <OffsetRect> не работает. Сегодня начал перебирать метод <DrawCells> в файле Grids.pas - похоже другого пути у меня нет. |
|
#9
|
||||
|
||||
|
чтобы отрисовывать как на рисунке нужно "одну" ячейку рисовать сразу в двух.
|
|
#10
|
||||
|
||||
|
Грид с объединяемыми ячейками данных
|
| Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
zmicer (04.06.2012)
| ||