Delphi E2010不兼容类型:';HWND&x27;和';TWindowHandle';
出现以下错误: [dcc64错误]Unit1.pas(34):E2010不兼容类型:“HWND”和“TWindowHandle” [dcc64致命错误]Project1.dpr(6):F2063无法编译使用的单元“Unit1.pas”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
如何解决这些问题?
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
);