PDA

Ver la Versión Completa : There is no overloaded version of MessageDlg that can be called with these arguments


H.Sagas96
11-06-2015, 20:08:31
El error lo que dice es:

[DCC Error] Unit1.pas(160): E2250 There is no overloaded version of 'MessageDlg' that can be called with these arguments

No se como corregirlo.

Esta es una parte de mi codigo:

i := messagedlg('¿Quiere borrar el pedido?',mtWarning, mbokcancel,0);
if (i = mrok) then
ShowMessage('Se ha borrado el pedido.');

Me mantiene constantemente subrayado de error el "mtWarning" dentro del codigo y no corre.

Casimiro Notevi
11-06-2015, 20:09:44
Recuerda poner los tags al código fuente, ejemplo:

http://www.clubdelphi.com/images/UtilizarTAGs.png

Gracias :)

H.Sagas96
11-06-2015, 20:24:22
ok, perdon. Podrias resolverme la duda?

ecfisa
11-06-2015, 21:38:23
Hola H.Sagas96.

En delphi 7 funciona perfectamente de este modo:

if MessageDlg('¿Quiere borrar el pedido?', mtWarning, [mbYes,mbNo], 0) = mrOk then
....


Pero revisa en este ejemplo la sintáxis para la version XE7: MessageDlg (Delphi) (http://docwiki.embarcadero.com/CodeExamples/XE7/en/MessageDlg_%28Delphi%29)

Saludos :)

H.Sagas96
11-06-2015, 21:45:21
ok muchas gracias :) ahorita reviso :)

H.Sagas96
11-06-2015, 21:47:18
No funciona en el xe6 :(

ecfisa
11-06-2015, 22:26:09
Hola de nuevo.

A ver, revisa estos enlaces:

Messagedlg | Delphi XE5 XE6 XE7 XE8 Firemonkey, Delphi (http://www.fmxexpress.com/tag/messagedlg/) (1)
New Non Blocking Message Dialog Function In Delphi XE7 on Android and IOS (http://www.fmxexpress.com/new-non-blocking-message-dialog-function-in-delphi-xe7-firemonkey-on-android-and-ios/) (2)
XE7: messageDlg not work under Android (http://codeverge.com/embarcadero.delphi.firemonkey/xe7-messagedlg-not-work-under-a/2004730)
Launching activities and handling results in Delphi XE6 Android apps (http://blong.com/Articles/DelphiXE6AndroidActivityResult/ActivityResult.htm)


Saludos :)

H.Sagas96
11-06-2015, 23:20:04
Muchas gracias :) Ya logre correguir el error gracias a los links :D

nlsgarcia
11-06-2015, 23:53:35
Club Delphi,


...There is no overloaded version of MessageDlg that can be called with these arguments...


...Ya logre corregir el error...

:rolleyes:

Revisa este código:

unit Unit1;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

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

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
if MessageDlg('¿Quiere borrar el pedido?', mtWarning, [mbYes,mbNo], 0) = mrYes then
MessageDlg('Pedido Borrado', mtInformation, [mbOk], 0)
else
MessageDlg('Se mantiene el Pedido', mtInformation, [mbOk], 0)
end;

end.

El código anterior en Delphi XE6 sobre Windows 7 Professional x32, Muestra en ambiente VCL el uso de la función MessageDlg.

Revisa esta código:

unit Unit1;

interface

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

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);
begin
if (MessageDlg('¿Quiere borrar el pedido?', TMsgDlgType.mtWarning, [TMsgDlgBtn.mbYes, TMsgDlgBtn.mbNo], 0) = mrYes) then
MessageDlg('Pedido Borrado', TMsgDlgType.mtInformation, [TMsgDlgBtn.mbOk], 0)
else
MessageDlg('Se mantiene el Pedido', TMsgDlgType.mtInformation, [TMsgDlgBtn.mbOk], 0)
end;

end.

El código anterior en Delphi XE6 sobre Windows 7 Professional x32, Muestra en ambiente FMX el uso de la función MessageDlg.

Revisa esta información:

1- Vcl.Dialogs.MessageDlg (http://docwiki.embarcadero.com/Libraries/XE6/en/Vcl.Dialogs.MessageDlg)

2- FMX.Dialogs.MessageDlg (http://docwiki.embarcadero.com/Libraries/XE6/en/FMX.Dialogs.MessageDlg)

Notas:

1- Toda la información anterior es para futuras consultas relacionadas a la función MessageDlg en ambiente VCL y FMX.

2- El código sugerido en VCL y FMX, funciono correctamente en Delphi XE6 y Delphi XE7.

3- El error mencionado en el Msg #1 (E2250 There is no overloaded version of 'MessageDlg' that can be called with these arguments), ocurre si se utiliza la sintaxis VCL de la función MessageDlg en FMX.

Espero sea útil :)

Nelson.

AgustinOrtu
12-06-2015, 03:59:50
Es una de las cosas de FMX que molesta bastante

Realmente, el tener que agregar el nombre del tipo enumerativo adelante seguido del valor en cuestión (TAlign.Client) ensucia mucho el código

Y el código delphi siempre me gusto por lo limpio que es

Pero bueno, se soluciona creando funciones PromtMsg, InfoMsg, WarningMsg etc