Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-07-2003
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Poder: 22
andres1569 Va por buen camino
Para conseguir que al entrar en cada celda de un DBGrid lo haga en modo edición, como si pulsaras la tecla F2, aparte de activar dgEditing y dgAlwaysShowEditor en Options, hay que recurrir al método EditorMode de la clase TCustomGrid, que logra que aparezca el cursor parpadeando al final, pero éste es protected. Así que una forma de solucionarlo es declarar una clase que haga de intermediaria:
Código:
TMyGrid = class(TCustomGrid)
  public
    property EditorMode;
  end;
El método debe aplicarse cada vez que se cambia de celda. Un problema de los DBGrids es que aunque permiten detectar cuándo se ha cabiado de columna, no así de fila. Debe haber otras soluciones pero se me ocurre que puedes situar un TDataSource ligado al mismo DataSet (o usar el mismo DataSource que el DBGrid si se encuentra en el mismo Form) e interceptar cuándo se ha cambiado de registro. Éste sería el código:
Código:
// interceptamos el OnColEnter del DBGrid
procedure TForm1.DBGrid1ColEnter(Sender: TObject);
var
  AField : TField;
begin
  TMyGrid(DBGrid1).EditorMode := TRUE; 
  AField := DBGrid1.SelectedField;
  if (AField <> nil) AND (AField.FieldName = 'Poblacion') AND 
     (AField.IsNull) then
  begin
    AField.DataSet.Edit;
    AField.AsString := 'Ciudad Real';
  end;  
end;

// interceptamos el evento OnDataChange del DataSource
procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
begin
  if Field = nil then DBGrid1ColEnter(Sender);
end;
__________________
Guía de Estilo
Responder Con Cita
Respuesta



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 07:47:12.


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