急!报表里怎么画斜线?在线等。

Comer 2003-06-25 09:45:37
RAVE我不会用,只想用QREPORT组件,能实现报表里怎么画斜线吗?如何实现?
请高手帮忙!
...全文
75 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
mrfanghansheng 2003-06-25
  • 打赏
  • 举报
回复
ihihonline(小卒) ^_^,你老大也要???好,发!
cow8063 2003-06-25
  • 打赏
  • 举报
回复
用图片

// 画斜线的quickReport 控件


unit qrline;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
quickrpt;

type
TQRLineStyle = (QRLineH,QRLineV,QRLineC);

TQRLine = class(TQRPrintable)
private
FPen: TPen;
FLineStyle: TQRLineStyle;
procedure setPen(value: TPen);
procedure setLineStyle(value: TQRLineStyle);
procedure onPenChanged(Sendoer: TObject);
protected
{ Protected declarations }
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;

procedure Paint; override;
procedure Print(OfsX, OfsY : integer); override;
published
property Pen: TPen read FPen write setPen;
property LineStyle: TQRLineStyle read FLineStyle write setLineStyle;
end;

procedure Register;

implementation

constructor TQRLine.Create(AOwner: TComponent);
begin
inherited Create(AOwner);

ControlStyle := ControlStyle - [csOpaque];
FPen := TPen.Create;
FPen.OnChange := onPenChanged;
width := 100;
height := 100;
end;

destructor TQRLine.Destroy;
begin
FPen.Free;

inherited Destroy;
end;

procedure TQRLine.SetPen(Value: TPen);
begin
FPen.Assign(value);
Invalidate;
end;

procedure TQRLine.setLineStyle(value: TQRLineStyle);
begin
if FLineStyle <> value then
begin
FLineStyle := value;
Invalidate;
end;
end;

procedure TQRLine.onPenChanged(Sendoer: TObject);
begin
Invalidate;
end;

procedure TQRLine.Paint;
var
calDiff: integer;
begin
with Canvas do
begin
Pen := FPen;
calDiff := Pen.Width div 2;
MoveTo(calDiff,calDiff);
case LineStyle of
QRLineH: LineTo(width, 0 + calDiff);
QRLineV: LineTo(calDiff, Height);
QRLineC: LineTo(width, Height);
end;
end;
end;

procedure TQRLine.Print(OfsX, OfsY : integer);
var
CalcLeft,
CalcTop,
CalcRight,
CalcBottom: integer;
begin
with ParentReport.QRPrinter do
begin
Canvas.Pen := FPen;
CalcLeft := XPos(OfsX + Size.Left);
CalcTop := YPos(OfsY + Size.Top);
CalcRight := XPos(OfsX + Size.Left + Size.Width);
CalcBottom := YPos(OfsY + Size.Top + Size.Height);
with Canvas do
begin
MoveTo(CalcLeft,CalcTop);
case LineStyle of
QRLineH:
LineTo(CalcRight, CalcTop);
QRLineV:
LineTo(CalcLeft, CalcBottom);
QRLineC:
LineTo(CalcRight, CalcBottom);
end;
end;
end;
end;

procedure Register;
begin
RegisterComponents('QReport', [TQRLine]);
end;

end.
编译,注册,成一组件
mrfanghansheng 2003-06-25
  • 打赏
  • 举报
回复
好了,已发出,祝你好运!
ihihonline 2003-06-25
  • 打赏
  • 举报
回复
(☆☆☆木鱼☆☆☆)
给我来一个,嘿嘿,我也是,这个问题。。。。。。在QR中,用图片总觉的不好。。。
dprogram@163.com

水晶妹妹,你会?
嘿嘿,请教.............

----------------
过河卒
Comer 2003-06-25
  • 打赏
  • 举报
回复
mrfanghansheng(☆☆☆木鱼☆☆☆) ,先谢了
comerliang@163.net
rock11 2003-06-25
  • 打赏
  • 举报
回复
搜搜以前的贴子,有
mrfanghansheng 2003-06-25
  • 打赏
  • 举报
回复
忘了说了,这个组件好像是从Tqrshape继承的,效果还挺不错的
mrfanghansheng 2003-06-25
  • 打赏
  • 举报
回复
shuijin(水晶妹妹) 跑来啦??好久没见了


楼主,有个专门的画斜线的第三方组件,带源码,你要的话留个email,我发给你
Comer 2003-06-25
  • 打赏
  • 举报
回复
有没有更好的方法?
  • 打赏
  • 举报
回复
用图片吧,
或者第三方的控件,
不过图片的方式用的多一些:)
shuijin 2003-06-25
  • 打赏
  • 举报
回复
来找我呀,我就告诉你~
嘿嘿~~
shadowfish 2003-06-25
  • 打赏
  • 举报
回复
用图片吧:)

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧