Barra de Rolagem (ScrollBars)
Olá pessoal !
Alguém pode me dar uma ajudinha ?
Tenho um Form com um RichEdit, nesse RichEdit eu tenho uma barra de rolagem vertical, eu gostaria de quando clicar na barra de Rolagem ela rolasse bem suave sem dar aqueles saltos.
Igual tem naquelas telinhas de Sobre de alguns sistemas, o texto vai descendo ou subindo bem suave.
Dessa forma fica melhor para lê.
Obrigada.
[]´s
Alguém pode me dar uma ajudinha ?
Tenho um Form com um RichEdit, nesse RichEdit eu tenho uma barra de rolagem vertical, eu gostaria de quando clicar na barra de Rolagem ela rolasse bem suave sem dar aqueles saltos.
Igual tem naquelas telinhas de Sobre de alguns sistemas, o texto vai descendo ou subindo bem suave.
Dessa forma fica melhor para lê.
Obrigada.
[]´s
Renatacoimbra
Curtidas 0
Respostas
Renatacoimbra
07/01/2006
Ajuda aí gente !
...
...
GOSTEI 0
Ipc$
07/01/2006
Uma forma de fazer isto seria vc sobrescrever a WindowProc do RichEdit e nela, quando a msg for WM_VScroll, vc desliza o texto via código.
Quando a msg não for WM_VScroll, vc executa a WindowProc original; para isto vc tem que salvar a WindowProc antes de colocar a sua.
Quando a msg não for WM_VScroll, vc executa a WindowProc original; para isto vc tem que salvar a WindowProc antes de colocar a sua.
GOSTEI 0
Renatacoimbra
07/01/2006
Alguém sabe pelo menos de algum componente q faz isso?
...
...
GOSTEI 0
Renatacoimbra
07/01/2006
Uma forma de fazer isto seria vc sobrescrever a WindowProc do RichEdit e nela, quando a msg for WM_VScroll, vc desliza o texto via código.
Quando a msg não for WM_VScroll, vc executa a WindowProc original; para isto vc tem que salvar a WindowProc antes de colocar a sua.
IPC$, obrigada pela resposta, mais não sei como fazer isso, se não for pedir muito vc poderia me ajudar nessa implementação?
[]´s
GOSTEI 0
Ipc$
07/01/2006
Posso ajudar em definir a WindowProc:
Com isto o click na barra de rolagem vertical fica sem ação; aí vc tem que colocar o deslize de texto via código.
var WP_Sv :TWndMethod; // para salvar procedure Scrool_Navega(var Msg:TMessage); // pega o evento procedure TForm1.Scrool_Navega(var Msg:TMessage); begin if MSg.Msg = WM_VScroll then begin Case Msg.WParam of SB_LINEDOWN : ; // clicou no botão descida SB_LINEUP : ; // clicou no botão subida SB_PAGEDOWN : ; // clicou na barra descendo SB_PAGEUP : ; // clicou na barra subindo end; end else WP_Sv(Msg); // executa a original end; procedure TForm1.FormCreate(Sender: TObject); begin WP_Sv := RichEdit1.WindowProc; // salva RichEdit1.WindowProc := Scrool_Navega; // atribui a nova end;
Com isto o click na barra de rolagem vertical fica sem ação; aí vc tem que colocar o deslize de texto via código.
GOSTEI 0
Renatacoimbra
07/01/2006
Obrigada IPC$
Se alguém tem alguma idéia de como deslizar o texto via código me ajuda aí por favor..
[]´s
Se alguém tem alguma idéia de como deslizar o texto via código me ajuda aí por favor..
[]´s
GOSTEI 0
Marco Salles
07/01/2006
Se alguém tem alguma idéia de como deslizar o texto via código me ajuda aí por favor..
[b:bc5f7a022d]tente isso :[/b:bc5f7a022d]
private
WP_Sv :TWndMethod; // para salvar
procedure Scrool_Navega(var Msg:TMessage); // pega o evento
procedure WmUser (var Msg :Tmessage);message wm_user;
implementation
{$R *.DFM}
{ TForm1 }
var
descer:Boolean;
procedure TForm1.FormCreate(Sender: TObject);
begin
WP_Sv:= RichEdit1.WindowProc; // salva
RichEdit1.WindowProc := Scrool_Navega; // atribui a nova
end;
procedure TForm1.Scrool_Navega(var Msg: TMessage);
var
sender:TObject;
begin
if MSg.Msg = WM_VScroll then
begin
Case Msg.WParam of
SB_LINEDOWN :descer:=True;
SB_LINEUP:descer:=false;
SB_PAGEDOWN :descer:=True;
SB_PAGEUP:descer:=false;
end;
postmessage(handle,wm_user,0,0) ;
end
else
begin
WP_Sv(Msg); // executa a original
end;
end;
procedure TForm1.WmUser(var Msg: Tmessage);
begin
if descer then
keybd_event(VK_DOWN,0,0,0)
else
keybd_event(VK_up,0,0,0);
end;
GOSTEI 0