Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Компоненты и классы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 01.06.2012, 07:55
zmicer zmicer вне форума
Прохожий
 
Регистрация: 01.06.2012
Сообщения: 6
Репутация: 10
По умолчанию Таблица

Здравствуйте!
Подскажите пожалуйста, существует ли какой-нибудь способ сделать контрол в виде таблицы, чтобы в ней (допустим чётные) столбцы, отрисовывались с небольшим смещением (в половину ячейки) по вертикали? Т.е. не в одну строку. Может быть есть у listview или у data-grid метод который рисует сразу все ячейки?

Или тут проще не заморачиваться, а написать полностью свой контрол?
Ответить с цитированием
  #2  
Старый 01.06.2012, 09:20
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Используй TDrawGrid.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #3  
Старый 01.06.2012, 11:44
zmicer zmicer вне форума
Прохожий
 
Регистрация: 01.06.2012
Сообщения: 6
Репутация: 10
По умолчанию

Да, "копаю" в сторону DrawGrid. Вот проблема в том, чтобы сделать мой вариант - нужно каким-то образом изменять аргумент <Rect: TRect> в методе <DrawCell>. Но это невозможно, т.к. он только для чтения...

Для наглядного примера, что мне нужно сделать:
Ответить с цитированием
  #4  
Старый 01.06.2012, 11:57
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
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  
Старый 01.06.2012, 12:50
zmicer zmicer вне форума
Прохожий
 
Регистрация: 01.06.2012
Сообщения: 6
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
Код:
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;

вроде все честно

Да, что-то близкое <InflateRect> меняет только ширину и высоту прямоугольника. Вот бы как-нибудь изменить положение x и y.
Ответить с цитированием
  #6  
Старый 01.06.2012, 23:40
Аватар для cotseec
cotseec cotseec вне форума
Активный
 
Регистрация: 16.07.2008
Сообщения: 353
Версия Delphi: D7,TDE06,RAD09
Репутация: 1443
По умолчанию

Код:
Rect:=Rect(NewTop ,NewLeft, NewRight, NewBottom);
посмотреть можно тут
__________________
Понять, что хочет заказчик - бесценно, ведь он платит MasterCard
Ответить с цитированием
  #7  
Старый 01.06.2012, 23:44
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Цитата:
Сообщение от zmicer
Да, что-то близкое <InflateRect> меняет только ширину и высоту прямоугольника. Вот бы как-нибудь изменить положение x и y.
OffsetRect
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #8  
Старый 02.06.2012, 20:18
zmicer zmicer вне форума
Прохожий
 
Регистрация: 01.06.2012
Сообщения: 6
Репутация: 10
По умолчанию

Здравствуйте!
Ребята, всё перепробовал, но так ничего и не получается. <InflateRect> работает, но меняет только ширину и высоту. Конструктор TRect сразу отпадает. <OffsetRect> не работает.
Сегодня начал перебирать метод <DrawCells> в файле Grids.pas - похоже другого пути у меня нет.
Ответить с цитированием
  #9  
Старый 03.06.2012, 10:45
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

чтобы отрисовывать как на рисунке нужно "одну" ячейку рисовать сразу в двух.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #10  
Старый 03.06.2012, 21:31
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Грид с объединяемыми ячейками данных
Изображения
Тип файла: png mgrid.png (3.3 Кбайт, 10 просмотров)
Вложения
Тип файла: zip mergegrid.zip (9.7 Кбайт, 17 просмотров)
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Этот пользователь сказал Спасибо angvelem за это полезное сообщение:
zmicer (04.06.2012)
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 22:44.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter