Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Cursor en una celda dbgrid (https://www.clubdelphi.com/foros/showthread.php?t=95482)

ArtPortEsp 06-12-2021 17:50:19

Cursor en una celda dbgrid
 
Buen dia amigos;

espero se encuentren bien; estoy buscando alguna forma para que al editar el contenido de una celda en un dbgrid, el cursor de edición vaya hasta la posición inicial del texto y no se seleccione todo el contenido de la celda.

He estado buscando en la red, pero hasta el momento no he tenido suerte; alguno de uds. lo ha hecho o conoce algún lugar en donde pueda buscar?

Gracias de antemano.

Casimiro Notevi 06-12-2021 19:18:54

¿Esto no te sirvió?

ArtPortEsp 06-12-2021 20:15:07

trate de ponerlo en diferentes eventos: Oncellclick; BeforePost, etc. y no, no pude lograrlo con ese código, hace lo mismo, al editar una celda selecciona todo el contenido y el cursor se sitúa al final

Casimiro Notevi 06-12-2021 20:47:56

He hecho una sencilla prueba y funciona bien poniendo el código en el "CellClick" del dbgrid:
Código Delphi [-]
DBGrid1.EditorMode:= True;
DBGrid1.Perform(EM_SCROLLCARET, 0, 0);

ecfisa 06-12-2021 20:54:10

Hola.

Intenta también con lo siguiente en el evento OnCellClick:
Código Delphi [-]
type
  TDBGridEx = class(TDbGrid);

procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
  DBGrid1.EditorMode := True;
  TDBGridEx(DBGrid1).InplaceEditor.SelStart := 0;
  TDBGridEx(DBGrid1).InplaceEditor.SelLength := 0;
end;

Salida:


Saludos :)

ArtPortEsp 06-12-2021 21:23:41

Cita:

Empezado por Casimiro Notevi (Mensaje 544339)
He hecho una sencilla prueba y funciona bien poniendo el código en el "CellClick" del dbgrid:
Código Delphi [-]
DBGrid1.EditorMode:= True;
DBGrid1.Perform(EM_SCROLLCARET, 0, 0);

Es correcto, si quita la selección, pero sigue dejando el cursor al final del texto

ArtPortEsp 06-12-2021 21:26:02

Cita:

Empezado por ecfisa (Mensaje 544340)
Hola.

Intenta también con lo siguiente en el evento OnCellClick:
[delphi]

type
TDBGridEx = class(TDbGrid);

Tengo problemas con esta linea, mi Grid se llama GridIncisos y esta declarado asi:

Gridincisos: TCRDBGrid;

ecfisa 06-12-2021 21:30:13

Cita:

Empezado por ArtPortEsp (Mensaje 544342)
Tengo problemas con esta linea, mi Grid se llama GridIncisos y esta declarado asi:

Gridincisos: TCRDBGrid;

Hola.

¿ La clase del grid no es TDBGrid ?

Saludos :)

Edito: veo que es un componente de Devart...

ArtPortEsp 06-12-2021 21:33:42

No es de devart, es un componente algo viejo, el desarrollo esta en Delphi 7.

ecfisa 06-12-2021 21:33:58

Hola de nuevo.

No siendo un componente estandar no sé si funcione, pero por las dudas, intenta:
Código Delphi [-]
type
  TDBGridEx = class(TCRDBGrid);
...

Saludos :)

ArtPortEsp 06-12-2021 21:53:26

Vale, intente algo semejante, pero creo que estoy poniendo esas líneas en donde no es.

Si pongo la declaración : TDBGridEx = class(TCRDBGrid); en la sección Type de la unidad, el compilador me regresa un error por el signo "="

Si cambio el signo "=" por ":" el mensaje que me sale es sobre si quiero quitar la declaración por que no hay un componente asociado a ella.

Si la pongo en el evento :

Código:

procedure TFcappol.GridincisosCellClick(Column: TColumn);
type  xgrid = class(TCRDBGRid);
begin
    Gridincisos.EditorMode := True;

Me manda un error que dice : Local class : interface or object types not allowed

EDITO : finalmente pude pensar con claridad atraves de este maldito virus que me trae mal, ya funciono!, muchas, pero de verdad muchas gracias!

ecfisa 06-12-2021 22:11:25

Hola.

No sé que solución encontraste pero otra opción que probé con TDBGrid y funciona ante el evento OnCellClick es:
Código Delphi [-]
procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
  DBGrid1.EditorMode:= True;
  keybd_event(VK_HOME, 0, 0, 0);
  keybd_event(VK_HOME, 0, KEYEVENTF_KEYUP, 0);
end;

Saludos :)


La franja horaria es GMT +2. Ahora son las 03:21:37.

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