0

このデモを Delphi シアトルで開いたところ、正常に動作しました。プログラムを開いてデモフォームを含めると、機能しません。コントロールにヒントを追加できません。

    procedure TMainForm.FormCreate(Sender: TObject);
      application.ShowHint:=true;
      application.OnHint :=OnApplicationHint;
    end;

    procedure TMainForm.OnApplicationHint(Sender: TObject);
    begin
      caption := (Application.Hint);
    end;

My program is converted from XE7 to Seattle. So what could be the difference?

実際にヒントを表示するコードはどこにありますか??

編集:ヒントを示すコードを見つけました。以下は、新しい XE-10 Seattle プログラムでは機能しますが、 XE-7 から変換されたプログラムでは機能しません。

var
  LToolInfo: TOOLINFO;

  FNativeControlHandle,
  FToolTipHandle: HWND;
begin
 FNativeControlHandle := WindowHandleToPlatform(form1.Handle).Wnd;
  if FNativeControlHandle <> 0 then begin
    FToolTipHandle := CreateWindowEx(0, TOOLTIPS_CLASS, nil, WS_POPUP or TTS_ALWAYSTIP, 0, 0, 300, 300,FNativeControlHandle, 0, hInstance, nil);


    SetWindowPos(FToolTipHandle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE);

    FillChar(LToolInfo, SizeOf(TOOLINFO), 0);
    LToolInfo.cbSize := SizeOf(TOOLINFO);
    LToolInfo.uFlags := TTF_SUBCLASS or TTF_IDISHWND or TTF_PARSELINKS;
    LToolInfo.hinst := hInstance;
    LToolInfo.hwnd := FNativeControlHandle;
    LToolInfo.uId := FNativeControlHandle;
    LToolInfo.lpszText := PWideChar('Hint');


    SendMessage(FToolTipHandle, TTM_ADDTOOL, 0, LPARAM(@LToolInfo));
    SendMessage(FToolTipHandle, TTM_ACTIVATE, NativeInt(True), LPARAM(@LToolInfo));
  end;
4

1 に答える 1

2

XE7で動作しないことから、変換されたプログラムのヒントで同様の問題がありましたDelphi Seattle

チェックボックス"Activate runtime themes"(私のドイツ語版では "Laufzeit-Themes aktivieren") をオンにすると ( Project --> Options --> Application) ヒントが表示されました。

于 2016-03-07T17:33:11.167 に答える