Форум: "Базы";
Текущий архив: 2002.09.05;
Скачать: [xml.tar.bz2];
ВнизПечать 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 вся ветка
Форум: "Базы";
Текущий архив: 2002.09.05;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c