Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Печать 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


Наверх

Титульная страница Поиск, карта сайта Написать письмо