Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Botón derecho del mouse (https://www.clubdelphi.com/foros/showthread.php?t=88831)

joseprad 08-08-2015 19:24:51

Botón derecho del mouse
 
Hola amigos:

Sigo con mi componente RichEdit con corrector ortográfico que tengo bastante adelantado.

Necesitaría vuestra ayuda para que, al abrir un popup con el botón derecho del mouse, el cursor se me posicionara sobre la palabra, para poder identificarla i corregirla, al estilo de un tratamiento de texto.

Muchas gracias de antemano y un saludo a todos.

AgustinOrtu 08-08-2015 21:21:54

Creo que lo que pides no es posible, he intendado interceptar el evento OnPopup del TPopupMenu, realizando el popup a meno, pero siempre el menu desplegable me queda debajo del cursor del mouse

Para mover el cursor simplemente use SetCursorPos

En fin creo que a nivel de experiencia de usuario podria ser "molesto"

Revisa la propiedad TMenuItem.Default, al ponerla a True, se colorea en negrita, quiza eso te sirva

joseprad 09-08-2015 10:12:15

Creo que no me he explicado bien.

Lo que yo deseo es posicionar el cursor sobre una palabra con el botón derecho del mouse, lo mismo que puedo hacer con el botón izquierdo pero con el derecho, así puedo identificar la la palabra a corregir y el popup me carga las sugerencias.

Vamos lo mismo que ocurre cuando escribimos en el foro y hay queremos corregir una palabra.

AgustinOrtu 09-08-2015 15:22:50

Te referis a hacerle doble click a la palabra y que quede seleccionada en azul?

Proba con las propiedades SelStart, SelCount

joseprad 09-08-2015 19:02:09

Cuando decía cursor debía decir caret.

Para poder identificar una palabra en un RichEdit desearía desplazar el caret sobre la palabra que he hecho clic con el botón derecho del ratón. De esta manera identifico la palabra y puedo abrir un popup con las sugerencias correctas de la palabra.

joseprad 14-08-2015 16:40:39

Después de mucho buscar salió la solución.

Situar el caret de un RichEdit en la posición del cursor del mouse al hacer click con el buton derecho.
Código Delphi [-]
procedure TJrRichEditDic.MouseDown(sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  len: Integer;
  p: Integer;
  pt: TPoint;
begin
  pt := Point(X, Y);
  case Button of
    mbLeft: begin
      end;
    mbRight: begin
        if Length(Text) <> 0 then begin
          len := SendMessage(Handle, WM_GETTEXTLENGTH, 0, 0);
          p := Perform(Messages.EM_CHARFROMPOS, 0, Integer(@pt));
          SendMessage(Handle, EM_SETSEL, p, p);
        end;
      end;
  end;
end;


La franja horaria es GMT +2. Ahora son las 18:38:47.

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