Форум: "Основная";
Текущий архив: 2003.06.09;
Скачать: [xml.tar.bz2];
ВнизПечать Найти похожие ветки
← →
zsv (2003-05-29 08:24) [0]Здравствуйте, мастера. Помогите пожалуйста...
У меня такая проблема:
Нужно вывести на печать текст из Memo, из нескольких Edit и следом же - рисунок из Image.
Текст лучше печатать через файл, т.к. в этом случае печать работает и на матричном принтере и на лазерном.
AssignPrn(PrintText);
Rewrite(PrintText); и т.д.
Но картинку я могу только через BeginDoc - EndDoc.
А в этом случае я должен закрыть файл и печатать картинку.
Происходит выгрузка страницы из принтера, а мне это не нужно!
Печать для матричного я делаю, если все печатаю между BeginDoc - EndDoc.
Но в этом случае все не работает на лазерном принтере.
Что делать?
← →
zsv (2003-05-29 08:26) [1]Я ошибся, у меня Delphi5
← →
Palladin (2003-05-29 08:45) [2]Код давать не хочешь, значит вешатся...
← →
zsv (2003-05-29 08:52) [3]Даю код:
try
with Printer do
begin
Canvas.Font := Memo1.Font;
BeginDoc;
Canvas.TextOut(10,10,RxLabel1.Caption+IntToStr(Num));
inc(y,40);
for Line := 0 to Memo1.Lines.Count - 1 do
If Memo1.Lines[Line]<>"" then
begin
Canvas.TextOut(10,y,Memo1.Lines[Line]);
inc(y,30);
end;
If Edit1.Text <> "" then
begin
if (CheckBox1.Checked) and (CheckBox6.Checked) then
Canvas.TextOut(x,y,Edit1.Text+" *")
else Canvas.TextOut(x,y,Edit1.Text);
inc(y,30);
end;
If Edit2.Text <> "" then
begin
if (CheckBox2.Checked) and (CheckBox6.Checked) then
Canvas.TextOut(x,y,Edit2.Text+" *")
else Canvas.TextOut(x,y,Edit2.Text);
inc(y,30);
end;
If Edit3.Text <> "" then
begin
if (CheckBox3.Checked) and (CheckBox6.Checked) then
Canvas.TextOut(x,y,Edit3.Text+" *")
else Canvas.TextOut(x,y,Edit3.Text);
inc(y,30);
end;
If Edit4.Text <> "" then
begin
if (CheckBox4.Checked) and (CheckBox6.Checked) then
Canvas.TextOut(x,y,Edit4.Text+" *")
else Canvas.TextOut(x,y,Edit4.Text);
inc(y,30);
end;
If Edit5.Text <> "" then
begin
if (CheckBox5.Checked) and (CheckBox6.Checked) then
Canvas.TextOut(x,y,Edit5.Text+" *")
else Canvas.TextOut(x,y,Edit5.Text);
inc(y,30);
end;
//EndDoc;
If Image1.Visible then
begin
Bmp := TBitmap.Create;
try
Bmp.LoadFromFile(test[num].picture);
with Printer do
begin
Canvas.Draw(x,y,bmp);
end;
finally
Bmp.Free;
end;
end;
EndDoc;
end;
except
end;
Так работает для лазерного, а матричный лепит все в одну строку и не печатает картинку...
← →
zsv (2003-05-29 08:53) [4]Даю код:
try
with Printer do
begin
Canvas.Font := Memo1.Font;
BeginDoc;
Canvas.TextOut(10,10,RxLabel1.Caption+IntToStr(Num));
inc(y,40);
for Line := 0 to Memo1.Lines.Count - 1 do
If Memo1.Lines[Line]<>"" then
begin
Canvas.TextOut(10,y,Memo1.Lines[Line]);
inc(y,30);
end;
If Edit1.Text <> "" then
begin
if (CheckBox1.Checked) and (CheckBox6.Checked) then
Canvas.TextOut(x,y,Edit1.Text+" *")
else Canvas.TextOut(x,y,Edit1.Text);
inc(y,30);
end;
If Edit2.Text <> "" then
begin
if (CheckBox2.Checked) and (CheckBox6.Checked) then
Canvas.TextOut(x,y,Edit2.Text+" *")
else Canvas.TextOut(x,y,Edit2.Text);
inc(y,30);
end;
If Edit3.Text <> "" then
begin
if (CheckBox3.Checked) and (CheckBox6.Checked) then
Canvas.TextOut(x,y,Edit3.Text+" *")
else Canvas.TextOut(x,y,Edit3.Text);
inc(y,30);
end;
If Edit4.Text <> "" then
begin
if (CheckBox4.Checked) and (CheckBox6.Checked) then
Canvas.TextOut(x,y,Edit4.Text+" *")
else Canvas.TextOut(x,y,Edit4.Text);
inc(y,30);
end;
If Edit5.Text <> "" then
begin
if (CheckBox5.Checked) and (CheckBox6.Checked) then
Canvas.TextOut(x,y,Edit5.Text+" *")
else Canvas.TextOut(x,y,Edit5.Text);
inc(y,30);
end;
//EndDoc;
If Image1.Visible then
begin
Bmp := TBitmap.Create;
try
Bmp.LoadFromFile(test[num].picture);
with Printer do
begin
Canvas.Draw(x,y,bmp);
end;
finally
Bmp.Free;
end;
end;
EndDoc;
end;
except
end;
Так все работает на лазерном, а матричный лепит все в одну строку и не печатает картинку.
← →
Salvator (2003-05-29 09:55) [5]Просто выведи текст в Word, там можно печатать и на лазернике и на матричном!
← →
zsv (2003-05-29 10:00) [6]А можно пример?
Я еще этого не делал.
← →
zsv (2003-05-29 10:02) [7]И мне же нужно, чтобы сразу за текстом печаталась картинка...
← →
Salvator (2003-05-29 10:09) [8]Сейчас я без Delphi, но по памяти постараюся!
На форму кидаешь WordApplication и WordDocument из палитры Server.
На кнопке печати пишешь примерно такой код:
WordApplication1.Disconnect;
WordApplication1.Connect;
WordApplication1.Documents.add(EmptyParam,EmptyParam);
WordApplication1.Visible:=True;
// соединение с сервером и открытие стандартного документа
WordApplication1.Selection.InsertAfter(var S:string;);
// читаешь строки в компоненте Memo и заносишь их в Word построчно точно также для Edit;
Если что не понятно напиши мне на мыло, отвечу когда доберусь до Delphi!
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.06.09;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.011 c