PDA

Ver la Versión Completa : MessageDlg XE8


BlueSteel
23-02-2018, 15:25:46
Hola de nuevo...

Esto de cambiarse de version desde el Delphi 7 al XE8 me ha traido varias complicaciones :confused:... y eso que recién empece hace 1 semana con esto...:rolleyes:

Otro de los codigos que no me ha funcionado bien, es el del MessageDlg !!!:-|

Cuando queria eliminar un registro, utilizaba la siguiente en el boton


Try
// La linea siguiente es la que usaba
//If MessageDlg('Seguro de Eliminar al Cliente '+#13+#13+DM_Datos.AQ_Socio['Soc_Nombre'], mtConfirmation, [mbYes, mbNo], 0) = mrYes then

// If (MessageDlg('Seguro de Eliminar al Socios '+#13+#13+DM_Datos.AQ_Socio['Soc_Nombre'] , mtConfirmation, [mbYes, mbNo], 0, mbYes) = mrYes ) then
if MessageDlg('Seguro de Eliminar al Socios ', mtConfirmation, [mbYes,mbNo], 0) = mrYes then
Begin
DM_Datos.AQ_Elimina.SQL.Clear;
DM_Datos.AQ_Elimina.SQL.Add('Delete From Socio Where Soc_Rut=:Var1');
DM_Datos.AQ_Elimina.Parameters[0].Value := DM_Datos.AQ_Socio['Soc_Rut'];
DM_Datos.AQ_Elimina.ExecSQL;
Selecciona;
End
Except
ShowMessage('No existen registros que se puedan eliminar');
End;


Bueno, despues de varios problemas de compilacion, lo logre ejecutar...

Problemas detectados:
- Antes podia incluir datos dentro del mensaje... ahora no lo hace (si pongo un dato de una tabla, simplemente no muestra el mensaje y no hace nada mas)
- Si bien ahora me muestra el mensaje, no me ejecuta la sentencia de eliminar el registro

A ver si me dan una manito, o por ultimo me indican que tipo de mensaje puedo utilizar para que se ejecute el codigo que necesito...

Gracias.. .y Salu2:cool:

Casimiro Notevi
23-02-2018, 15:56:18
¿MessageDlg espera un string, un ansistring o un pchar?

BlueSteel
23-02-2018, 19:50:04
¿MessageDlg espera un string, un ansistring o un pchar?

En realidad no se que entrega, pero eso es lo que usaba en D7 y me funcionaba super bien...

La idea es que cuando quiera eliminar un registro me pregunte si estoy seguro de borrar,, si indica que si, lo elimina o traspasa a otra tabla...

Neftali [Germán.Estévez]
24-02-2018, 12:04:29
Es raro, porque no es algo que debiera haber cambiado.
Este código, por ejemplo, funciona en Delphi 10 Seatle:


Try
// La linea siguiente es la que usaba
If MessageDlg('Seguro de Eliminar al Cliente '+#13+#13+ 'Soc_Nombre', mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin

If (MessageDlg('Seguro de Eliminar al Socios '+#13+#13+ 'Soc_Nombre' , mtConfirmation, [mbYes, mbNo], 0, mbYes) = mrYes ) then begin
if MessageDlg('Seguro de Eliminar al Socios ', mtConfirmation, [mbYes,mbNo], 0) = mrYes then Begin
{
DM_Datos.AQ_Elimina.SQL.Clear;
DM_Datos.AQ_Elimina.SQL.Add('Delete From Socio Where Soc_Rut=:Var1');
DM_Datos.AQ_Elimina.Parameters[0].Value := DM_Datos.AQ_Socio['Soc_Rut'];
DM_Datos.AQ_Elimina.ExecSQL;
Selecciona;
}
End
end;
end;
Except
ShowMessage('No existen registros que se puedan eliminar');
End;


He comentado la parte del DM para probar, pero los diálogos funcoinan como se espera.

https://s26.postimg.org/nubb3d5bd/Captura_1960.png

https://s26.postimg.org/xrmbwhpsp/Captura_1961.png

https://s26.postimg.org/y4dq2pq2x/Captura_1962.png

aposi
24-02-2018, 17:38:18
has probado con:
If MessageDlg('Seguro de Eliminar al Cliente '+#13+#13+DM_Datos.AQ_Socio['Soc_Nombre'].AsString, mtConfirmation, [mbYes, mbNo], 0) = mrYes then

Soa Pelaez
24-02-2018, 18:14:58
Una solución podría ser meter el mensaje en PChar () y adentro lo que requieras, debería funcionarte.

If (MessageDlg(PChar('Seguro de Eliminar al Socios '+#13+#13+DM_Datos.AQ_Socio['Soc_Nombre'] ), mtConfirmation, [mbYes, mbNo], 0, mbYes) = mrYes ) then

BlueSteel
26-02-2018, 16:35:00
;524741']Es raro, porque no es algo que debiera haber cambiado.
Este código, por ejemplo, funciona en Delphi 10 Seatle:


Try
// La linea siguiente es la que usaba
If MessageDlg('Seguro de Eliminar al Cliente '+#13+#13+ 'Soc_Nombre', mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin

If (MessageDlg('Seguro de Eliminar al Socios '+#13+#13+ 'Soc_Nombre' , mtConfirmation, [mbYes, mbNo], 0, mbYes) = mrYes ) then begin
if MessageDlg('Seguro de Eliminar al Socios ', mtConfirmation, [mbYes,mbNo], 0) = mrYes then Begin
{
DM_Datos.AQ_Elimina.SQL.Clear;
DM_Datos.AQ_Elimina.SQL.Add('Delete From Socio Where Soc_Rut=:Var1');
DM_Datos.AQ_Elimina.Parameters[0].Value := DM_Datos.AQ_Socio['Soc_Rut'];
DM_Datos.AQ_Elimina.ExecSQL;
Selecciona;
}
End
end;
end;
Except
ShowMessage('No existen registros que se puedan eliminar');
End;


He comentado la parte del DM para probar, pero los diálogos funcoinan como se espera.

https://s26.postimg.org/nubb3d5bd/Captura_1960.png

https://s26.postimg.org/xrmbwhpsp/Captura_1961.png

https://s26.postimg.org/y4dq2pq2x/Captura_1962.png

Gracias por vuestra ayuda.. :p

El código que tu dejaste si me funciono..:D. y no se porque el que tenia no funcionaba, pero bueno...:eek::confused::rolleyes:

Aqui os dejo el codigo que ahora me funciona

Try
// La linea siguiente es la que usaba
If MessageDlg('Seguro de Eliminar al Cliente '+#13+#13+ DM_Datos.AQ_Socio['Soc_Nombre']+' '+DM_Datos.AQ_Socio['Soc_APaterno'], mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
DM_Datos.AQ_Elimina.SQL.Clear;
DM_Datos.AQ_Elimina.SQL.Add('Delete From Socio Where Soc_Rut=:Var1');
DM_Datos.AQ_Elimina.Parameters[0].Value := DM_Datos.AQ_Socio['Soc_Rut'];
DM_Datos.AQ_Elimina.ExecSQL;
Selecciona;
End
Except
ShowMessage('No existen registros que se puedan eliminar');
End;