Ver Mensaje Individual
  #1  
Antiguo 23-07-2025
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 585
Reputación: 20
jafera Va por buen camino
Cambio del valor S N en un RadioButton

Buenas tardes.


Después de mucho tiempo sin entrar por estos lares, he retomado un poco la programación de una de mis aplicaciones para obtener una mejora en un cambio de valor de un campo mediante un DBRadioButton.


He probado el código en varios eventos, OnClick, OnExit en el OnChange del campo de la tablay el resultado no es el esperado.
El código es este:


Código Delphi [-]
procedure TF_Curses.DBRadioGroup4Exit(Sender: TObject);
begin
        F_ModulDades.CursesAux.Close;
        F_ModulDades.CursesAux.Open;
        F_ModulDades.CursesAux.Last;
        F_ModulDades.CursesAux.First;
        if F_ModulDades.CursesSUSPESA.Value='N' then
        begin
                if MessageDlg('Segur que vols marcar aquesta cursa com a suspesa?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
                begin
                        If ((F_ModulDades.CursesFEDERACIO.Value ='CATALANA') and (F_ModulDades.CursesPAGA.Value ='S')) or ((F_ModulDades.CursesFEDERACIO.Value ='NACIONAL') and (F_ModulDades.CursesPAGA.Value ='S')) then
                        begin
                                while Not F_ModulDades.CursesAux.Eof do
                                begin
                                        F_ModulDades.CursesAux.Edit;
                                        F_ModulDades.CursesAuxIMP_CANON.Value:=0;
                                        F_ModulDades.CursesAuxARBITRATGE.Value:=F_ModulDades.Imp_CanonSUSPESA.Value;
                                        F_ModulDades.CursesAuxQUILOMETRES.Value:=0;
                                        F_ModulDades.CursesAuxDIETA.Value:=0;
                                        F_ModulDades.CursesAux.Post;
                                        F_ModulDades.CursesAux.Next;
                                end;
                                F_ModulDades.CursesSUSPESA.Value:='S';
                        end;
                end
                else
                begin
                        F_ModulDades.CursesSUSPESA.Value:='N';
                end;
        end
        else
        begin
                if MessageDlg('Segur que vols marcar aquesta cursa com a no suspesa?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
                begin
                        If ((F_ModulDades.CursesFEDERACIO.Value ='CATALANA') and (F_ModulDades.CursesPAGA.Value ='S')) or ((F_ModulDades.CursesFEDERACIO.Value ='NACIONAL') and (F_ModulDades.CursesPAGA.Value ='S')) then
                        begin
                                while Not F_ModulDades.CursesAux.Eof do
                                begin
                                        F_ModulDades.CursesAux.Edit;
                                        if (F_ModulDades.CursesAuxFUNCIO.Value = 'Aspirant en pràctiques') or (F_ModulDades.CursesAuxFUNCIO.Value = 'Auxiliar Arbitral') then
                                        begin
                                                F_ModulDades.CursesAuxIMP_CANON.Value:=0;
                                                F_ModulDades.CursesAuxARBITRATGE.Value:=F_ModulDades.Imp_CanonAUXILIAR.Value;
                                                F_ModulDades.CursesAuxQUILOMETRES.Value:=0;
                                                F_ModulDades.CursesAuxDIETA.Value:=0;
                                        end                                             else
                                        if F_ModulDades.CursesAuxFUNCIO.Value = 'Informàtic/a' then
                                        begin
                                                F_ModulDades.CursesAuxARBITRATGE.Value:=F_ModulDades.Imp_CanonINFORMATIC.Value;
                                                F_ModulDades.CursesAuxQUILOMETRES.Value:=F_ModulDades.Imp_CanonQUILOMETRES.Value;
                                                F_ModulDades.CursesAuxDIETA.Value:=F_ModulDades.Imp_CanonDIETA.Value;
                                        end
                                        else
                                        begin
                                                F_ModulDades.CursesAuxARBITRATGE.Value:=F_ModulDades.Imp_CanonARBITRATGE.Value;
                                                F_ModulDades.CursesAuxQUILOMETRES.Value:=F_ModulDades.Imp_CanonQUILOMETRES.Value;
                                                F_ModulDades.CursesAuxDIETA.Value:=F_ModulDades.Imp_CanonDIETA.Value;
                                        end;
                                        F_ModulDades.CursesAux.Post;
                                        F_ModulDades.CursesAux.Next;
                                end;
                        end
                        else
                        begin
                                F_ModulDades.CursesAux.Edit;
                                F_ModulDades.CursesAuxIMP_CANON.Value:=0;
                                F_ModulDades.CursesAuxARBITRATGE.Value:=0;
                                F_ModulDades.CursesAuxQUILOMETRES.Value:=0;
                                F_ModulDades.CursesAuxDIETA.Value:=0;
                                F_ModulDades.CursesAux.Post;
                                F_ModulDades.CursesAux.Next;
                        end;
                        F_ModulDades.CursesSUSPESA.Value:='N';
                end
                else
                        F_ModulDades.CursesSUSPESA.Value:='S';
        end;
end;


Lo que quiero conseguir es que cambiando el valor de un DBRadioButton entre S o N, me pregunte si quiero hacerlo y en caso afirmativo pase el código, pero en caso negativo no pase el código.


Tanto en el OnClick como en el OnExit funciona bien pero no me cambia el valor S o N
En el Onchange del campo, entra en un bucle infinito.


Si alguien tiene una idea que me pueda iluminar, pues agradecido de antemano como siempre.


Saludos


Josep Antoni
Responder Con Cita