Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   Desplazar Grafico en un ScrollBox (https://www.clubdelphi.com/foros/showthread.php?t=45994)

wpendry 20-07-2007 00:30:13

Desplazar Grafico en un ScrollBox
 
Hola amigos, :)
Estoy haciendo un programa de graficos grandes en Delphi 6, donde tengo un ScrollBox y dentro un PaintBox
Asimismo inicializo con

ScrollBox1.HorzScrollBar.Range := 10000;
ScrollBox1.VertScrollBar.Range := 10000;
PaintBox1.Align := alClient;

Por otra parte he hecho el procedimiento:

procedure TForm1.MoverXY(x, y: integer);
//Ubica el punto x, y en la posición del Mouse
var
p: TPoint;
begin
GetCursorPos(p);
p:= ScrollBox1.ScreenToClient(p);
ScrollBox1.HorzScrollBar.Position := x - p.X;
ScrollBox1.VertScrollBar.Position := y - p.Y;
end;

Este procedimiento lo utilizo para mover el grafico con el mouse,
trabaja muy bien, pero tiene un defecto que grafica dos veces, primero desplaza horizontalmente el grafico y luego verticalmente, lo cual ocasiona en maquinas lentas un efecto de salto.

La pregunta es ¿Existe alguna instruccion para que ambas barras se muevan al mismo tiempo? :confused:
Gracias por sus comentarios...

delphi.com.ar 20-07-2007 00:35:50

Cita:

Empezado por wpendry
La pregunta es ¿Existe alguna instruccion para que ambas barras se muevan al mismo tiempo? :confused:

Antes de buscar una instrucción similar, yo probaría "lockear" el refresco de la imagen durante el procedimiento de scroll, utilizando la función LockWindowUpdate.

Saludos!

wpendry 20-07-2007 01:01:00

Desplazamiento Corregido
 
He corregido el procedimiento a:

procedure TForm1.MoverXY(x, y: integer);
//Ubica el punto (x, y) del grafico en la posición del Mouse
var
p: TPoint;
begin
GetCursorPos(p);
p:= ScrollBox1.ScreenToClient(p);
LockWindowUpdate(ScrollBox1.Handle);
ScrollBox1.HorzScrollBar.Position := x - p.X;
ScrollBox1.VertScrollBar.Position := y - p.Y;
LockWindowUpdate(0);
end;

Ahora ya funciona perfectamente,
Gracias:)
Saludos!!


La franja horaria es GMT +2. Ahora son las 06:40:48.

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