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