Funcionamiento de DIALOG

Post Reply
fergonm
Posts: 133
Joined: Fri Nov 30, 2007 11:34 am
Location: Zaragoza (España)

Funcionamiento de DIALOG

Post by fergonm »

Buenos días.

En un Cuadro de dialogo (de Siniestros) tengo varios GET, s. uno de ellos es el número de Póliza. Desearía poder comprobar sí la póliza ha tenido otros siniestro y por lo tanto tengo sus datos en el fichero de pólizas para poder dibujar el resto de los GET,s que son de ese fichero.

Lo he intentado con un bucle IF y dentro del bucle un refresco del cuadro, pero no lo logro.

¿Pueden ayudarme?.

Muchas gracias. Fernando.
fergonm
Posts: 133
Joined: Fri Nov 30, 2007 11:34 am
Location: Zaragoza (España)

Post by fergonm »

Pongo el ejemplo de lo hecho.

/////////////////////////////////////////////////
DEFINE DIALOG oDlg RESOURCE "Dialog_1" TITLE "Altas siniestros" BRUSH oBrush
REDEFINE GET cRefe ID 10 OF oDlg
REDEFINE DbCombo oCbx VAR cClaveCia ID 11 OF oDlg;
alias "Compa";
ITEMFIELD "ClaveCia";
LISTFIELD "ClaveCia";
update
REDEFINE GET cNumSini ID 12 OF oDlg
REDEFINE GET fFeSini PICTURE "@D" ID 13 OF oDlg
REDEFINE GET fFeNotif PICTURE "@D" ID 14 OF oDlg
REDEFINE GET fFeVisita PICTURE "@D" ID 15 OF oDlg
REDEFINE GET cNumPoliza ID 16 OF oDlG

SELE 2
SET INDEX TO I1Poliza
SEEK cNumPoliza
IF .NOT. EOF()

cRamo:=Polizas->Ramo
cNombre:=Polizas->Nombre
cDomicilio:=Polizas->Domicilio
cPoblacion:=Polizas->Poblacion
cTelefono:=Polizas->Telefono
REDEFINE GET cRamo ID 17 OF oDlg
REDEFINE GET cNombre ID 18 OF oDlg
REDEFINE GET cDomicilio ID 19 OF oDlg
REDEFINE GET cTelefono ID 23 OF oDlg
REDEFINE GET cPoblacion ID 22 OF oDlg

oDlg:Refresh()
Else

REDEFINE GET cRamo ID 17 OF oDlg
REDEFINE GET cNombre ID 18 OF oDlg
REDEFINE GET cDomicilio ID 19 OF oDlg
REDEFINE GET cTelefono ID 23 OF oDlg
REDEFINE GET cPoblacion ID 22 OF oDlg
END IF
REDEFINE GET cNota ID 20 OF oDlg
/* REDEFINE LISTBOX oLb FIELDS Garant->NumGaranti,Garant->Garantia,STR(Garant->CapitalIni);
HEADERS "Nº Póliza","Garantía","Capital" ID 21 OF oDlg

SELE 1
INDEX ON Siniestr->NumPoliza TO TEMPORAL2 FOR Siniestr->NumPoliza==cNumPoliza
REDEFINE LISTBOX oLbfg FIELDS Siniestr->NumControl HEADERS "Refe" ID 24 OF oDlg
*/
REDEFINE BUTTON ID 25 OF oDlg ACTION (ILd:=.t., oDlg:Refresh())
REDEFINE BUTTON ID 26 OF oDlg ACTION oDlg:End()
REDEFINE BUTTON ID 27 OF oDlg ACTION (lPr:=.t., oDlg:End())
ACTIVATE DIALOG oDlg CENTERED
ERASE TEMPORAL.NTX
CLOSE DATABASES
/////////////////////////////////////
Intento que tras introducir el número de póliza se compruebe en el fichero de pólizas sí está la mencionada póliza y recuperar los datos de la misma. En CL 5, tras en GET podía hacer la comprobación y cargar las variables con su valor. Ahora en FWH no se como hacerlo.

Un saludo. Fernando.
FiveWiDi
Posts: 910
Joined: Mon Oct 10, 2005 2:38 pm

Post by FiveWiDi »

fergonm wrote:Pongo el ejemplo de lo hecho.

/////////////////////////////////////////////////
DEFINE DIALOG oDlg RESOURCE "Dialog_1" TITLE "Altas siniestros" BRUSH oBrush
REDEFINE GET cRefe ID 10 OF oDlg
REDEFINE DbCombo oCbx VAR cClaveCia ID 11 OF oDlg;
alias "Compa";
ITEMFIELD "ClaveCia";
LISTFIELD "ClaveCia";
update
REDEFINE GET cNumSini ID 12 OF oDlg
REDEFINE GET fFeSini PICTURE "@D" ID 13 OF oDlg
REDEFINE GET fFeNotif PICTURE "@D" ID 14 OF oDlg
REDEFINE GET fFeVisita PICTURE "@D" ID 15 OF oDlg
REDEFINE GET cNumPoliza ID 16 OF oDlG

SELE 2
SET INDEX TO I1Poliza
SEEK cNumPoliza
IF .NOT. EOF()

cRamo:=Polizas->Ramo
cNombre:=Polizas->Nombre
cDomicilio:=Polizas->Domicilio
cPoblacion:=Polizas->Poblacion
cTelefono:=Polizas->Telefono
REDEFINE GET cRamo ID 17 OF oDlg
REDEFINE GET cNombre ID 18 OF oDlg
REDEFINE GET cDomicilio ID 19 OF oDlg
REDEFINE GET cTelefono ID 23 OF oDlg
REDEFINE GET cPoblacion ID 22 OF oDlg

oDlg:Refresh()
Else

REDEFINE GET cRamo ID 17 OF oDlg
REDEFINE GET cNombre ID 18 OF oDlg
REDEFINE GET cDomicilio ID 19 OF oDlg
REDEFINE GET cTelefono ID 23 OF oDlg
REDEFINE GET cPoblacion ID 22 OF oDlg
END IF
REDEFINE GET cNota ID 20 OF oDlg
/* REDEFINE LISTBOX oLb FIELDS Garant->NumGaranti,Garant->Garantia,STR(Garant->CapitalIni);
HEADERS "Nº Póliza","Garantía","Capital" ID 21 OF oDlg

SELE 1
INDEX ON Siniestr->NumPoliza TO TEMPORAL2 FOR Siniestr->NumPoliza==cNumPoliza
REDEFINE LISTBOX oLbfg FIELDS Siniestr->NumControl HEADERS "Refe" ID 24 OF oDlg
*/
REDEFINE BUTTON ID 25 OF oDlg ACTION (ILd:=.t., oDlg:Refresh())
REDEFINE BUTTON ID 26 OF oDlg ACTION oDlg:End()
REDEFINE BUTTON ID 27 OF oDlg ACTION (lPr:=.t., oDlg:End())
ACTIVATE DIALOG oDlg CENTERED
ERASE TEMPORAL.NTX
CLOSE DATABASES
/////////////////////////////////////
Intento que tras introducir el número de póliza se compruebe en el fichero de pólizas sí está la mencionada póliza y recuperar los datos de la misma. En CL 5, tras en GET podía hacer la comprobación y cargar las variables con su valor. Ahora en FWH no se como hacerlo.

Un saludo. Fernando.
Estás mezclando la definición del DIALOG con funciones/procedimientos.

Seria mejor:

DEFINE DIALOG oDlg RESOURCE "Dialog_1" TITLE "Altas siniestros" BRUSH oBrush
REDEFINE GET cRefe ID 10 OF oDlg
REDEFINE DbCombo oCbx VAR cClaveCia ID 11 OF oDlg;
alias "Compa";
ITEMFIELD "ClaveCia";
LISTFIELD "ClaveCia";
update
REDEFINE GET cNumSini ID 12 OF oDlg
REDEFINE GET fFeSini PICTURE "@D" ID 13 OF oDlg
REDEFINE GET fFeNotif PICTURE "@D" ID 14 OF oDlg
REDEFINE GET fFeVisita PICTURE "@D" ID 15 OF oDlg
REDEFINE GET cNumPoliza ID 16 OF oDlG VALID ;
(Mifunción( oDlg, @cRamo, @cNombre, @cDomicilio, @cTelefono, @cPoblacion), .T.)

REDEFINE GET cRamo ID 17 OF oDlg UPDATE
REDEFINE GET cNombre ID 18 OF oDlg UPDATE
REDEFINE GET cDomicilio ID 19 OF oDlg UPDATE
REDEFINE GET cTelefono ID 23 OF oDlg UPDATE
REDEFINE GET cPoblacion ID 22 OF oDlg UPDATE

ACTIVATE DIALOG oDlg

../..

FUNTION Mifunción( oDlg, cRamo, cNombre, cDomicilio, cTelefono, cPoblacion)

SELE 2
SET INDEX TO I1Poliza
SEEK cNumPoliza
IF .NOT. EOF()

cRamo:=Polizas->Ramo
cNombre:=Polizas->Nombre
cDomicilio:=Polizas->Domicilio
cPoblacion:=Polizas->Poblacion
cTelefono:=Polizas->Telefono

oDlg:Refresh()
END IF

Return Nil


No se si funcionarà, pero el tipo de codificación debería ser así en mi modesta opinión.

Recuerda que el VALID debe devolver SIEMPRE un valor LOGICO, y en este caso siempre .T. sino el GET no perderia el FOCO.

Saludos
Carlos G.
fergonm
Posts: 133
Joined: Fri Nov 30, 2007 11:34 am
Location: Zaragoza (España)

Post by fergonm »

Gracias Five.

En principio da error de compilación pero seguiré por ese camino.
Saludos. Fernando
User avatar
ADBLANCO
Posts: 299
Joined: Mon Oct 22, 2007 3:03 pm
Location: Valencia - Venezuela

Post by ADBLANCO »

La forma que te da fivewidi es la forma correcta de hacer las cosas, lo único es la función debe retornarte un valor cierto o falso, Al Utilizar la propiedad Valid; si retorna falso, no sale del get, así que debes decidir el comportamiento visual del módulo.
fergonm
Posts: 133
Joined: Fri Nov 30, 2007 11:34 am
Location: Zaragoza (España)

Post by fergonm »

Gracias ADBLANCO

Ya lo tengo, en princioio daba errores por temas tontos como un a"tilde" en una función, pero ya está funcionando.
Saludos. Fernando
Post Reply