Memo 控件是 delphi 中的一個(gè)常用控件,用于進(jìn)行簡單的多行純文本編輯。Memo 控件在初始默認(rèn)設(shè)置時(shí),不顯示滾動(dòng)條,需要手動(dòng)設(shè)置 ScrollBars 屬性為 ssBoth、ssVertical、ssHorizontal 用于顯示水平、垂直滾動(dòng)條:
Memo組件提供了文本編輯功能,但并沒有直接提供獲取滾動(dòng)條的位置等屬性,如果想獲取滾動(dòng)條的位置,可以借用 Windows API 中的相關(guān)函數(shù)來進(jìn)行。相關(guān)的函數(shù)如下:
此 API 函數(shù),經(jīng)過 delphi 進(jìn)行轉(zhuǎn)換,定義函數(shù)原型如下:
其中 TScrollInfo 的結(jié)構(gòu)定義如下:
結(jié)合上述資料信息,可以編寫實(shí)現(xiàn)代碼示例如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
procedure TForm1.Button1Click(Sender: TObject);
var
SF: TScrollInfo;
begin
SF.fMask := SIF_ALL;
SF.cbSize := SizeOf(SF);
GetScrollInfo(Memo1.Handle, SB_VERT, SF);
if SF.nPos + SF.nPage = SF.nMax + 1 then
begin
ShowMessage('滾動(dòng)條到達(dá)底部');
end;
Memo2.Lines.Add('');
Memo2.Lines.Add('cbSize: '+IntToStr(Sf.cbSize));
Memo2.Lines.Add('nMin: '+Sf.nMin.ToString);
Memo2.Lines.Add('nMax: '+Sf.nMax.ToString);
Memo2.Lines.Add('nPage: '+IntToStr(Sf.nPage));
memo2.Lines.Add('nPos: '+Sf.nPos.ToString);
Memo2.Lines.Add('nTrackPos: '+Sf.nTrackPos.ToString);
end;
運(yùn)行截圖:
文檔保存失敗!
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。