Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   DBGrid recorrer (https://www.clubdelphi.com/foros/showthread.php?t=72464)

JXJ 21-02-2011 01:06:33

DBGrid recorrer
 
Hola

tengo un problema
tengo un dbgrid al que le quiero poner checkbox para los campos booleanos
de que este checado y no si es true o false.
no se como hacer para que aparescan los checkbox

ahora que me acuerdo firebird no tiene campos bool
sino que lo tengo que implementas con un campo char o de tipo integer.
con 1 para no si existe informacion adicional y 2 para si existe

relacionado a esto. como puedo recorrer
las filas y localizar la columna con el checbox.
y saber si esta checado o no. segun su valor.
hacer un query .

esto por que tengo que hacer un dbgrid con articulos, que se van a editar
usadno el dbgrid.

con botones para seleccionar todos.
deseleccionar todos.
y si hay seleccionados. estos van a tener informacion extra.

alguna idea??

ecfisa 21-02-2011 05:01:48

Hola JXJ.

Para poner un CheckBox en un DBgrid: CheckBox inside a DBGrid.


Si es un TDBCheckBox, se adaptan los valores Boolean de las propiedades ValueChecked y ValueUnChecked al tipo declarado en la tabla.

Por ejemplo si considero el valor 0 como False y 1 como True, sería:
Código Delphi [-]
  ValueChecked:= 1;
  ValueUnChecked:= 0;
También podes ajustar los valores desde el Object inspector.

Si se tratara de un TCheckBox, en el evento OnExit revisaría la propiedad Checked y de acuerdo a su valor actualizaría el campo involucrado.
Para actualizar el CheckBox usaría el evento OnScroll del DataSet.
Algo como:
Código Delphi [-]
procedure TForm1.CheckBox1Exit(Sender: TObject);
begin
  IBDataSet1.Edit;
  if CheckBox1.Checked then
    IBDataSet1.FieldByName('CAMPO').AsInteger:= 1
  else if not CheckBox1.Checked then
    IBDataSet1.FieldByName('CAMPO').AsInteger:= 0;
end;

procedure TForm1.IBDataSet1AfterScroll(DataSet: TDataSet);
begin
  CheckBox1.Checked:= IBDataSet1.FieldByName('CAMPO').AsInteger = 1;
end;


Un saludo.

JXJ 21-02-2011 06:05:19

gracuas

ecfisa

voy a revisarlo.

por que en el dbgrid va a mostrarse articulos
y estos deben de seleccionarse con el checbox
y de forma automatica
todos. o ninguno

con botones por eso me interesa tambien
poder recorrer el dbgrid en la columna de los checjbox

para seleccionaros todos o ninguno

y de los que esten seleccionados.
recorer el dbgrid y segun su id dentro de la tabla
agregarles informacion.

esta bien enredado. pero el resultado se ve muy sencillo


La franja horaria es GMT +2. Ahora son las 22:32:17.

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