【问题标题】:Delphi - FMX Form BUG?Delphi - FMX 表单错误?
【发布时间】:2015-08-02 11:03:58
【问题描述】:

我有通常的代码来显示模态形式。但有时会发生下图中捕获的奇怪错误。 (大约每 10 次尝试显示该表单一次)它只发生在自定义 FireMonkey 样式“Diamond.style”中。

我设置样式的代码(在 DPR 文件中):

var
  lib: THandle;
  RS: TResourceStream;
begin
  Application.Initialize;
  lib := LoadLibrary('res.dll');
  RS := TResourceStream.Create(lib, 'DIAMOND', RT_RCDATA);
  try
    TStyleManager.SetStyle(TStyleManager.LoadFromStream(RS));
  finally
    RS.Free;
  end;
  ...

我的表单显示代码:

  formProjectName := TformProjectName.Create(Self);
  try
    formProjectName.ShowModal;
    ...
  finally
    formProjectName.Free;
  end;

【问题讨论】:

  • 更容易使用资源流。并且您最好将该模块加载为仅 res 模块。
  • 这里的 PChar 演员表也是多余的。文字作为 PChar 传递。最后你的尝试有点松散。始终在收购后立即尝试。
  • 是的,你是对的,我忘了在Delphi中存在TResourceStream。我会在帖子中更新代码。但这不能解决我的问题。
  • 我知道。对不起。只是在一个附带问题上提供一点帮助。
  • 不,谢谢您的回答。我学到了一些新东西!

标签: delphi firemonkey delphi-xe8


【解决方案1】:

我不确定这是否有帮助....但这是我在加载样式名称时使用的 TComboBox 的“OnChange”事件中的代码:

var
  resname :string;
  style:TFMXObject;

begin
  // set style to default...
  if TOSVersion.Platform = pfAndroid then
      resname := 'And';
  if TOSVersion.Platform = pfWindows then
      resname := 'Win';

  if cbStyles.ItemIndex > 0 then
  Begin
    //(Add prefix to style name from TComboBox)
    resname := resname + cbStyles.Selected.Text;
    Style := TStyleStreaming.LoadFromResource(HInstance,resname, RT_RCDATA) ;
    if style <> nil then
      TStyleManager.SetStyle(style);

  End;
   // The below line causes hangs in some future version (just guessing:-) ) -- XE8 was OK.
  //else TStyleManager.SetStyle(nil);

我通常像这样加载 TComboBox STyles...

 CBStyles.Items.Clear;

    CBStyles.Items.Add('Default');

    if TOSVersion.Platform = pfAndroid  then
    begin
       CBStyles.Items.Add('CoralCrystal');
       CBStyles.Items.Add('CoralDark');
       CBStyles.Items.Add('Diamond');
       CBStyles.Items.Add('EmeraldCrystal');

       CBStyles.Items.Add('EmeraldDark');
       CBStyles.Items.Add('Jet');
       CBStyles.Items.Add('Radiant');

       CBStyles.Items.Add('Sterling');
       CBStyles.Items.Add('Vapor');

    end;

也许这会有所帮助...

【讨论】:

    猜你喜欢
    • 2020-05-29
    • 2022-06-30
    • 2014-10-16
    • 1970-01-01
    • 2021-06-07
    • 1970-01-01
    • 2014-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多