Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.07;
Скачать: CL | DM;

Вниз

Использование Canvas.PainTo   Найти похожие ветки 

 
Пиноккио   (2002-10-23 22:31) [0]

При использовании Canvas.PainTo для печати DrawGrid на принтер выводится только видимая часть грида, что в принципе довольно логично. Как печатать весь грид, если такое возиожно?


 
Игорь Шевченко ©   (2002-10-24 10:27) [1]

Использовать другой метод


 
Пиноккио   (2002-10-25 13:43) [2]

Какой?

Я в данный момент вывожу на принтер, перебирая свой массив, элементам которого сопоставлены ячейки грида, и в зависимости от значений вывожу определенные фигуры на принтер.
Но на мой взгляд это как-то кривовато, поскольку если я добавлю (а я добавлю :-)), какие то другие базовые фигуры (речь идёт о простом редакторе схем), то мне придётся изменять и метод DrawCell грида и метод печати. Хотелось бы обойтись без этого.



 
Игорь Шевченко ©   (2002-10-25 14:04) [3]

А какое отношение редактор схем имеет к DrawGrid"у ?


 
reonid ©   (2002-10-25 14:27) [4]

Так надо сделать базовый класс для элемента схемы
(он может быть FlyWeight"ом - контекстно зависящим),
в нём ввести виртуальную процедуру рисования
Draw(Canvas: TCanvas; Rect: TRect{;...}); virtual; {abstract;}
А в OnDrawCell должна осуществляться только диспетчеризация:

procedure TMainForm.CfgGridDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
FindElemByCell(ACol, ARow).Draw((Sender as TDrawGrid).Canvas, Rect);
end;

И при печати то же самое - рисуешь сетку (если она нужна), а
потом обращаешься к функции рисования соответствующей
фигуры.


 
Призрак   (2002-10-25 16:19) [5]

А зачем здесь нужен DrawGrid? Если только для рисования, то почему бы не использовать PaintBox. Можно сделать процедуру вывода в MetaFile и использовать ее для вывода на экран или принтер.


 
Пиноккио   (2002-10-26 14:51) [6]

>> Призрак
Нет PainBox мне не совсем подходит.
Помимо того что схему надо редактировать, печатать и сохранять, каждому элементу схемы соответсвует ряд определенных числовых и булевых параметров, которые впоследствии могут изменятся и над которыми надо выполнять вычисления.

>> Reonid
Большое спасибо за дельный совет. Наверное, так и сделаю.

>> Игорь Шевченко
А какой компонент использовали бы Вы? Кроме DrawGrid, у меня в вариантах был только StringGrid.



Страницы: 1 вся ветка

Текущий архив: 2002.11.07;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.014 c
3-21414
grusty
2002-10-17 15:35
2002.11.07
Как добавить новое поле в уже сужествующую таблицу?


4-21876
NeyroSpace
2002-09-25 16:05
2002.11.07
Как словить WM_WINDOWPOSCHANGING и кильнуть его. Без хука?


14-21770
MsGuns
2002-10-18 12:17
2002.11.07
Происхождение логина


1-21504
Yonic
2002-10-28 15:47
2002.11.07
WebBrowser


7-21833
Друпи
2002-09-03 23:18
2002.11.07
Привязка программы к компьютеру