H
hehuan
Unregistered / Unconfirmed
GUEST, unregistred user!
因为QRMemo不能调整行间距,因此继承并改写了QRMemo,但是使用有点问题
其实这是网上抄来的代码,因为不熟悉Delphi的语法,不会使用。
请问这个定义放在哪个文件里?然后怎么使用?如果我在页面上放了一个QRMemo,就会生成如下语句:
QRMemo1: TQRMemo;
然后我改写成:
QRMemo1: TmyQRMemo;
想编译,系统报错! 我该怎么办呢?非常感谢指点使用! 或者还有什么别的方法调整行间距吗?
type
TMyQRMemo = class(TQRMemo)
private
fIndent : Integer;
public
procedure Print(OfsX, OfsY: Integer);
override;
published
// Indent: Integer read fIndent write fIndent;
end;
procedure TMyQRMemo.Print(OfsX, OfsY: Integer);
var
buf: array [0..1024] of Integer;
temps, s: string;
tmpWS: WideString;
i, n, CurrentY: Integer;
sz: TSize;
begin
printer.canvas.font := font;
currentY := 0;
for i := 0 to lines.count-1do
begin
temps := 'QRMemo1QRMemo1QRMemo1QRMemo1QRMemo1QRMemo1QRMemo1QRMemo1QRMemo1QRMemo1QRMemo1QRMemo1QRMemo1QRMemo1QRMemo1QRMemo1';
while length(temps) > 0do
begin
GetTextExtentExPoint(printer.canvas.handle, pchar(temps), length(temps), width, @n, nil, sz);
s := copy(temps, 1, n);
delete(temps, 1, n);
textout(printer.canvas.handle, ofsx, ofsy + currenty, pchar(s), length(s));
inc(currenty, sz.cy+fIndent);
end;
end;
end;
其实这是网上抄来的代码,因为不熟悉Delphi的语法,不会使用。
请问这个定义放在哪个文件里?然后怎么使用?如果我在页面上放了一个QRMemo,就会生成如下语句:
QRMemo1: TQRMemo;
然后我改写成:
QRMemo1: TmyQRMemo;
想编译,系统报错! 我该怎么办呢?非常感谢指点使用! 或者还有什么别的方法调整行间距吗?
type
TMyQRMemo = class(TQRMemo)
private
fIndent : Integer;
public
procedure Print(OfsX, OfsY: Integer);
override;
published
// Indent: Integer read fIndent write fIndent;
end;
procedure TMyQRMemo.Print(OfsX, OfsY: Integer);
var
buf: array [0..1024] of Integer;
temps, s: string;
tmpWS: WideString;
i, n, CurrentY: Integer;
sz: TSize;
begin
printer.canvas.font := font;
currentY := 0;
for i := 0 to lines.count-1do
begin
temps := 'QRMemo1QRMemo1QRMemo1QRMemo1QRMemo1QRMemo1QRMemo1QRMemo1QRMemo1QRMemo1QRMemo1QRMemo1QRMemo1QRMemo1QRMemo1QRMemo1';
while length(temps) > 0do
begin
GetTextExtentExPoint(printer.canvas.handle, pchar(temps), length(temps), width, @n, nil, sz);
s := copy(temps, 1, n);
delete(temps, 1, n);
textout(printer.canvas.handle, ofsx, ofsy + currenty, pchar(s), length(s));
inc(currenty, sz.cy+fIndent);
end;
end;
end;