Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi E2010不兼容类型:';HWND&x27;和';TWindowHandle';_Delphi - Fatal编程技术网

Delphi E2010不兼容类型:';HWND&x27;和';TWindowHandle';

Delphi E2010不兼容类型:';HWND&x27;和';TWindowHandle';,delphi,Delphi,出现以下错误: [dcc64错误]Unit1.pas(34):E2010不兼容类型:“HWND”和“TWindowHandle” [dcc64致命错误]Project1.dpr(6):F2063无法编译使用的单元“Unit1.pas” 如何解决这些问题?Self.handle在FMX中不是HWND类型。您应该使用WindowHandleToPlatform()的Wnd属性将TWindowHandle转换为HWND。 因此,部分代码如下所示: unit Unit1; interface use

出现以下错误:

[dcc64错误]Unit1.pas(34):E2010不兼容类型:“HWND”和“TWindowHandle”

[dcc64致命错误]Project1.dpr(6):F2063无法编译使用的单元“Unit1.pas”


如何解决这些问题?

Self.handle
在FMX中不是HWND类型。您应该使用
WindowHandleToPlatform()
Wnd
属性将TWindowHandle转换为HWND。 因此,部分代码如下所示:

unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
  FMX.Edit, FMX.Controls.Presentation, Windows, IOUtils;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.Button1Click(Sender: TObject);

var
  Res : Integer;
begin
  Res := MessageBox(
    Self.Handle
    , PChar('Сообщение в окне диалога.')
    , PChar('Заголовок окна')
    , MB_YESNOCANCEL + MB_ICONINFORMATION
    );

  case Res of
    IDYES : begin
      //Действия в случае, когда пользователь нажал кнопку "Да".
    end;
    IDNO : begin
      //Действия в случае, когда пользователь нажал кнопку "Нет".
    end;
    IDCANCEL : begin
      //Действия в случае, когда пользователь нажал кнопку "Отмена".
    end;
  end;
end;
end.
更新1
WindowHandleToPlatform
功能位于
FMX.Platform.Win
单元中。您应该将其添加到uses子句中

更新2:
正如@andreas rejbrand在评论中提到的,使用
而不是
+
组合标志

有一个新错误:[dcc64错误]Unit1.pas(33):E2003未声明的标识符:“WindowHandleToPlatform”和[dcc64错误]Unit1.pas(33):E2035实际值不够parameters@avalone:您应该在uses子句中添加
FMX.Platform.Win
。另外,不要使用
+
组合标志;相反,可以使用
(由于您只将字符串文本传递给
MessageBox
函数,如果愿意,可以省略
PChar
强制转换。)或者,您可以使用
FormToHWND(Self)
而不是
WindowHandleToPlatform(Self.Handle).Wnd
FormToHWND()
也在
FMX.Platform.Win
单元中。
...
Res := MessageBox(
    WindowHandleToPlatform(Self.Handle).Wnd
    , PChar('Сообщение в окне диалога.')
    , PChar('Заголовок окна')
    , MB_YESNOCANCEL or MB_ICONINFORMATION
    );