Вверх ↑
Этот топик читают: Гость
Ответов: 676
Рейтинг: 5
#31: 2005-11-06 16:14:07 ЛС | профиль | цитата
у тебя ася есть?

Нет не пользуюсь у меня модем оплата поминутная так что в нете долго не сижу так пробегусь по сайтам новости почитаю почту проверю и отключаюсь
Есть правда вариант в hiasm чате поболтать с 20.00 до 11.00 у меня скидка в это время
Ну вобщем набросай заготовку а там посмотрим если что на PM стучись договоримя...
карма: 1

0
Ответов: 838
Рейтинг: 4
#32: 2005-11-06 17:04:54 ЛС | профиль | цитата
-=Dima=-, Хорошо.. только вот я откуда знаю когда у тебя будет 20.00... ) Ладно... потом договоримся...
карма: 0
Coder
0
Ответов: 838
Рейтинг: 4
#33: 2005-11-06 17:11:49 ЛС | профиль | цитата
-=Dima=-, C HiLightMemo пока проблемы... пока что у меня не получается делать много цветов и стилей... Я поработаю и может на днях выложу... а если нет, тогда придётся просить помощи коллег Galkov'a и Dilm'ы....
карма: 0
Coder
0
Ответов: 3655
Рейтинг: 69
#34: 2005-11-06 17:50:09 ЛС | профиль | цитата
Amper, Вот код на Делфи для вывода на принтер таблицы .Рисует таблицу выводит данные постранично ,на каждом листе заголовок таблицы ,нумерация листов.Немогу перевести на ХиАсм может возьмешься или кто ещё ?
[code:1]// щелчок на кнопке Печать
procedure TForm1.N2Click(Sender: TObject);
const
LEFT_MARGIN = 0.5; // отступ слева [см]
TOP_MARGIN = 0.5; // отступ сверху [см]
var
dpiX, dpiY : integer; // разрешение принтера по X и Y
kx,ky: real; // коэф. пересчета координат экрана
// в координаты принтера по Х и Y
// таблица
p: array[0..9] of integer; // позиции колонок
x1,y1,x2,y2: integer; // границы таблицы

px,py: integer; // указатель точки вывода
i,j,n,m,nl,w: integer;
Label tt;
begin
m:=35; //конец цикла
n:=0; //начало цикла
nl:=1; //номер страницы

{ Разрешение экрана и принтера разное,
поэтому чтобы добиться соответствия
размеров изображения на экране и принтере,
координаты точек экрана надо преобразовать
в координаты принтера, умножить на коэф.,
значение которого зависит от разрешения принтера.
Например, если разрешение принтера 300 dpi,
то значение коэффициента равно 3.125, т.к.
разрешение экрана - 96 dpi.
}

// ф-я GetDeviceCaps позволяет получить характеристики
// устройства. LOGPIXELSX - кол-во пикселей на дюйм по X
tt://вызов Goto
dpiX := GetDeviceCaps(Printer.handle,LOGPIXELSX);
dpiY := GetDeviceCaps(Printer.handle,LOGPIXELSY);
kx := dpiX / Screen.PixelsPerInch;
ky := dpiY / Screen.PixelsPerInch;
ky := 3;//уменьшить высоту таблицы
px := Round(LEFT_MARGIN / 2.54 * dpiX);
py := Round(TOP_MARGIN / 2.54 * dpiY);

// вычислим "принтерные" координаты колонок таблицы
p[0] := px;
for i:=1 to 9 do
begin
p[i] := p[i-1] + Round(jzStringGrid1.ColWidths[i-1]* kx);
end;

with Printer do
begin
//poPortrait вертикальная
//poLandscape горизонтальная
//горизонтальная ориентация листа
{Printer}
if nl = 1 then begin
Orientation := poLandscape;
BeginDoc; // открыть печать
end;
// заголовок таблицы
Canvas.Font.Name := Label1.Font.Name;
Canvas.Font.Size := Label1.Font.Size;
Canvas.TextOut(px,py,Label1.Caption);
Form1.Label2.Caption :='Стр № '+IntToStr(nl);
Canvas.TextOut(px+3600,py,Label2.Caption);
// таблица - содержимое StringGrid1
py := py+ Round(Label1.Font.Size * 2 * ky);

x1 := px; y1 := py; // левый верхний угол таблицы

Canvas.Font.Name := jzStringGrid1.Font.Name;// тип шрифта
Canvas.Font.Size := jzStringGrid1.Font.Size;// размер шрифта

x2 := p[9] + Round(jzStringGrid1.ColWidths[9]* kx);


if nl = 1 then begin
if KOL < m then
m := KOL;{jzStringGrid1.RowCount}
y2 := py + Round((m+2) * jzStringGrid1.RowHeights[1] * ky);
end;

if nl > 1 then begin
y2 := py + Round((m-n+4) * jzStringGrid1.RowHeights[1] * ky);
Canvas.MoveTo(p[0]-10,py);
Canvas.LineTo(x2,py);
for w := 0 to 9 do begin
Canvas.TextOut(P[w],py+10,jzStringGrid1.Cells[w,0]);

end;
py:=py+ Round(jzStringGrid1.RowHeights[0]* ky);
Canvas.MoveTo(p[0]-10,py);
Canvas.LineTo(x2,py);
for w := 0 to 9 do begin
Canvas.TextOut(P[w],py+10,jzStringGrid1.Cells[w,1]);
end;
py:=py+ Round(jzStringGrid1.RowHeights[0]* ky);
end;

for j:=n to m+1 do
begin
// строки таблицы
for i:=0 to jzStringGrid1.ColCount do
begin
Canvas.TextOut(P[i],py,jzStringGrid1.Cells[i,j]);
// гор. линия
Canvas.MoveTo(p[0]-10,py);
Canvas.LineTo(x2,py);
end;
py:=py+ Round(jzStringGrid1.RowHeights[j]* ky);
end;
Canvas.MoveTo(p[0]-10,py);
Canvas.LineTo(x2,py);
// вертикальные линии
for i:=0 to jzStringGrid1.ColCount do
begin
Canvas.MoveTo(p[i]-10,y1);
Canvas.LineTo(p[i]-10,y2);
end;
Canvas.MoveTo(x2,y1);
Canvas.LineTo(x2,y2);
if m < KOL then begin
nl := nl+1;
n := j;
m := m+35;
if m > KOL then m := KOL;
NewPage;
Goto tt;
end;
EndDoc; // закрыть печать
Orientation := poPortrait;// вертикальная ориентация листа
RzTabControl1.TabIndex := -1;
end;
end;[/code:1]
карма: 0

0
Ответов: 3655
Рейтинг: 69
#35: 2005-11-06 18:41:40 ЛС | профиль | цитата
Юра, Да и код для Rih будет в два раза проще(таблицу рисовать ненадо).
карма: 0

0
Ответов: 838
Рейтинг: 4
#36: 2005-11-06 18:47:08 ЛС | профиль | цитата
Юра, Вячеслав, это же для StringGrid... вам разве для него надо?.. Ладно... попробую что-нить сделать.... но ничего не обещаю....
карма: 0
Coder
0
Ответов: 3655
Рейтинг: 69
#37: 2005-11-07 21:38:58 ЛС | профиль | цитата
[b]Amper[/b], Мне надо печать для таблицы а Юре для RihEdit .У меня тут с перекодированием понемногу двигается но медленно удалось нарисовать пока только одну линию.Я вставил код Делфи в код компонента Принтер.Но Хиасм не понимает этих строк:[code:1] dpiX := GetDeviceCaps(Printer.handle,LOGPIXELSX); dpiY := GetDeviceCaps(Printer.handle,LOGPIXELSY);
kx := dpiX / Screen.PixelsPerInch;
ky := dpiY / Screen.PixelsPerInch;[/code:1]
А без них нельзя правильно отформатировать ведь принтеры у всех разные.Да и еще код писал я так что если какие вопросы задавай.И конечно хорошо если это будет прямо в коде компонентов StringTable и RihEdit.
карма: 0

0
Ответов: 838
Рейтинг: 4
#38: 2005-11-08 06:42:17 ЛС | профиль | цитата
2 Вячеслав:
1) Для RihEdit печать есть.. смотрите внимательней..
2) Ещё бы он их понимал..
3)Модуль для печати таблицы вроде нашёл... пока не получается... на работаю над этим...
карма: 0
Coder
0
38
Сообщение
...
Прикрепленные файлы
(файлы не залиты)