Главная страница
    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.45 MB
Время: 0.039 c
1-1082094458
Solik
2004-04-16 09:47
2004.05.02
GUI+Console


14-1081422498
Elast
2004-04-08 15:08
2004.05.02
IB


4-1079008062
saska
2004-03-11 15:27
2004.05.02
Shell_NotifyIcon


14-1081878366
Ig
2004-04-13 21:46
2004.05.02
Создание компонент в Delphi !?


1-1082032138
ASvencim
2004-04-15 16:28
2004.05.02
Как рандомайзом выбирать картинки?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский