delphi xe7 判断listbox滚动条是否到达底部,下拉并加载数据
本文章向大家介绍delphi xe7 判断listbox滚动条是否到达底部,并加载数据,主要包括delphi xe7 判断listbox滚动条是否到达底部,并加载数据使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
或者说成,listbox下拉加载数据
方法1:当listbox滚动条完全到达底部;
var
Form2: TForm2;
i: Single = -1;
implementation
{$R *.fmx}
procedure TForm2.lst1Gesture(Sender: TObject;
const EventInfo: TGestureEventInfo; var Handled: Boolean);
begin
case EventInfo.GestureID of
sgiLeft: ShowMessage('sgiLeft');
sgiRight: ShowMessage('sgiRight');
sgiDown: ShowMessage('sgiDown');
sgiUp:
begin
if i = lst1.ViewportPosition.Y then
begin
ShowMessage(FloatToStr(i));
end
else
begin
i := lst1.ViewportPosition.Y;
ShowMessage(FloatToStr(i));
end;
{
设置类型为Single全局变量i,初始值为了-1; 目的是记录滚动条每次的位置变化;
如果滚动条两次的位置是相同,表示滚动条已经到达底部,可以加载数据了。
}
//另一个问题又来了,就是怎么判断滚动条接近底部,但是还没有到达底部的时候加载数据呢?
end;
end;
end;
方法2:listbox滚动条快要到达底部,离底部仍有段距离,就要加载数据;
procedure TForm2.lst1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Single); //这个是listbox鼠标经过事件
var
items:TListBoxItem;
i:Integer;
begin
i := lst1.Count - 3; //获取listbox控件的总行数;减3的目的是获取倒数第N行。
items := lst1.ItemByPoint(X,Y); //通过坐标获取子项;
// items := lst1.ItemByIndex(2); //通过素引值获取子项;
// items := Sender as TListBoxItem; //强制转化为 TListBoxItem 类型,同样获取子顶;
// lst1.Items[2]; //以上3种方法可以灵活设置子项的属性,例如,图标,高度,文本等;而这一项只能简单地通过素引值获取指定的子项的文本;但是,被注释的这3种方法在本例中暂不适用。
btn2.Text := items.Text;
if items.Index = i then
begin
btn1.Text := '加载数据';
end;
//本例最终目的就是,每当手势或鼠标滑过子项的时候,进行判断是不是倒数第N行,
//如果是的话,说明1.滚动条快要到达底部了,2.旧数据将会全部被显示出来,这个时候就可以实现动态加载更多的新数据了。
end;