Board logo

Subject: 多语言组件切换语言闪烁厉害!! [Print This Page]

Author: xjw100    Time: 2007-3-28 22:09     Subject: 多语言组件切换语言闪烁厉害!!

cnpack自带的例子切换语言时,不光程序界面闪烁非常厉害,而且桌面的图标也闪烁。
但是cnwizards菜单里面的切换语言时一点也感觉不到闪烁,请问是怎么处理的?谢谢!
Author: Passion    Time: 2007-4-3 11:20

程序界面闪烁是因为例子中的多语管理器自动翻译了进程中的所有窗体,
专家包不闪烁是因为专家包的多语管理器并未翻译IDE主窗体等内容(不需要,只需翻译专家自身的窗体)。

至于桌面图标闪烁,很奇怪,我们测试一下看看。
Author: xjw100    Time: 2007-6-27 20:25

桌面刷新的问题,我发现是用了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;




Welcome to CnPack Forum (http://bbs.cnpack.org/) Powered by Discuz! 5.0.0