我在一个Listbox的Item上用Pen画了一条线,如何去掉这条线。画线的代码如下procedure TForm1.Button1Click(Sender: TObject);
var
R: TRect;
begin
R:= ListBox1.ItemRect( 0 );
ListBox1.Canvas.Pen.Width:= 2;
ListBox1.Canvas.MoveTo(R.Left, R.Top + 1);
ListBox1.Canvas.LineTo(R.Right, R.Top + 1);
end;
如果去掉刚刚的画线,应该怎么做?
Refresh当然行,但这个不是重绘整个Listbox吗?有没有方法可以只重绘被画线的Item,而不用重绘整块画布。就像选中一个Item, 该Item背景被画成蓝色,字体会由黑色变成白色。但这个画操作不会重画整个Listbox。
var
R: TRect;
begin
R:= ListBox1.ItemRect( 0 );
ListBox1.Canvas.Pen.Width:= 2;
ListBox1.Canvas.MoveTo(R.Left, R.Top + 1);
ListBox1.Canvas.LineTo(R.Right, R.Top + 1);
end;
如果去掉刚刚的画线,应该怎么做?
Refresh当然行,但这个不是重绘整个Listbox吗?有没有方法可以只重绘被画线的Item,而不用重绘整块画布。就像选中一个Item, 该Item背景被画成蓝色,字体会由黑色变成白色。但这个画操作不会重画整个Listbox。
解决方案 »
- 搞了很久都不会 数据库连接Delphi2006问题 高手请教
- ehlib3.4的问题,在报表前增加一个选择框
- 关闭运行外部Windows程序代码问题,请教!
- 查询参数问题
- 有关DEPHI的
- ---------------关于调用VC写的COM的问题(UP有分)---------------
- 各位,紧急求救,怎么用DecisionQuery连接sql服务器!!SoS!!
- 我的treenode的text是由职员编码(int) 和空格 和 职员名称(string)组成,请问怎么选出前面的职员编码阿?
- 请问关于开发数据库不要显示密码输入框的问题?
- Ch81,你的程序收到,拿分!
- 如何把一个数据库中得多张表转到异地数据库上去
- FTP上传同名文件重命名问题
R: TRect;
begin
R:= ListBox1.ItemRect( 0 );
ListBox1.Canvas.Pen.Width:= 2;
ListBox1.Canvas.MoveTo(R.Left, R.Top + 1);
ListBox1.Canvas.LineTo(R.Right, R.Top + 1);
ListBox1.Canvas.Brush.Color := clWhite;
R.Bottom := R.Top + ListBox1.Canvas.Pen.Width;
ListBox1.Canvas.FillRect(R);
end;
这样吗
你好”这样。然后选中他,再取消选中,最后的样子其实就是回到了画线前的样子。我要的就是如何在Item上面画了一条线后,再让他回复到画线前,当然最好是只重绘这个Item所占的区域。var
R: TRect;
begin
R:= ListBox1.ItemRect( 0 );
ListBox1.Canvas.Pen.Width:= 2;
ListBox1.Canvas.Pen.Mode:=pmNotXor; //用异或模式来画线,第二次用的时候就擦掉了
ListBox1.Canvas.MoveTo(R.Left, R.Top + 1);
ListBox1.Canvas.LineTo(R.Right, R.Top + 1);
end;