问题大致是这样,一窗体内某控件动态生成,当由一click触发一事件:如下(首先判断是否存在此控件,如果存在删除)
countnum:= ParentControl.ControlCount;
if countnum>0 then
begin
try
for i:=0 to countnum-1 do
begin
if ParentControl.Controls[i].ClassType=TRzMemo then
begin
ParentControl.Controls[i].Free;
Break;
end;
end;
except
end;
end;会出现闪屏现象,如何解决呢?
countnum:= ParentControl.ControlCount;
if countnum>0 then
begin
try
for i:=0 to countnum-1 do
begin
if ParentControl.Controls[i].ClassType=TRzMemo then
begin
ParentControl.Controls[i].Free;
Break;
end;
end;
except
end;
end;会出现闪屏现象,如何解决呢?
解决方案 »
- delphi7单击DBGRID表中的某一行的数据时,就会显示在另外一个窗体上
- dbgrid 输入的小数 只能精确到 小数4位 ,精确到多位怎么设置
- WebBrowser打开页面提示错误"Interface not supported",为什么呢?
- 关于word文档中的表格合并问题??
- idhttp抓取网页的时候CPU太高了
- edit框的editmask功能
- 请问缓冲更新和事务有什么区别
- 急!关于EXCEL打印行数的设置
- 继续请教cobi同志一个问题
- Delphi6比Delphi5增加了什么功能?减去了什么功能?Delphi5的控件、程序在Delphi6能否正常运行?
- 同时选取多个相同标签的问题。
- DLL 中窗体消息循环求助
加上这句试一下
不信 你动态创建2个控件看看
自己以前写的方法procedure TfrmSqlManager.FreeSqlObject(Count:Integer;AParent:TComponent);
var
i,k: integer;
Asp,ADa,ADs,ADb: string;
begin
if (Count < 1) or (Count > 50) then Exit;
for i := 1 to Count do
begin
ADa := 'AData'+inttostr(i);
ADs := 'ADSource'+inttostr(i);
if Self.FindComponent(ADa) <> nil then Self.FindComponent(ADa).Free;
if Self.FindComponent(ADs) <> nil then Self.FindComponent(ADs).Free;
end;
for k := 1 to Count do
begin
Asp := 'ASplitter'+inttostr(k);
ADb := 'ADBGrid'+inttostr(k);
if AParent.FindComponent(Asp) <> nil then AParent.FindComponent(Asp).Free;
if AParent.FindComponent(ADb) <> nil then AParent.FindComponent(ADb).Free;
end;
end;
for i:=0 to ParentControl.ControlCount -1 do
begin
if ParentControl.Controls[i] is TRzMemo then
begin
TRzMemo(ParentControl.Controls[i]).Free; //全部释放了。
//Break;
end;
end;
我改了下, 我的想法是根本就没有判断。感觉你的程度不是释放某一个TRzMemo,好像全部TRzMemo这个类型的(或许总共才一个TRzMemo)。
if countnum> 0 then
begin
try
for i:=0 to countnum-1 do
begin
if ParentControl.Controls[i].ClassType=TRzMemo then
begin
ParentControl.Controls[i].Free;
Break;
end;
end;
self.update;//加上这句看看 在看看From.omPain事件有写什么代码没
except
end;
然后创建
再self.DoubleBuffered := True;
//
Perform(WM_SETREDRAW, 1, 0); //解锁屏幕并重画
RedrawWindow(AForm.Handle, Nil, 0, RDW_FRAME + RDW_INVALIDATE +
RDW_ALLCHILDREN + RDW_NOINTERNALPAINT);
最后来判断并且处理
绝对没有问题