Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Checkear al menos un DBCombobox (https://www.clubdelphi.com/foros/showthread.php?t=76828)

Lenny 29-11-2011 22:07:59

Checkear al menos un DBCombobox
 
Muy buenas trades y muchas gracias de antemano...

Hace poco pregunte por pedir seleccionar un RadioButton, ahora tengo 12 DBCombox uno por cada mes y necesito al momento de guardar verificar que al menos el usuario seleccione 1 de estos, independiente si los selecciona todos, me pueden ayudar??? muchas gracias de antemano...

PD: Utilizo Delphi 2010, Zeos 7.0.0, MySQL...

ecfisa 29-11-2011 23:18:13

Cita:

tengo 12 DBCombox uno por cada mes y necesito al momento de guardar verificar que al menos el usuario seleccione 1 de estos, independiente si los selecciona todos
Hola Lenny.

Una manera puede ser aprovechar el evento OnChange de los TDBComboBox, por ejemplo:
Código Delphi [-]
  ...
  private
    FModifico: Boolean; // True si modifica algún combo
  end;
...

implementation

procedure TForm1.FormCreate(Sender: TObject);
begin
  ...
  FModifico:= False; // Sin modificar
end;

procedure TForm1.DBComboBoxChange(Sender: TObject);
begin
  FModifico:= True;  // Modifico un combo
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if not FModifico then
    ShowMessage('Debe seleccionar al menos un valor');
end;
Tenés que asignar el método DBComboBoxChange a todos los TDBComboBox que te interese evaluar. Si se trata de algún módulo en el que haces ingresos o modificaciones repetitivas deberás poner FModifico:= False al iniciar cada nueva acción.

Saludos.

thecidmx 29-11-2011 23:32:23

tienes 12 combobox o 12 checkbox???

sitenes 12 combobox, uno por mes, no entiendo x q lo tienes haci, ya q el combobox tiene la propiedad value, y al ser dbcombobox, tengo entendido que es de una base de datos, y la opcion q tienes que hacer es que el combo box contenga algun valor q tu decidas

si me disiparas la duda te mandaria mejor la respuesta.

Gracias.
----------------------------------------
Lamejor forma de aprender es comprtir tu conocimiento :P

Lenny 29-11-2011 23:35:07

Estimado, me acabo de dar cuenta que cometi un eror garrafal, no son DBComboBox, son DBCheckBox, mil perdones... lo que dices si funcionaria con DBCombobox, pero los DBCheckBox no traen la opcion "OnChange, mil perdones nuevamente y espero puedas ayduarme nuevamente, corrijo de inmediato el POST ORIGINAL...

look 29-11-2011 23:41:19

Cita:

Empezado por Lenny (Mensaje 419908)
Estimado, me acabo de dar cuenta que cometi un eror garrafal, no son DBComboBox, son DBCheckBox, mil perdones... lo que dices si funcionaria con DBCombobox, pero los DBCheckBox no traen la opcion "OnChange, mil perdones nuevamente y espero puedas ayduarme nuevamente, corrijo de inmediato el POST ORIGINAL...

Código Delphi [-]
var b:boolean;

      for i := 0 to (Self.ComponentCount - 1) do
      begin
        if Self.Components[i] is TDBChecBox then
        begin
         if  TDBChecBox(Self.Components[i]).Checked then b := true;
        end;
      end;
    if b then showmesage('Algo');

look 29-11-2011 23:49:41

Cita:

Empezado por ecfisa (Mensaje 419912)
Hola de nuevo.

Entonces podrías hacer:
Código Delphi [-]
function TForm1.HasDBCheckBoxChecked: Boolean;
var
  i: Integer;
begin
  Result:= False;
  for i:= 0 to ComponentCount - 1 do
    if (Components[i].ClassName = 'TDBCheckBox') and
       (Components[i] as TDBCheckBox).Checked then
     Result:= True;
end;

Ejemplo de llamada:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  if not HasDBCheckBoxChecked then
    ShowMessage('Al menos uno debe estar seleccionado');
end;

Saludos.

lo que yo dije pero en nivel 2 :D

ecfisa 29-11-2011 23:56:20

Hola de nuevo.

Entonces podrías hacer:
Código Delphi [-]
function TForm1.HasDBCheckBoxChecked: Boolean;
var
  i: Integer;
begin
  Result:= False;
  for i:= 0 to ComponentCount - 1 do
    if (Components[i].ClassName = 'TDBCheckBox') and
       (Components[i] as TDBCheckBox).Checked then
     Result:= True;
end;

Ejemplo de llamada:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  if not HasDBCheckBoxChecked then
    ShowMessage('Al menos uno debe estar seleccionado');
end;

Saludos.

ecfisa 30-11-2011 00:00:38

Cita:

Empezado por look (Mensaje 419913)
lo que yo dije pero en nivel 2 :D

Ningún nivel 2, es lo mismo ;)

En realidad volví a poner el mensaje, que borré por error, por que fuiste más rapido y hubiera quedado descolgada tu referencia. Pero no tenía sentido ya que tu respuesta ya solucionaba el problema perfectamente...

Un saludo. :)

Lenny 30-11-2011 01:58:00

Mil disculpas... me lanza este error:

"[Error] ObjetivosCalidadIngreso_.pas(71): E2003 Undeclared identifier: 'Result'"

Solo eso, gracias...

Lenny 30-11-2011 02:46:35

Cita:

Empezado por Lenny (Mensaje 419923)
Mil disculpas... me lanza este error:

"[Error] ObjetivosCalidadIngreso_.pas(71): E2003 Undeclared identifier: 'Result'"

Solo eso, gracias...

Sorry, me falto agregar "Registry" en el uses, muchas gracias...


La franja horaria es GMT +2. Ahora son las 08:25:02.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi