Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-01-2006
ronalg ronalg is offline
Miembro
 
Registrado: may 2003
Ubicación: Sucre - Bolivia
Posts: 68
Poder: 21
ronalg Va por buen camino
Problemas DBGrid

Resulta que tengo un programa donde hay una grilla de Items de un pedido, de cada fila solo se puede modificar las columnas de tarifa(precio venta) y porcentage de descuento, no uso el boton de los navegadores, sino botones normales, hay una relacion maestro detalle con la tabla clientes, el problema es al editar alguna linea de pedido, hago clic en mi boton editar que tiene el siguiente codigo:
Código Delphi [-]
procedure TW_TARIFARIOS.bbt_editar_tarClick(Sender: TObject);
begin
     ds_detail.DataSet.Edit;
     dbg_detail.SetFocus;
     dbg_detail.SelectedIndex:=8;
     .
     .
     .
     /*mediante un procedure activo y desactivo los botones involucrados*/
     /*aqui esta parte del codigo*/
     bbt_aceptar_tar.Enabled:=true;
     bbt_cancelar_tar.Enabled:=true;
     bbt_editar_tar.Enabled:=false;
     .
     .
     .
end;

El problema es que si hago click en otro registro de la grilla o preciono la flecha hacia abajo o arriba, automáticamente la grilla hace un post pero nunca se llama a este codigo

Código Delphi [-]
procedure TW_TARIFARIOS.bbt_aceptar_tarClick(Sender: TObject);
begin
//
     ds_detail.DataSet.Post;
     .
     .
     .
     /*mediante un procedure activo y desactivo los botones involucrados*/
     /*aqui esta parte del codigo*/
     bbt_aceptar_tar.Enabled:=false;
     bbt_cancelar_tar.Enabled:=false;
     bbt_editar_tar.Enabled:=true;
     .
     .
     .
end;

procedure TW_TARIFARIOS.bbt_cancelar_tarClick(Sender: TObject);
begin
//
     ds_detail.DataSet.Cancel;
     .
     .
     .
     bbt_aceptar_tar.Enabled:=false;
     bbt_cancelar_tar.Enabled:=false;
     bbt_editar_tar.Enabled:=true;
     .
     .
     .
end;

Pregunta:

¿Como puedo hacer que la grilla no se mueva del registro actual si este esta en modo de edicion o inserción?

Gracias por su ayuda.
__________________
Saludos desde Sucre - Bolivia
"Si te lo puedes imaginar lo
puedes resolver" Pyriel
Responder Con Cita
  #2  
Antiguo 09-01-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por ronalg
¿Como puedo hacer que la grilla no se mueva del registro actual si este esta en modo de edicion o inserción?
Quizá podrías valerte del evento BeforeScroll del DataSet aunque no estoy muy seguro de que puedes evitar el desplazamiento.

Por otra parte quizá te convenga más valerte de los eventos AfterInsert, AfterEdit y AfterPost para actualizar los botones.

O, mejor aún, utilizar un ActionList. En él programas las acciones correspondientes a cosas como Edición y Guardado y asignas estas acciones a los botones correspondientes (ya no codificas directamente en el OnClick de los botones). En el evento OnUpdate del ActionList examinas la propiedad State del DataSet y habilitas o inhabilitas los botones según el caso.

// Saludos
Responder Con Cita
  #3  
Antiguo 10-01-2006
ronalg ronalg is offline
Miembro
 
Registrado: may 2003
Ubicación: Sucre - Bolivia
Posts: 68
Poder: 21
ronalg Va por buen camino
Exactamente lo que hice

gracias por la respuesta, fue exactamente lo que hice, pero ahora si me las veo negras, si estoy al final de la grilla y al ususario se le ocurre apretar flecha de cursos hacia abajo, se inserta automáticamente un nuevo registro y no quiero que eso suceda, porque los items de la venta son insertados automáticamente y son finitos (siempre 10) no puede haber mas.

Si supieras como evitar esto agradecería que me dieras una mano.

gracias
__________________
Saludos desde Sucre - Bolivia
"Si te lo puedes imaginar lo
puedes resolver" Pyriel
Responder Con Cita
  #4  
Antiguo 10-01-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Podrías usar el evento BeforeInsert:

Código Delphi [-]
procedure TForm1.Table1BeforeInsert(DataSet: TDataSet);
begin
  if DataSet.RecordCount >= 10 then
    abort;
end;

// Saludos
Responder Con Cita
  #5  
Antiguo 10-01-2006
ronalg ronalg is offline
Miembro
 
Registrado: may 2003
Ubicación: Sucre - Bolivia
Posts: 68
Poder: 21
ronalg Va por buen camino
gracias lo probe y....

Me da un ligero parpadeo pero lo solucien con disablecontrols y enablecontrols
gracias
__________________
Saludos desde Sucre - Bolivia
"Si te lo puedes imaginar lo
puedes resolver" Pyriel
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 10:13:16.


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
Copyright 1996-2007 Club Delphi