CnPack Forum


 
Subject: 多语言组件切换语言闪烁厉害!!
xjw100
灌水科科长
Rank: 3Rank: 3


UID 1476
Digest Posts 0
Credits 134
Posts 74
点点分 134
Reading Access 10
Registered 2005-12-13
Location 桂林
Status Offline
Post at 2007-3-28 22:09  Profile | Blog | P.M. 
多语言组件切换语言闪烁厉害!!

cnpack自带的例子切换语言时,不光程序界面闪烁非常厉害,而且桌面的图标也闪烁。
但是cnwizards菜单里面的切换语言时一点也感觉不到闪烁,请问是怎么处理的?谢谢!
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6838
Posts 3591
点点分 6838
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2007-4-3 11:20  Profile | Blog | P.M. 
程序界面闪烁是因为例子中的多语管理器自动翻译了进程中的所有窗体,
专家包不闪烁是因为专家包的多语管理器并未翻译IDE主窗体等内容(不需要,只需翻译专家自身的窗体)。

至于桌面图标闪烁,很奇怪,我们测试一下看看。
Top
xjw100
灌水科科长
Rank: 3Rank: 3


UID 1476
Digest Posts 0
Credits 134
Posts 74
点点分 134
Reading Access 10
Registered 2005-12-13
Location 桂林
Status Offline
Post at 2007-6-27 20:25  Profile | Blog | P.M. 
桌面刷新的问题,我发现是用了LockWindowUpdate锁定窗口然后解锁引起桌面刷新的。
procedure TCnCustomLangManager.TranslateForm(AForm: TCustomForm);
begin
  LockWindowUpdate(AForm.Handle);
  try
    if FUseDefaultFont and Assigned(FLanguageStorage) then
    begin
      with FLanguageStorage do
      begin
        if FontInited then
        begin
        {$IFDEF DEBUG}
          CnDebugger.LogMsg('LangManager: FontInited. ');
        {$ENDIF DEBUG}
          if CurrentLanguageIndex <> -1 then
          begin
            AForm.Font.Name := DefaultFont.Name;
            AForm.Font.Size := DefaultFont.Size;
            AForm.Font.Charset := DefaultFont.Charset;
          end;
        end;
      end;
    end;
    TranslateComponent(AForm, AForm.ClassName);
  finally
    LockWindowUpdate(0);
  end;
end;
Top
 




All times are GMT++8, the time now is 2024-11-22 06:22

    本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.0.0  © 2001-2006 Comsenz Inc.
Processed in 0.007445 second(s), 8 queries , Gzip enabled

Clear Cookies - Contact Us - CnPack Website - Archiver - WAP