簡體   English   中英

E2003未聲明的標識符:“ mtConfirmation”和“ mbOK”

[英]E2003 Undeclared identifier: 'mtConfirmation' and 'mbOK'

據我所知,這兩個都應該在System.UITypes中,但我仍然收到錯誤消息。 我怎樣才能解決這個問題?

我基於http://docwiki.embarcadero.com/CodeExamples/XE7/zh-CN/FileExists_(Delphi)中示例的消息對話框

原始代碼來自http://delphi.radsoft.com.au/2013/11/checking-for-an-internet-connection-on-mobile-devices-with-delphi-xe5/

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;

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

var
  Form1: TForm1;

implementation

{$R *.fmx}

uses
  NetworkState;

procedure TForm1.Button1Click(Sender: TObject);
var
  NS: TNetworkState;
begin
  NS := TNetworkState.Create;
  try
    if not NS.IsConnected then begin
      MessageDlg(('No connection'), mtConfirmation, [mbOK], 0);
    end else if NS.IsWifiConnected then begin
      MessageDlg(('Wifi connection'), mtConfirmation, [mbOK], 0);
    end else if NS.IsMobileConnected then begin
      MessageDlg(('Mobile connection'), mtConfirmation, [mbOK], 0);
    end;
    Label2.Text := NS.CurrentSSID;
  finally
    NS.Free;
  end;
end;

end.

本單元中的枚舉類型是作用域 注意使用

{$SCOPEDENUMS ON}

就在單元頂部

$ SCOPEDENUMS指令啟用或禁用在Delphi代碼中使用范圍枚舉。 更具體地說,$ SCOPEDENUMS僅影響新枚舉的定義,並且僅控制將枚舉的值符號添加到全局范圍。

在{$ SCOPEDENUMS ON}狀態下,枚舉是作用域,而枚舉值不會添加到全局作用域。 要指定作用域枚舉的成員,您必須包括枚舉的類型。

這意味着需要像這樣充分定義值的范圍

TMsgDlgType.mtConfirmation

像這樣

TMsgDlgBtn.mbOK

等等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM