Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];

Вниз

Печать в mdvXLGrid   Найти похожие ветки 

 
<Falcon>   (2003-10-20 17:13) [0]

В частности интересует как реализовать вывод изображения на принтер объединенных ячеек? При оббегании ячеек в цикле и выводе четырехугольников, объединенные ячейки отображаются неправильно.
Пробовал чтобы это обойти так

procedure TForm1.Button1Click(Sender: PObj);
var
i,j,Px,Py : integer;
Rect: TRect;
begin
Printer.BeginDoc;

Px:=GetDeviceCaps(Printer.Handle,LOGPIXELSX) div 100;
Py:=GetDeviceCaps(Printer.Handle,LOGPIXELSY) div 100;
for j:=0 to Grid1.RowCount-1 do
 begin
   for i:=0 to Grid1.ColCount-1 do
     begin
       Printer.Canvas.Font.Assign(Grid1.Cells[i,j].Font);
       Printer.Canvas.Font.FontHeight:= Printer.Canvas.Font.FontHeight*Py;
       Printer.Canvas.Font.FontWidth:= Printer.Canvas.Font.FontWidth*Px;
       Printer.Canvas.Brush.Color:=Grid1.Cells[i,j].Color;
       Printer.Canvas.Pen.Color:= Grid1.LineColor;
       Printer.Canvas.Pen.PenWidth:= 1*Px;
       Printer.Canvas.Pen.PenMode:= pmCopy;
       Rect:=Grid1.CellToRect(i,j);
       Rect:=MakeRect(Rect.Left*Px,Rect.Top*Py,Rect.Right*Px,Rect.Bottom*Py);
       Printer.Canvas.RequiredState( HandleValid or FontValid or BrushValid or ChangingCanvas );
       if Grid1.IsMerge(MakePoint(i,j)) then
         begin
           if Grid1.Cells[i,j].Tag<>Grid1.Cells[i+1,j].Tag then
             begin
               Printer.Canvas.MoveTo(Rect.Right,Rect.Top);
               Printer.Canvas.LineTo(Rect.Right,Rect.Bottom);
             end;
           if Grid1.Cells[i,j].Tag<>Grid1.Cells[i,j+1].Tag then
             begin
               Printer.Canvas.MoveTo(Rect.Left,Rect.Top);
               Printer.Canvas.LineTo(Rect.Right,Rect.Top);
             end;
         end
         else Printer.Canvas.Rectangle(Rect.Left, Rect.Top, Rect.Right, Rect.Bottom);
         Printer.Canvas.DrawText(Grid1.Cells[i,j].Text,Rect,DT_SINGLELINE or DT_CENTER or DT_VCENTER);

     end;
 end;

Printer.EndDoc;
end;

В свойстве tag задаю принадлежность к определенной обьединенной ячейке.
Так работает, но сам чувствую сделано через... Помогите советом.


 
mdw ©   (2003-10-20 18:09) [1]

Здесь наверное поможет перенос из секции private d public полей
FShow - видима ли ячейка(левая верхняя из обьединенных - True, остальные - False)
FIsMerge - обьеденина ли ячейка;
FBoundsWidth - кол-во обединенных ячеек (столбцы);
FBoundsHeight - кол-во обединенных ячеек (строки);
FMergePos: TPoint; - левая верхняя ячеека из обьединенных.

А печатать нужно у которых FShow - True.


 
mdw ©   (2003-10-20 18:22) [2]

Тогда добавлю сответствующие свойства для ячеек. Просто, когда портировал компонент в KOL, все свойства ячеек грохнул, показалось что не нужны они.
А вообще изначально компонент делался как раз для получения однозначного соответствия того что на экране (96 dpi) и того что выводится в  Tif (600 dpi).
Кстати DrawText(...); не одинаково выводит текст при разных разрешениях (экран\принтер), поэтому лучше сначала пробегать всю строку и вызывать  DrawText с DT_CALCRECT, получать максимальную высоту ячеек, а потом уже выводить ячейки с этой высотой, иначе текст может вылазить за пределы ячейки.


 
<Falcon>   (2003-10-21 09:30) [3]

Спасибо! Попробую сегодня. Кстати мы как-то обсуждали вопрос о вертикальном выводе текста и переносах. Эти свойства можно было бы тоже добавить, я это сделал правда не в компоненте а в проге.Работает. Если нужно - могу выслать. Не знаю только насколько удачно вышло.


 
mdw ©   (2003-10-21 11:43) [4]

2 <Falcon>
Давай присылай. Я как-то пробовал, но что-то DrawText при вертикальном выводе, у меня странно работает.:(( Так что если получилось, то добавим.



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

Форум: "KOL";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.034 c
7-1078860890
Ландграф Павел
2004-03-09 22:34
2004.05.02
Поскажите как узнать дату создания ветви в реестре


8-1075538455
Reals
2004-01-31 11:40
2004.05.02
Как нарисовать на Рабочем столе (Desktop`е)


14-1080218768
Malkolinge
2004-03-25 15:46
2004.05.02
Наша с Михаилом книга.


9-1069199412
Dmitrich
2003-11-19 02:50
2004.05.02
DelphiX- Спрайты


1-1082308754
p_sA[11]
2004-04-18 21:19
2004.05.02
Как определить ASCII код символа?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский