Attid писал(а):на других виджетах пробывал ?
В смысле другое GUI (пытался под GTK2) или чтот вместо TPrinterDlg пользовать (и без использования его тотже результат)? MSE чтот не прижился у меня...
Модератор: Модераторы
Attid писал(а):на других виджетах пробывал ?
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, PrintersDlgs, Printers;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
ListBox1: TListBox;
PrintDialog1: TPrintDialog;
procedure Button1Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
var
pdlg: PrintersDlgs.TPrintDialog;
x, y, i: integer;
begin
//pdlg := PrintersDlgs.TPrintDialog.Create(nil);
//if pdlg.Execute then
if PrintDialog1.Execute then
begin
x := 0;
y := 0;
Printer.BeginDoc;
for i := 0 to pred(ListBox1.Items.Count) do
begin
printer.Canvas.TextOut(x, y, ListBox1.Items[i]);
inc(y, printer.Canvas.GetTextHeight(ListBox1.Items[i]));
end;
Printer.EndDoc;
end;
//pdlg.Free;
end;
initialization
{$I unit1.lrs}
end.
alexs писал(а):Лазрепорт тоже уже ничего работает.
VirtUX писал(а):весь сайт fastreport-а и ненашел демо-примеров
Attid писал(а):и в любом последнем линукс дистре из коробки не будет проблем с кодировками\шрифтами ?
Index: lr_class.pas
===================================================================
--- lr_class.pas (revision 16634)
+++ lr_class.pas (working copy)
@@ -2559,13 +2559,13 @@
{$IFDEF DebugLR}
DebugLn('2 Canvas.Font.Size=%d TextWidth=%d',[Canvas.Font.Size,Canvas.TextWidth(St)]);
{$ENDIF}
- while (Canvas.TextWidth(St) > nw) and (Canvas.Font.Size>1) do
+(* while (Canvas.TextWidth(St) > nw) and (Canvas.Font.Size>1) do
begin
Canvas.Font.Size := Canvas.Font.Size-1;
{$IFDEF DebugLR}
DebugLn('Rescal font %d',[Canvas.Font.Size]);
{$ENDIF}
- end;
+ end; *)
th := -Canvas.Font.Height+Round(LineSpacing * ScaleY);
{$IFDEF DebugLR}
DebugLn('Th=%d Canvas.TextHeight(H)=%d',[Th,Canvas.TextHeight('H')]);
procedure TForm1.prnButtonClick(Sender: TObject);
Var
PRNLine, i:integer;
Begin
PRNLine:=200; // 200 это величина поля
if PrintDialog1.Execute then
Begin
Printer.BeginDoc;
Printer.Canvas.Font:= Form1.MainEditor.Font;
For i:=0 to Form1.MainEditor.Lines.Count do
Begin
PRNLine:= PRNLine+Printer.Canvas.Font.Size*10;
if PRNLine+200 >= Printer.PageHeight - Printer.Canvas.Font.Size*10 then
Begin
Printer.NewPage;
PRNLine:=200;
end
else begin end;
Printer.Canvas.TextOut( 200, PRNLine, Form1.MainEditor.Lines[i]);
end;
end;
Printer.EndDoc;
end;
Сейчас этот форум просматривают: Google [Bot] и гости: 222