Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Limite de filas en un DBGrid (https://www.clubdelphi.com/foros/showthread.php?t=68303)

jafera 07-06-2010 11:18:21

Limite de filas en un DBGrid
 
Buenos dias a todos de nuevo.

Pues nada que tengo una duda en como realizar lo siguiente:

Tengo un form maestro detalle en el que la parte maestro son varios edit, combos, checks, etc. y el detalle es un JVDBGrid.

Lo que necesito saber es si puedo limitar el numero de filas del grid dependiendo del valor de uno de los edits del maestro, es decir si el valor del campo personas es 4 que solo me deje añadir 4 registros del detalle relacionado, o sea cuatro rows y que al intentar poner la quinta fila me diga "Mozo que te has pasado, solo pueden haber cuatro miembros". Evidentemente el mensaje es de broma, pero la utilidad debe ser esa.

Supongo que debo contar las filas a medida que las voy añadiendo y compararlas con el valor del edit, pero ¿en que evento lo hago?

Como siempre sigo con mi D6 y Firebird 1.5

Gracias por adelantado

guillotmarc 07-06-2010 11:34:31

Hola.

El mejor evento parece el BeforeInsert de tu Dataset. Compruebas el nº de registros que ya tienes, y si supera el máximo entonces cancelas la inserción mediante un Abort.

Seria algo así :

Código:

procedure MiDataset.AfterInsert(Dataset: TDataset);
begin
  if (MiDataset.RecordCount >= StrToInt(txtMaximo.Text)) then begin
    ShowMessage('Mozo que te has pasado, solo pueden haber ' + txtMaximo.Text + ' miembros');
    Abort;
  end;
end;

Saludos.

jafera 07-06-2010 11:50:06

Esto si es velocidad y no el Alonso.

Gracias, voy a probarlo.

Ah y otra duda en el mismo grid, si quiero cambiar el color del fondo de la fila según un valor S o N del mismo registro como se hace?

Repito gracias

Josep

jafera 07-06-2010 12:05:07

Gracias Marc, ha ido de perlas era justamente esto.

Yo me peleaba con los eventos del grid y tenia que ser en los de la tabla.

De nuevo gracias.

Josep

guillotmarc 07-06-2010 12:37:40

Hola Josep, me alegra de que te haya sido útil.

Cita:

Empezado por jafera (Mensaje 366393)
Esto si es velocidad y no el Alonso.

Gracias, voy a probarlo.

Ah y otra duda en el mismo grid, si quiero cambiar el color del fondo de la fila según un valor S o N del mismo registro como se hace?

Repito gracias

Josep

Respecto a cambiar el color de la Grid, lo siento pero no conozco estas Grids ni sus eventos.

Sería mejor que pusieras un nuevo mensaje (probablemente en el Foro general de Delphi), para ver si alguien te puede ayudar con ello.

Salutacions.

jafera 07-06-2010 13:35:34

Me respondo a mi mismo, el código ussado ha sido el siguiente, y funciona

Código Delphi [-]
 
procedure TF_Rebut.JvDBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
        If F_ModulDades.RebutAuxCAMPIONAT.Value = 'S' then
        begin
                JVDBGrid1.Canvas.Brush.Color := clRed;
                JVDBGrid1.DefaultDrawColumnCell(rect,DataCol,Column,State);
        end;
end;

Saludos

Josep


La franja horaria es GMT +2. Ahora son las 15:24:57.

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