Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Hacer zoom a un richedit (https://www.clubdelphi.com/foros/showthread.php?t=76702)

r_e_g_2007 19-11-2011 21:47:24

Hacer zoom a un richedit
 
Hola,

quisiera preguntar si existe alguna forma de poder hacer un zoom a un richedit, es decir poderlo ampliar usando el ctr y la ruedita como en los otros editores.

Un saludo a todos y muchas gracias por todo.

Casimiro Notevi 20-11-2011 01:40:41

Creo que alguna vez se ha hablado de un componente o una función para hacer un efecto "lupa", haz una búsqueda por los foros, a ver si lo encuentras.

Neftali [Germán.Estévez] 21-11-2011 11:11:53

Creo que tal y como dice Casimiro, puedes aplicar una especie de "lupa" al componente, pero si lo que quieres es que el documento funcione realmente con la opción de ZOOM, deberás buscar otro componente, pues el richedit standard no está pensado para eso.

beginner01 21-11-2011 16:17:18

Cita:

Empezado por r_e_g_2007 (Mensaje 418920)
Hola,

quisiera preguntar si existe alguna forma de poder hacer un zoom a un richedit, es decir poderlo ampliar usando el ctr y la ruedita como en los otros editores.

Un saludo a todos y muchas gracias por todo.


Hola.

En esta página encontré información acerca de hacer zoom a un Richedit normal, para hacerlo con la tecla Control + la "ruedita" hice lo siguiente.



Código Delphi [-]
// el evento OnKeyDown de el RichEdit  
procedure TForm1.RichEdit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key = VK_CONTROL then
   mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); 

end;

// el evento OnKeyUp de el RichEdit
procedure TForm1.RichEdit1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin

  if key = VK_CONTROL then
     mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);

end;

Neftali [Germán.Estévez] 21-11-2011 16:28:40

Cita:

Empezado por beginner01 (Mensaje 418973)
En esta página encontré información acerca de hacer zoom a un Richedit normal, para hacerlo con la tecla Control + la "ruedita" hice lo siguiente.

:(:(:(

Perdón, por la parte que me toca, porque acabo de enterarme de tal cosa y mi respuesta es errónea por completo. Es más, mi deducción también lo ha sido.
Tal y como indicas aquí funciona en el RichEdit normal. :eek::eek::eek:

Botón izquierdo + Rueda.

Casimiro Notevi 21-11-2011 16:44:01

Si no lo veo, no lo creo.
El richedit estandar lo hace, sin tener que programar nada :eek::eek::eek::eek::eek::eek::eek::eek::eek::eek:

ecfisa 21-11-2011 18:59:06

Creo que vamos a ser muchos los sorprendidos... :)

beginner01, gracias por participarnos la información.;)

Saludos.

ecfisa 21-11-2011 21:13:59

Gracias a beginner01 que me iluminó, quedé interesado en lograr el zoom desde otro control como un SpinEdit por ejemplo.
Buscando encontré estos mensajes:EM_SETZOOM y EM_GETZOOM

Esperando que tambíen sea de utilidad, esta fué la prueba:
Código Delphi [-]
...
const
  EM_GETZOOM = $04E0;
  EM_SETZOOM = $04E1;

function RichEditGetZoom(RE: TRichEdit): TPoint;
var
  P: TPoint;
begin
  RE.Perform(EM_GETZOOM, Integer(@P.X), Integer(@P.Y));
  Result := P;
end;

procedure RichEditSetZoom(RE: TRichEdit; P: TPoint);
begin
  RE.Perform(EM_SETZOOM, P.X, P.Y);
end;

procedure TForm1.spSetZoomChange(Sender: TObject);
var
  P: TPoint;
begin
  P.X := spSetZoom.Value;
  P.Y := 2;
  RichEditSetZoom(RichEdit1, P);
end;

procedure TForm1.btnGetZoomClick(Sender: TObject);
begin
  ShowMessage(Format('ZoomActual : %d / %d', [RichEditGetZoom(RichEdit1).X, RichEditGetZoom(RichEdit1).Y]));
end;
...

Un saludo.


La franja horaria es GMT +2. Ahora son las 10:41:35.

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