procedure TfrmXWBL.FormPaint(Sender: TObject);
var
aCanvas: Tcanvas;
X1, X2, Y,t,i: Integer;
byLineLength: BYTE;begin
aCanvas := TCanvas.Create;
Y := RichEdit1.Height;
try aCanvas.Handle := GetDC(RichEdit1.Handle);
t:=2+richedit1.DefAttributes.Height+6;
aCanvas.Pen.Color:=clskyblue;
acanvas.Pen.width:=1;
for i := 0 to RichEdit1.Lines.Count - 1 do
begin
//RichEdit1.
With aCanvas do
Begin
Begin
MoveTo(RichEdit1.Left+2,t); // Draw line after 80 characters
LineTo(RichEdit1.Width-1,t);
End;
end;
t:=t+richedit1.DefAttributes.Height+5;
end
Finally
ReleaseDC(RichEdit1.Handle,aCanvas.Handle);
aCanvas.Free;
End;
end;
各位高手,我想在richedit中的每行加一条线分隔,但是当richedit中的内容过多时,滚动滚动条就会把原来绘好的线条抹去。有没有办法在滚动滚动条时,原来划的行线保留。谢谢!
var
aCanvas: Tcanvas;
X1, X2, Y,t,i: Integer;
byLineLength: BYTE;begin
aCanvas := TCanvas.Create;
Y := RichEdit1.Height;
try aCanvas.Handle := GetDC(RichEdit1.Handle);
t:=2+richedit1.DefAttributes.Height+6;
aCanvas.Pen.Color:=clskyblue;
acanvas.Pen.width:=1;
for i := 0 to RichEdit1.Lines.Count - 1 do
begin
//RichEdit1.
With aCanvas do
Begin
Begin
MoveTo(RichEdit1.Left+2,t); // Draw line after 80 characters
LineTo(RichEdit1.Width-1,t);
End;
end;
t:=t+richedit1.DefAttributes.Height+5;
end
Finally
ReleaseDC(RichEdit1.Handle,aCanvas.Handle);
aCanvas.Free;
End;
end;
各位高手,我想在richedit中的每行加一条线分隔,但是当richedit中的内容过多时,滚动滚动条就会把原来绘好的线条抹去。有没有办法在滚动滚动条时,原来划的行线保留。谢谢!
解决方案 »
- 头痛
- Intraweb 7.2 例子中的FISHFACT, 修改数据时会自动将Label转换为Edit, 这是怎么实现的?
- delphi 7 如何调用 webservice?
- 《设计模式Delphi版》的怪问题!!!!
- 等了一天,代码那里错了,请看!
- 请问,我是应该学java还是.net
- 把Access数据库*.mdb保存为另一文件,用哪一个类,如何实现?
- 高分求教一个关于BDE的问题?急!!!
- 关于WEbbrowers的一个简单问题,在线等答案!
- 关于CreateOleObject~!!谢谢
- delphi 程序里有一个方法,方法里面的算法比较复杂,计算起来时间比较长,我想把这个方法单独放到一个线程里去执行,请问是怎么写?一点头绪没有啊,谢谢
- 把一个指针赋值给一个结构,怎么做?
加上你上面的代码
uses
Messages, Windows, Graphics, ComCtrls;type
TMyRichEdit = class(TRichEdit)
procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
end;implementation{ TMyRichEdit }procedure TMyRichEdit.WMPaint(var Message: TWMPaint);
var
ACanvas: Tcanvas;
X1, X2, Y,t,i: Integer;
byLineLength: BYTE;
begin
inherited;
aCanvas := TCanvas.Create;
Y := Self.Height;
try
ACanvas.Handle := GetDC(Self.Handle);
t:=2+Self.DefAttributes.Height+6;
aCanvas.Pen.Color:=clskyblue;
acanvas.Pen.width:=1;
for i := 0 to Self.Lines.Count - 1 do
begin
With ACanvas do
Begin
Begin
MoveTo(Self.Left+2,t); // Draw line after 80 characters
LineTo(Self.Width-1,t);
End;
end;
t:=t+Self.DefAttributes.Height+5;
end
Finally
ReleaseDC(Self.Handle,ACanvas.Handle);
ACanvas.Free;
End;
end;然后动态创建这个控件即可