我有自己的 Form Resize 功能,但是 TChromium 组件有问题。当我尝试调整表单大小时,TChromium 的背景颜色变为黑色并快速闪烁,直到调整大小过程停止,而不是每次都必须是白色。此错误仅适用于 DelphiXE3。在 Delphi7 中一切正常,但由于某种原因我不能使用 Delphi7(某些 TChromium 函数不起作用)。
请帮我解决这个问题。这是我的 Resize Function 代码,基于 Timer Component(Interval:1):
//-------------------------FORM RESIZE TIMER BEGIN
if(Form1.Width>=((Screen.Width div 2))) then
begin
if(resize_to=LEF) then
begin
//Lets Resize To Left
if((Form1.Width>((Screen.Width div 2))) OR ((Mouse.CursorPos.X-Last_Cur_POSx)<0)) then
Form1.Left:=Mouse.CursorPos.X;
if((Form1.Width>((Screen.Width div 2))) OR ((Mouse.CursorPos.X-Last_Cur_POSx)<0)) then
Form1.Width:=Form1.Width-(Mouse.CursorPos.X-Last_Cur_POSx);
SetCursorPos(Form1.Left,Mouse.CursorPos.Y);
Last_Cur_POSx:=Mouse.CursorPos.X; //Remember Last Cursor Position
end
else
if(resize_to=RIGHT) then
begin
//Lets Resize To Right
if((Form1.Width>((Screen.Width div 2))) OR ((Mouse.CursorPos.X-Last_Cur_POSx)>0)) then
Form1.Width:=Form1.Width+(Mouse.CursorPos.X-Last_Cur_POSx);
SetCursorPos(Form1.Left+Form1.Width,Mouse.CursorPos.Y);
Last_Cur_POSx:=Mouse.CursorPos.X; //Remember Last Cursor Position
end
else
if(resize_to=BOTTOM) then
begin
//Lets Resize To Bottom
if(Form1.Height<(Screen.Height div 2)) then
Form1.Height:=Screen.Height div 2
else
if((Form1.Height-Form1.Top)<=((Screen.Height-Task_Panel_Size)-Form1.Top)) then
Form1.Height:=Form1.Height+(Mouse.CursorPos.Y-Last_Cur_POSy)
else
Form1.Height:=((Screen.Height-Task_Panel_Size)-Form1.Top);
SetCursorPos(Mouse.CursorPos.X,Form1.Top+Form1.Height);
Last_Cur_POSy:=Mouse.CursorPos.Y; //Remember Last Cursor Position
end
end
else
begin
Form1.Width:=(Screen.Width div 2);
end
//-------------------------FORM RESIZE TIMER END
谢谢。
通过添加 sleep(100) 解决了问题;Form1.Paint 事件中的命令 :)通过删除所有手工调整大小功能并激活 Form 默认调整大小,问题解决了。
感谢大家的帮助