如何读取TMemo控件的ScrollBar的指示位置?(100)

  • 主题发起人 主题发起人 schoolgirl
  • 开始时间 开始时间
S

schoolgirl

Unregistered / Unconfirmed
GUEST, unregistred user!
请问如何读取TMemo控件的verticle ScrollBar的指示位置,谢谢了!
 
不明白什么意思,你要干嘛?
 
有一个Memo控件含纵向滚动条,滚动框在滚动条中的当前位置如何读取?
 
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls;type TForm1 = class(TForm) RichEdit1: TRichEdit;
Label1: TLabel;// RichEdit2: TRichEdit;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject;
var Action: TCloseAction);
private { Private declarations } PRichEdWndProc, POldWndProc: Pointer;
procedure RichEdWndProc(var Msg: TMessage);
public { Public declarations } end;
var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.RichEdWndProc(var Msg: TMessage);begin
Msg.Result := CallWindowProc(POldWndProc, RichEdit1.Handle, Msg.Msg, Msg.wParam, Msg.lParam);
if (Msg.Msg = WM_VSCROLL) and (LOWORD(Msg.wParam) = SB_THUMBTRACK) then
begin
Label1.Caption := 'Pos is ' + IntToStr(HIWORD(Msg.wParam));// RichEdit2.Perform(Msg.Msg, Msg.wParam, Msg.lParam);// SetScrollPos(RichEdit2.Handle, SB_VERT, HIWORD(Msg.wParam), True);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);begin
PRichEdWndProc := MakeObjectInstance(RichEdWndProc);
POldWndProc := Pointer(SetWindowLong(RichEdit1.Handle, GWL_WNDPROC, Integer(PRichEdWndProc)));end;
procedure TForm1.FormClose(Sender: TObject;
var Action: TCloseAction);begin
if Assigned(PRichEdWndProc) then
begin
SetWindowLong(RichEdit1.Handle, GWL_WNDPROC, Integer(POldWndProc));
FreeObjectInstance(PRichEdWndProc);
end;
end;
end.
 
var FVScrollInfo: TScrollInfo;begin
FVScrollInfo.cbSize := Sizeof(FVScrollInfo);
FVScrollInfo.fMask := SIF_RANGE or SIF_POS or SIF_PAGE;
GetScrollInfo( MemoHandle:THandle;
SB_VERT, FVScrollInfo);
//SB_VERT:Windows单元的常量end;
 
后退
顶部