Ver Mensaje Individual
  #1  
Antiguo 20-11-2011
Choclito Choclito is offline
Miembro
 
Registrado: jul 2004
Posts: 169
Reputación: 20
Choclito Va por buen camino
Secuencia al pintar un dbgrid

Buenos dias amigos del foro
Mi problema es el siguiente:
Antes trabajo con Firebird y delphi 7,Tengo un dbgrid asociado a un query y con lo ayuda de amigos del foro pude hacer que teniendo un edit registre un valor del query y que luego de registrar,busque en el query que registro tiene ese valor y lo pinte y emita sonido por un tiempo determinado
Para que me entiendan mejor les doy un ejemploi
tengo un dbgrid con los siguientes datos
Oficina Codigo
Administracion ADM
Fichaje FIC
Contabilidad CON
Almacenes ALM


entonces por medio de un edit registro FIC y la segunda fila parpadea y emite sonido por un tiempo determinado
el codigo es:

Código Delphi [-]
procedure TF_Principal.Button2Click(Sender: TObject);
var i:integer;
begin
     P:=0;
     M:=0;
      FValor:= Trim(Edit1.Text);
  modulo_db.mdoq_listado.Locate('Codigo', Edit1.Text, []);
    TimerBlink.Enabled:=TRUE;
  TimerSound.Enabled:=TRUE;
end;
en el dbgrid es:
Código Delphi [-]
procedure TF_Principal.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
 {if mdoq_listado.FieldByName('Codigo').AsString = Val then
    DBGrid1.Canvas.Brush.Color:= clLime;  // el color de tu gusto
  DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
  }
  const
  CBLNK: array[0..1] of TColor = (clLime, clWhite);
begin
  if modulo_db.mdoq_listado.FieldByName('Codigo').AsString = FValor then
  BEGIN
    DBGrid1.Canvas.Brush.Color:= CBLNK[Integer(FBlink)];
    DBGRID1.Canvas.Font.Color:=CLBLACK;
    END;
  DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);

  end;
y los timer son:
Código Delphi [-]
procedure TF_Principal.TimerBlinkTimer(Sender: TObject);
begin
  p:=p+1;
  FBlink:= not FBlink;
  DBgrid1.Invalidate;
  //p:=p+1;
  if p=50  then
TimerBlink.Enabled:=FALSE;
end;

Código Delphi [-]
procedure TF_Principal.TimerSoundTimer(Sender: TObject);
VAR I:INTEGER;
begin
 M:=M+1;
 IF M MOD 5 =0 THEN
  MessageBeep(MB_OK);
   if M=20  then
TimerSound.Enabled:=FALSE;
end;

El problema que tengo es que si registro CON me parpadea y emite sonido todo bien , pero si instantes luego registro en el edit ADM me emite la fila donde esta ADM y lo anterior que estaba parpadeando en el registro CON ya no parpadea,
Como puedo hacer para que se vaya parpadeando segun vaya registrando los datos en el edit ????
asi como si entraria a una cola de datos y en funcion a lo que vaya registrando vaya parpadeando los registros y no como lo tengo ahora que solo un registro parpadea y emite sonido
Se que talves es sencillo pero la verdad nose por donde empezar , estare muy agradecido por su ayuda amigos del foro
Responder Con Cita