Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.05;
Скачать: 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 вся ветка

Текущий архив: 2002.09.05;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
14-14243
iRum
2002-08-09 23:43
2002.09.05
Есть работа за $$$


4-14334
Casper_nu
2002-07-03 15:05
2002.09.05
Где ошибка? Звёздочки открывает, а текст не могу получить.


3-13912
Новый
2002-08-15 10:41
2002.09.05
Соединение с удаленной базой (Interbase 6)


4-14335
mifi
2002-06-06 22:15
2002.09.05
ExtractIcon + nvsvc32.exe


1-14128
Akim2
2002-08-23 18:07
2002.09.05
DLL TWinControl