Вниз
Скачать: CL | DM;

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

← →
Nikolai_S ©   (2002-08-16 15:50) [0]

Как быстро распечатать содержимое из TDBGrid. Можно конечно TQuickReport использовать. Но может есть какой-то более быстрый и простой метод?


← →
Mike Kouzmine   (2002-08-16 15:58) [1]

Можно prReport


← →
Nikolai_S ©   (2002-08-16 16:06) [2]

А что такое prReport? Я с этим не сталкивался. Компонент какой-то?


← →
Mike Kouzmine   (2002-08-16 16:07) [3]

Да, в кладовке посмотри


← →
A7exander ©   (2002-08-16 16:10) [4]

я использую TPrintDBGridEh из состава Ehlib


← →
RDA ©   (2002-08-16 16:27) [5]

Я как-то использовал простой способ (по моему мнению). В зависимости от того кто источник данных - делал так

..............
var
PixelsX,PixelsY:Integer;
implementation
..............
procedure GetPrinter;
begin
PixelsX:=GetDeviceCaps(Printer.Handle,LogPixelsX);
PixelsY:=GetDeviceCaps(Printer.Handle,LogPixelsY);
end;

function GetX(X:integer):integer; { переводит координаты из мм в пиксели }
begin
GetX:=round(PixelsX/25.4*X);
end;

function GetY(Y:integer):integer; { переводит координаты из мм в пиксели }
begin
GetY:=round(PixelsY/25.4*Y);
end;

Сам вывод на принте не зависимо есть грид или нет, главное чтобы набор данных был.

procedure ...............(Y:Integer);
var
Y:Integer;
begin
Y:=0;
while not Table.Eof (или Query.Eof) do
begin
Kvadrat(80,Y,120,Y+20,8,Table.FieldByName("номер").AsString);
Kvadrat(120,Y,250,Y+20,8,Table.FieldByName("текст").AsString);
Kvadrat(250,Y,280,Y+20,8,Table.FieldByName("значение").AsString);
Y:=Y+20;
Table.Next (Query.Next);
end;
end;

В общем передаещ в процедуру отступ страницы и вперед. Надеюсь сам разберешься как переходить на другую страницу, и в том что высота строк может быть больше 20 мм (считай длину строки или по другому), а процедуру Kvadrat описал так:

procedure Kvadrat(X,Y,X1,Y1,FSize:Integer;Text:String);
var
R:TRect;
begin
R:=Rect(GetX(X),GetY(Y),GetX(X1),GetY(Y1));
with Printer.Canvas do
begin
Font.Size:=FSize;
Rectangle(R.Left-5,R.Top-2,R.Right+2,R.Bottom+2);
DrawText(Handle,PChar(Text),-1,R,dt_WordBreak or dt_Left);
end;
end;


Рад если помог. Если что на мыло - писал по памяти.



← →
zx ©   (2002-08-16 17:43) [6]

Использую EhLib.
Очень хорошая штука!!!


← →
Nikolai_S ©   (2002-08-16 18:00) [7]

to A7exander & zx.
Я прочитал про EhLib. Да штука классная, но не бесплатная. Хотелось бы дешево, но сердито, как предложил RDA. Но все равно спасибо.


← →
wicked ©   (2002-08-16 22:57) [8]

2 Nikolai_S ©
ehlib бесплатен для тех, кто знает русский и у кого русский (многоязычный) windows...
вот ссылка на сайт автора - http://www.farpost.com/personal/dmitryb
там всё написано.... :)



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.017 c
1-13984
Бегинер
2002-08-25 19:09
2002.09.05
UpDown


14-14210
Olivka
2002-08-02 23:08
2002.09.05
Как я скучаю!


1-14161
Lamer86
2002-08-25 15:34
2002.09.05
UpperCase


4-14345
rival
2002-06-14 16:43
2002.09.05
Запуск приложения из своей программы


1-14063
Danco
2002-08-24 18:52
2002.09.05
Использование PrintDialog




   Наверх