PDA

Ver la Versión Completa : Conseguir la posición gobal del cursor en la pantalla.


islu
26-02-2004, 17:14:46
Hola foro.

Mi duda es la siguiente, como puedo saber la posición del cursor en la pantalla ( no en el form ).

Mi idea es que al pulsar una tecla, aparezca junto a la celda actual de un grid, un pequeño form.

Muchas gracias.

roman
26-02-2004, 17:19:14
Usa el objeto global Mouse:

Mouse.CursorPos

// Saludos

islu
26-02-2004, 17:37:37
Muchas gracias, pero con eso consigo la posición del ratón, yo quiero saber la posición del cursor, ya que en el grid me muevo con el teclado.

Gracias de nuevo.

roman
26-02-2004, 18:01:03
¡Uy! Disculpa, leí mal.

Entonces podrías usar GetCaretPos para obtener la posición relativa a la ventana y luego usar ClientToScreen para convertir a coordenadas globales. Sin embargo la ventana donde está el caret (cursor) será la del cuadro de edición de la celda que está dado por la propiedad protegida InPaceEditor del grid. Puedes tratar de acceder a él usando el viejo truco:


type
THackGrid = class(TDBGrid);


y haciendo el "casting":


THackGrid(DBGrid1).InPlaceEditor


Claro que ya accediendo al InPlaceEditor-- que es un descendiente de TCustomMaskEdit) --puedes directamente encontar su posición y colocar tu formulario acordemente.

// Saludos

islu
01-03-2004, 12:49:37
Muchas gracias, pero ahora tengo un problema, InPlaceEditor me apunta a nil. Por qué puede ser?. Utilizo un TwwDBGrid.

Muchas gracias de nuevo.

roman
01-03-2004, 15:54:22
No conozco la componente que mencionas pero suponiendo que funciona de forma similar a otras el problema es que InPlaceEditor sólo estará asignado cuando estés editando una celda, no si sólo estás colocado en ella.

// Saludos

islu
08-03-2004, 13:17:28
Muchas gracias, Roman, perdona por la tardanza en agradecertelo, pero es que he estado fuera.

Gracias.

Oxa78
27-09-2005, 19:38:00
Saludos : Sobre la pregunta : ¿Como obtener la posición global en la pantalla de una celda selccionada?

Parece q no tengo la suficiente experiencia para obtener el resultado, no puedo obtener la posición...

Si alguien puede ayudarme seria genial

Mil gracias por adelantado

Oxa78
27-09-2005, 23:14:18
Este es el Link : http://cc.borland.com/Item.aspx?id=4

http://cc.borland.com/Item.aspx?id=4 (http://)

Yo utilizo los COmponentes wwDBGrid y tiene un evento : DBGrid1DrawDataCel
me imagino q es parecido al ColumnCell, la teoria es interesante, se obtnedra la posción del mouse al dibujar la celda activa


procedure TMainForm.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState);
begin
if gdFocused in State then begin
CurrentLeft := Rect.Left;
CurrentTop := Rect.Top;
end;
end;