Ver Mensaje Individual
  #9  
Antiguo 12-07-2017
Tecnofacil Tecnofacil is offline
Miembro
 
Registrado: jun 2015
Posts: 50
Reputación: 9
Tecnofacil Va por buen camino
Les dejo el código a ver si pueden detectar algun error que se me pase. Cada columna tiene un checkbox, si le doy clic a la segunda columna verifica si la primera no esta tildad me impide tildar la segunda, el problema es que luego al intentar tildar la primera me sigue mostrando el mensaje y al depurar veo que me sigue tomando como si el clic se hizo en la segunda columna. (Hago clic en 'auto' y me dice que se hizo clic en 'armado'

Código Delphi [-]
procedure TF_Pedidosproceso.DBGrid1CellClick(Column: TColumn);
begin
  fdq_maestro.Edit;
    if Column.FieldName='auto' then      // Si le doy clic al check que se encuentra en la columna 'Autorizado'
      begin
        if fdq_maestroauto.value = 1 then //Si esta tildado pregunto
          begin
            if Application.MessageBox('El pedido aún no esta autorizado, Confirma?','Atención',MB_YESNO)=id_yes then
              begin
                fdq_maestroauto.value := 0;    // si responde 'Si' destildo
                fdq_maestro.Post;    //Grabo
                Dbgrid1.Repaint;
              end;
            end
          else    //Si no esta tildado pregunto
            begin
              if Application.MessageBox('El pedido ya esta autorizado o no requiere CAI, Confirma?','Atención',MB_YESNO)=id_yes then
                begin
                  fdq_maestroauto.value := 1; //Si responde si Tildo
                  fdq_maestro.Post;
                  Dbgrid1.Repaint;
                end;
            end;
        end;

      if Column.FieldName='armado' then
        begin
          if fdq_maestroarmado.value = 1 then
            begin
              if Application.MessageBox('El pedido aún no esta armado, Confirma?','Atención',MB_YESNO)=id_yes then
                begin
                  fdq_maestroarmado.value := 0;
                  fdq_maestro.Post;
                  Dbgrid1.Repaint;
                end;
            end
          else
            begin
              if fdq_maestroauto.Value = 1 then // verifico si el campo anterior esta tildado
                begin
                  if Application.MessageBox('El pedido ya esta armado, Confirma?','Atención',MB_YESNO)=id_yes then
                    begin
                      fdq_maestroarmado.value := 1;
                      fdq_maestro.Post;
                      Dbgrid1.Repaint;
                    end;
                end
                else
                begin
                  MessageBox(0, 'El pedido figura como "No autorizado"', 'ATENCIÓN', MB_ICONWARNING or MB_OK);
                  close;
                end;
            end;
          end;

        if Column.FieldName='original' then
          begin
            if fdq_maestrooriginal.value = 1 then
              begin
                if Application.MessageBox('Original aún no esta listo, Confirma?','Atención',MB_YESNO)=id_yes then
                  begin
                    fdq_maestrooriginal.value := 0;
                    fdq_maestro.Post;
                    Dbgrid1.Repaint;
                  end;
              end
              else
              begin
               if Application.MessageBox('Original listo, Confirma?','Atención',MB_YESNO)=id_yes then
                 begin
                   fdq_maestrooriginal.value := 1;
                   fdq_maestro.Post;
                   Dbgrid1.Repaint;
                 end;
              end;
          end;

        if Column.FieldName='chapa' then
          begin
            if fdq_maestrochapa.value = 1 then
              begin
                if Application.MessageBox('Chapa aún no esta lista, Confirma?','Atención',MB_YESNO)=id_yes then
                  begin
                    fdq_maestrochapa.value := 0;
                    fdq_maestro.Post;
                    Dbgrid1.Repaint;
                  end;
              end
              else
              begin
                if Application.MessageBox('Chapa lista, Confirma?','Atención',MB_YESNO)=id_yes then
                  begin
                    fdq_maestrochapa.value := 1;
                    fdq_maestro.Post;
                    Dbgrid1.Repaint;
                  end;
              end;
          end;
        if Column.FieldName='impreso' then
        begin
          if fdq_maestroimpreso.value = 1 then
            begin
              if Application.MessageBox('El pedido aún no esta Impreso, Confirma?','Atención',MB_YESNO)=id_yes then
                begin
                  fdq_maestroimpreso.value := 0;
                  fdq_maestro.Post;
                  Dbgrid1.Repaint;
                end;
            end
          else
            begin
              if Application.MessageBox('Pedido listo, Confirma?','Atención',MB_YESNO)=id_yes then
                begin
                  fdq_maestroimpreso.value := 1;
                  fdq_maestro.Post;
                  Dbgrid1.Repaint;
                end;
            end;
        end;
        if Column.FieldName='armado2' then
        begin
          if fdq_maestroarmado2.value = 1 then
            begin
              if Application.MessageBox('El pedido aún no fue armado, Confirma?','Atención',MB_YESNO)=id_yes then
                begin
                  fdq_maestroarmado2.value := 0;
                  fdq_maestro.Post;
                  Dbgrid1.Repaint;
                end;
            end
          else
            begin
              if Application.MessageBox('Armado final listo, Confirma?','Atención',MB_YESNO)=id_yes then
                begin
                  fdq_maestroarmado2.value := 1;
                  fdq_maestro.Post;
                  Dbgrid1.Repaint;
                end;
            end;
        end;
  end;
Por lo pronto lo que hago es cerrar el form y forzar la liberación de esas variables
Responder Con Cita