Ver Mensaje Individual
  #1  
Antiguo 12-05-2014
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Reputación: 18
jafera Va por buen camino
Ejecutar proceso segun valor de un DBRadioGroup

Buenas a todos.

A ver si me podeis aclarar un poco una duda que tengo de como posicionar un evento que se lanza desde un dbRadioGroup.

Al iniciar el formulario, con cada nuevo registro el DBRG coge el valor C (esta limitado a C y F).

Necesito hacer lo siguiente:
Al cambiar este valor a F, me debe mostrar un mensaje diciendome si quiero hacer un proceso.
Una vez guardado el proceso, si le vuelvo a poner valor C me debe avisar de si quiero hacer el proceso inverso.
No quiero que a cada cambio de registro o al cargar la tabla me salga el mensaje de si quiero realizar el cambio.

Donde es mejor que situe los eventos?, en el onchange del DBRG o en el del campo persistente?

Lo hecho hasata ahora pero no cumple mis expectativas:

Código Delphi [-]
procedure TF_Rebut.DBRadioGroup2Click(Sender: TObject);
begin
        if F_ModulDades.Rebut.State in [dsEdit, dsInsert] then
        begin
                if F_ModulDades.RebutPAGADOR.Value ='C' then
                begin
                        if MessageDlg('Vols borrar despeses extres?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
                        begin
                                F_ModulDades.Borra_Extres.Close;
                                F_ModulDades.Borra_Extres.Open;
                        end;
                end;
        end;
end;

Código Delphi [-]
procedure TF_ModulDades.RebutPAGADORChange(Sender: TField);
begin
        if Rebut.State in [dsEdit, dsInsert] then
        begin
                if RebutPAGADOR.Value ='F' then
                begin
                        if MessageDlg('Vols entrar despeses extres?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
                        begin
                                F_ExtresFCC:=TF_ExtresFCC.Create(Self);
                                F_ExtresFCC.ShowModal;
                                Extres_FCC.Close;
                                Extres_FCC.Open;
                                Contar_ID.Close;
                                Contar_ID.Open;
                                if Contar_ID.RecordCount = 0 then
                                begin
                                        Extres_FCC.Append;
                                end
                                else
                                begin
                                        Extres_FCC.Edit;
                                end;
                        end
                        else
                        begin
                                Extres_FCC.Close;
                                Extres_FCC.Open;
                                Contar_ID.Close;
                                Contar_ID.Open;
                                if Contar_ID.RecordCount = 0 then
                                begin
                                        Extres_FCC.Append;
                                        Extres_FCCALLOTJAMENT.Value:=0;
                                        Extres_FCCQUILOMETRES.Value:=0;
                                        Extres_FCCPEATGE.Value:=0;
                                        Extres_FCCMATERIAL.Value:=0;
                                        Extres_FCCVARIS.Value:=0;
                                        Extres_FCC.Post;
                                end;
                        end;
                end;
        end;
end;

Lo que hace este onchange esta correcto, pero no me muestra el mensaje hasta que hago post por eso mi duda, no se si debe ir en un before post de la tabla on exit del componente o algo más.

Gracias por adelantado

Saludos

Josep
Responder Con Cita