禁止某控件重绘的有关问题
禁止某控件重绘的问题
问题描述
Pannel上有1000个label,点button1,调整所有label的高度,由于每调整一个,窗口就会重绘,所以造成很慢,
试过把Panel隐藏,就会非常快,但是我不隐藏pannel,想通过屏蔽pannel重绘,实现快速调整,求教
------解决方案--------------------
没办法,一个控件若自己要重画,它的同级控件就得重画。。你试试form.DoubleBuffered:=true
------解决方案--------------------
发送WM_SETREDRAW消息
------解决方案--------------------
没放1000个,反正少了是效率挺高的。。参考下。。
for I := 0 to self.Panel1.ControlCount - 1 do
begin
if (self.Panel1.Controls[i] is TLabel) then
TLabel(Aowner.Controls[i]).Height:=StrToIntDef(self.edt1.Text,20);
TLabel(Aowner.Controls[i]).Width:=StrToIntDef(self.edt2.Text,30);
end;
满意给分吖。。。
问题描述
Pannel上有1000个label,点button1,调整所有label的高度,由于每调整一个,窗口就会重绘,所以造成很慢,
试过把Panel隐藏,就会非常快,但是我不隐藏pannel,想通过屏蔽pannel重绘,实现快速调整,求教
------解决方案--------------------
没办法,一个控件若自己要重画,它的同级控件就得重画。。你试试form.DoubleBuffered:=true
------解决方案--------------------
发送WM_SETREDRAW消息
------解决方案--------------------
没放1000个,反正少了是效率挺高的。。参考下。。
for I := 0 to self.Panel1.ControlCount - 1 do
begin
if (self.Panel1.Controls[i] is TLabel) then
TLabel(Aowner.Controls[i]).Height:=StrToIntDef(self.edt1.Text,20);
TLabel(Aowner.Controls[i]).Width:=StrToIntDef(self.edt2.Text,30);
end;
满意给分吖。。。