![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Печать TDBGrid [D6, MSSQL, MS Access]
Nikolai_S © (2002-08-16 15:50:00)Как быстро распечатать содержимое из TDBGrid. Можно конечно TQuickReport использовать. Но может есть какой-то более быстрый и простой метод?
wicked (2002-08-16 22:57:00) [1]2 Nikolai_S ©
ehlib бесплатен для тех, кто знает русский и у кого русский (многоязычный) windows...
вот ссылка на сайт автора - http://www.farpost.com/personal/dmitryb
там всё написано.... :)
Nikolai_S (2002-08-16 18:00:00) [2]to A7exander & zx.
Я прочитал про EhLib. Да штука классная, но не бесплатная. Хотелось бы дешево, но сердито, как предложил RDA. Но все равно спасибо.
zx (2002-08-16 17:43:00) [3]Использую EhLib.
Очень хорошая штука!!!
RDA (2002-08-16 16:27:00) [4]Я как-то использовал простой способ (по моему мнению). В зависимости от того кто источник данных - делал так
..............
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;
Рад если помог. Если что на мыло - писал по памяти.
A7exander (2002-08-16 16:10:00) [5]я использую TPrintDBGridEh из состава Ehlib
Mike Kouzmine (2002-08-16 16:07:00) [6]Да, в кладовке посмотри
Nikolai_S (2002-08-16 16:06:00) [7]А что такое prReport? Я с этим не сталкивался. Компонент какой-то?
Mike Kouzmine (2002-08-16 15:58:00) [8]Можно prReport