Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   SetFocus en una posicion determinada (campo de un DBGRID) (https://www.clubdelphi.com/foros/showthread.php?t=55135)

jandok238 09-04-2008 01:58:22

SetFocus en una posicion determinada (campo de un DBGRID)
 
Buenas tardes a todos...

Tengo una duda respecto al DBGrid...

La idea es esta: Tengo en un Form un DBGrid y un Boton.
El DBGrid esta ligado a una BD y ya tiene informacion ( 2 campos, [clave y descripcion] ).

Con el Boton (en el evento OnClick), lo que pretendo hacer es poner el foco en la fila 2 ( ó fila n ), colunma 2 (descripcion) pero que el cursor aparezca al final de lo que ya esta escrito, listo para seguir escribiendo al final...

Algo asi como poner el DBGrid en modo Edit ( bueno en si, se pone la TTable, no el DBGrid ) ...

Esto es lo que tengo :

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  DBGrid1.SelectedIndex := 2;  // el numero de la columna (campo descripcion)
  Table1.Edit;  // pongo en edicion la TABLA
  DBGrid1.SelectedField.FocusControl;  // mando el Focus al campo  Table1.RecNo := 2;  // fila a modificar (puede ser cualquiera)
end;

hasta aki, todo bien... el detalle es que me manda el foco a la segunda columna (lo que yo quiero) pero el texto que ya tiene me aparece seleccionado. Lo que yo quiero hacer es que ese texto no aparezca seleccionado, si no que el cursor este al final, para poder escribir inmediatamente....

Espero haberme explicado...

y si no.... encontre un hilo, que muestra algo que quiero, pero aplicado a un TEdit .... algo asi

Gracias.....

keyboy 09-04-2008 02:23:22

No es muy elegante lo que te propongo pero algo es algo:

Código Delphi [-]
type
  TExtDBGrid = class(TDBGrid);

procedure TForm1.Button1Click(Sender: TObject);
begin
  DBGrid1.SelectedIndex := 2;  // el numero de la columna (campo descripcion)
  Table1.Edit;  // pongo en edicion la TABLA
  DBGrid1.SelectedField.FocusControl;  // mando el Focus al campo  Table1.RecNo := 2;  // fila a modificar (puede ser cualquiera)

  if Assigned(TExtDBGrid(DBGrid1).InplaceEditor) then
    TExtDBGrid(DBGrid1).InplaceEditor.SelStart := 0;
end;

Bye

jandok238 09-04-2008 02:44:04

Muchas gracias keyboy

Si funciona.... :D:D ( es obvio, si no no lo hubieras puesto, verdad ?? ) :D

En fin... Muchas gracias....

Eso de

Cita:

Empezado por keyboy
No es muy elegante

supongo que hay mas formas.....

Me gustaria saber cuales son, algun otro miembro que pueda ayudar....

Aclarando, la solucion que puso keyboy funciona MUY bien ;);)

Gracias....

Salu2!!!!


La franja horaria es GMT +2. Ahora son las 00:27:59.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi