PDA

Ver la Versión Completa : ¿como mandar mensajes desde Datamodule?


nefy
15-12-2003, 20:11:10
Hola tengo un problema; quiero enviar mensajes antes de que guarde la tabla pero tengo mis tablas en un DataModule y es la primera vez que uso uno de estos. Podría alguien decirme por favor como mandar los mensajes antes de que guarde la tabla.
Yo lo intente desde eventos en las tablas que estan en el datamodule pero no los acepta.

Gracias por la ayuda que me puedan brindar.

Descendents
15-12-2003, 20:15:27
Perdona pero no te entiendo.

Mensajes, te refieres a showmessages? o application.messagebox? o que ?

si es esto, mira note falte el uses dialogs.

Un saludo

nefy
15-12-2003, 20:17:36
el uses dialogs usar donde? y me refiero a un showmsg o puede
ser un applic.msgbox no importa

Descendents
15-12-2003, 20:19:46
arriba del unit del data module, estan los uses.
alli le añades dialogs.

uses
SysUtils, Classes;

uses
SysUtils, Classes,dialogs;

a ver que tal
Un saludo

nefy
15-12-2003, 20:23:08
si esta declarada en el datamodule
pero no reconoce el showmsg
lo que pasa es que yo quiero que aparezca el msg en otra form aunque el msg lo declare en un evento del datamodule. Como le hare?

Descendents
15-12-2003, 20:24:52
desde el form , tienes en el uses el datamodule?

No te compila? o te da error donde? y cuando?

Descendents
15-12-2003, 20:27:40
Lo declaraste en un evento del datamodule o en un evento de la tabla del datamodule?

nefy
15-12-2003, 20:28:37
Descendents comentó:
desde el form , tienes en el uses el datamodule?

No te compila? o te da error donde? y cuando?

O sea, mando el mensaje asi:
procedure TDM.TApzAfterPost(DataSet: TDataSet);
begin
if Principal.ComboBox16.ItemIndex=-1 then
begin
showmessage('Favor de editar una colonia valida');
Principal.combobox16.ItemIndex:=0;
Principal.dbedit12.Text:=TColon_Apa.Fields[2].AsString;
Principal.ActiveControl:=Principal.Combobox16;
end;
end;

en el datamodule pero no lo reconoce ni enviara en la Form Principal

nefy
15-12-2003, 20:30:55
es en el evento antes de guardar (AfterPost) de una tabla

Descendents
15-12-2003, 20:34:43
has mirado si entra el programa dentro del codigo?

ponte encima de esta linea

if Principal.ComboBox16.ItemIndex=-1 then

y dale a F5. Entonces corre el programa y cuando se pare , dale a F8 y iras avanzando y mira a ver si entra.

Sino entra, es que if Principal.ComboBox16.ItemIndex=-1 then
le hace no entrar.Esta condición no es correcta supongo.

Y si entra , mira cuando pase por showmessage a ver que hace.

Por cierto si quieres que para antes de grabar es el beforepost no afterpost.

Un saludo

nefy
15-12-2003, 20:37:30
Tienes razon en lo del evento pero el error es el siguiente:

[Error] Unit4.pas(1888): Undeclared identifier: 'showmessage'
[Fatal Error] Unit3.pas(228): Could not compile used unit 'Unit4.pas'

Y esto no permite que se ejecute el programa. Obviamente la unit4 es donde estan los eventos

Descendents
15-12-2003, 20:41:43
O sea no te compila.
en el unit4 seguro que tienes dialogs en el uses?

miralo bien.
Sino añadelo.

Descendents
15-12-2003, 20:44:08
substituye el showmessage por
MessageDlg('Favor de editar una colonia valida', mtWarning, [mbOK], 0);

nefy
15-12-2003, 20:51:53
ya estuvo gracias faltaba lo de uses

Lepe
16-12-2003, 11:30:24
para futuros casos haz lo siguiente:

vete a un form, escribe showmessage o la funcion que quieras ejecutar en el datamodule, ponte encima con el raton y dale a F1

te dirá que está declarado en la Unit Qdialogs, o la que toque en su momento ;), así que te vas al datamodule y allí añades el uses.

Si no te sale la ayuda,

Me pasó que dentro del datamodule, no podia usar el objeto Application.Messagebox y era algo tan simple como eso, buscar en que unidad está declarado el objeto application y añadirlo al uses. Algo tonto.... pero si es la primera vez que usas un datamodule te comes el coco pensando que dentro de él no puedes usar la función que buscas.

Si dentro del form, tampoco te sale en que unidad está definido lo que buscas, pues no queda mas remedio que arrancar la ayuda manualmente y ponerlo allí, incluso puede que tengas que irte al menú MS SDK help files del menu inicio de windows y arrancar el archivo Win32 Programer's Reference (si se trata de una API de Windows.)

La verdad, Delphi tiene una ayuda EXCELENTE!!

saludos