//打开组件双缓冲,以消除闪烁
//理论上,继承自TWinControl的控件都应该打开双缓冲,以下并没有全部列出
//根据具体用到的窗口控件打开双缓冲
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
this->DoubleBuffered=true; //开启Form1的双缓冲
for(int i=0;i<this->ComponentCount;i++)
{ //开启所有Panel的双缓冲
if(String(this->Components[i]->ClassName())=="TPanel")
((TPanel*)(Components[i]))->DoubleBuffered=true;
//开启所有GroupBox的双缓冲
if(String(this->Components[i]->ClassName())=="TGroupBox")
((TGroupBox*)(Components[i]))->DoubleBuffered=true;
//开启所有Edit的双缓冲
if(String(this->Components[i]->ClassName())=="TEdit")
((TEdit*)(Components[i]))->DoubleBuffered=true;
//开启所有CheckBox的双缓冲
if(String(this->Components[i]->ClassName())=="TCheckBox")
((TCheckBox*)(Components[i]))->DoubleBuffered=true;
//开启所有DateTimePicker的双缓冲
if(String(this->Components[i]->ClassName())=="TDateTimePicker")
((TDateTimePicker*)(Components[i]))->DoubleBuffered=true;
//开启所有DBGrid的双缓冲
if(String(this->Components[i]->ClassName())=="TDBGrid")
((TDBGrid*)(Components[i]))->DoubleBuffered=true;
//开启所有DBEdit的双缓冲
if(String(this->Components[i]->ClassName())=="TDBEdit")
((TDBEdit*)(Components[i]))->DoubleBuffered=true;
}
}
//-------------------------------------------------------------------
参考:http://myseeker.bokee.com/5748361.html