E2003 Необъявленный идентификатор: «mtConfirmation» и «mbOK»

Из того, что я могу сказать, оба они должны быть в System.UITypes, которые я использую, но я все равно получаю сообщение об ошибке. Как я могу это исправить?

Я создал диалоговое окно сообщения из примера в http://docwiki.embarcadero.com/CodeExamples/XE7/en/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.

person Friso    schedule 04.03.2015    source источник


Ответы (1)


Перечисленные типы в этом модуле имеют область действия. Обратите внимание на использование

{$SCOPEDENUMS ON}

прямо в верхней части устройства.

Директива $SCOPEDENUMS включает или отключает использование перечислений с ограниченной областью действия в коде Delphi. В частности, $SCOPEDENUMS влияет только на определения новых перечислений и управляет только добавлением символов значений перечисления в глобальную область.

В состоянии {$SCOPEDENUMS ON} перечисления ограничены областью действия, а значения перечисления не добавляются в глобальную область. Чтобы указать член перечисления с заданной областью, необходимо указать тип перечисления.

Это означает, что необходимо полностью охватить значения, как это

TMsgDlgType.mtConfirmation

а вот так

TMsgDlgBtn.mbOK

и так далее.

person David Heffernan    schedule 04.03.2015