Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   seleccionar una fila y bloquear el resto dbgrid (https://www.clubdelphi.com/foros/showthread.php?t=84642)

giocatore 15-11-2013 23:43:39

seleccionar una fila y bloquear el resto dbgrid
 
buenas tardes, quisiera me ayuden en mi duda que es la siguiente:

Quiero poder seleccionar una fila de un dbgrid y al momento de hacer clic en la celda toda la fila pueda ser editable y el resto de las filas queden como "read only" espero puedan ayudarme. Un saludo!

newtron 16-11-2013 09:35:25

Hola.

Imagino que sabrás que en el dbgrid es bastante engorroso controlar la edición: tipos de campo, longitud, validaciones, etc. No sé si lo que quieres es posible pero igual te interesaría más dejar el dbgrid en modo lectura y que cuando se pulse en la fila deseada se activara un panel con edits para poder editar los campos del mismo.

Saludos

Caminante 16-11-2013 16:13:35

Cita:

Empezado por giocatore (Mensaje 469659)
buenas tardes, quisiera me ayuden en mi duda que es la siguiente:

Quiero poder seleccionar una fila de un dbgrid y al momento de hacer clic en la celda toda la fila pueda ser editable y el resto de las filas queden como "read only" espero puedan ayudarme. Un saludo!

No le veo mucho sentido a esto. Sabras que al cambiar de fila el registro automaticamente seria grabado asi q de poco serviria un "readonly" a otras filas.
En ese caso mejor editar los registro en otro form como indica marteens en la cara oculta...

Saludos

giocatore 28-11-2013 02:09:41

Cita:

Empezado por Caminante (Mensaje 469667)
No le veo mucho sentido a esto. Sabras que al cambiar de fila el registro automaticamente seria grabado asi q de poco serviria un "readonly" a otras filas.
En ese caso mejor editar los registro en otro form como indica marteens en la cara oculta...

Saludos

Gracias por los consejos, pero como se imaginarán siempre queda la duda de como hacerlo y la verdad por más que no lo use me interesa mucho saber como resolver este problema. :)

ecfisa 28-11-2013 05:08:27

Cita:

Empezado por giocatore (Mensaje 470147)
Gracias por los consejos, pero como se imaginarán siempre queda la duda de como hacerlo y la verdad por más que no lo use me interesa mucho saber como resolver este problema. :)

Hola giocatore.

Un modo puede ser:
Código Delphi [-]
type
  TForm1 = class(TForm)
    ...
    DBGrid1: TDBGrid;
    bnGuardar: TButton; 
    procedure FormCreate(Sender: TObject);
    procedure DBGrid1CellClick(Column: TColumn);
    procedure bnGuardarClick(Sender: TObject);
  private
    FDisplacement: Boolean;
    procedure DataSetBeforeScroll(DataSet: TDataSet);
  public
  end;

...

implementation

procedure TForm1.DataSetBeforeScroll(DataSet: TDataSet);
begin
  if not FDisplacement then // ¿ Desplazamiento prohibido ?
    Abort; // Si, abortar
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
  FDisplacement := True; // permitir desplazamiento
  DBGrid1.DataSource.DataSet.BeforeScroll := DataSetBeforeScroll;
end;

procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
  FDisplacement := False; // prohibir desplazamiento
end;

// En algún punto del programa se debe permitir nuevamente el desplazamiento, por ejemplo:
procedure TForm1.bnGuardarClick(Sender: TObject);
begin
  with DBGrid1.DataSource.DataSet do
    if State = dsEdit then
      DBGrid1.DataSource.DataSet.Post;
  FDisplacement := True; // permitir desplazamiento
end;

Saludos :)


La franja horaria es GMT +2. Ahora son las 23:53:32.

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