delphi鐨凩istView鍒嗛〉鏄剧ず鎬庝箞瀹炵幇
瑕佸疄鐜癉elphi鐨凩istView鍒嗛〉鏄剧ず锛屽彲浠ユ寜鐓т互涓嬫楠よ繘琛屾搷浣滐細
- 鍦―elphi鐨勭獥浣撲笂鏀剧疆涓€涓狶istView鎺т欢锛岀敤浜庢樉绀烘暟鎹€?/li>
- 璁剧疆ListView鐨刅iewStyle灞炴€т负vsReport锛岃繖鏍峰彲浠ヤ互鎶ヨ〃褰㈠紡鏄剧ず鏁版嵁銆?/li>
- 鍦ㄧ獥浣撲笂鏀剧疆涓€涓狢omboBox鎺т欢锛岀敤浜庨€夋嫨姣忛〉鏄剧ず鐨勬暟鎹潯鏁般€?/li>
- 鍦ㄧ獥浣撲笂鏀剧疆涓€涓狟utton鎺т欢锛岀敤浜庡垏鎹㈠埌涓婁竴椤点€?/li>
- 鍦ㄧ獥浣撲笂鏀剧疆涓€涓狟utton鎺т欢锛岀敤浜庡垏鎹㈠埌涓嬩竴椤点€?/li>
- 鍦ㄧ獥浣撶殑FormCreate浜嬩欢涓紝鍒濆鍖朙istView鐨勫垪鏍囬鍜屾暟鎹€?/li>
- 鍦–omboBox鐨凮nChange浜嬩欢涓紝鏇存柊姣忛〉鏄剧ず鐨勬暟鎹潯鏁帮紝骞堕噸鏂拌绠楁€婚〉鏁般€?/li>
- 鍦ㄤ笂涓€椤垫寜閽殑OnClick浜嬩欢涓紝璁$畻褰撳墠椤电殑璧峰绱㈠紩鍜岀粨鏉熺储寮曪紝骞舵洿鏂癓istView鐨勬樉绀烘暟鎹€?/li>
- 鍦ㄤ笅涓€椤垫寜閽殑OnClick浜嬩欢涓紝璁$畻褰撳墠椤电殑璧峰绱㈠紩鍜岀粨鏉熺储寮曪紝骞舵洿鏂癓istView鐨勬樉绀烘暟鎹€?/li>
- 鍦ㄧ獥浣撶殑UpdateListView鏂规硶涓紝鏍规嵁褰撳墠椤电殑璧峰绱㈠紩鍜岀粨鏉熺储寮曪紝浠庢暟鎹簮涓彇鍑哄搴旂殑鏁版嵁锛屽苟鏇存柊鍒癓istView涓€?/li>
- 鍦ㄧ獥浣撶殑UpdatePager鏂规硶涓紝鏍规嵁鎬婚〉鏁板拰褰撳墠椤垫暟锛屾洿鏂颁笂涓€椤垫寜閽拰涓嬩竴椤垫寜閽殑Enabled灞炴€с€?/li>
涓嬮潰鏄竴涓畝鍗曠殑绀轰緥浠g爜锛?/p>
unit MainForm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls;
type
TMainForm = class(TForm)
ListView1: TListView;
ComboBox1: TComboBox;
ButtonPrev: TButton;
ButtonNext: TButton;
procedure FormCreate(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure ButtonPrevClick(Sender: TObject);
procedure ButtonNextClick(Sender: TObject);
private
FData: TStringList;
FPageSize: Integer;
FTotalPages: Integer;
FCurrentPage: Integer;
procedure UpdateListView;
procedure UpdatePager;
public
{ Public declarations }
end;
var
MainForm: TMainForm;
implementation
{$R *.dfm}
procedure TMainForm.FormCreate(Sender: TObject);
var
I: Integer;
begin
FPageSize := 10;
FCurrentPage := 1;
FData := TStringList.Create;
for I := 1 to 100 do
FData.Add('Item ' + IntToStr(I));
ListView1.Columns.Add.Caption := 'Items';
UpdateListView;
UpdatePager;
end;
procedure TMainForm.ComboBox1Change(Sender: TObject);
begin
FPageSize := StrToIntDef(ComboBox1.Text, 10);
FCurrentPage := 1;
UpdateListView;
UpdatePager;
end;
procedure TMainForm.ButtonPrevClick(Sender: TObject);
begin
if FCurrentPage > 1 then
begin
Dec(FCurrentPage);
UpdateListView;
UpdatePager;
end;
end;
procedure TMainForm.ButtonNextClick(Sender: TObject);
begin
if FCurrentPage < FTotalPages then
begin
Inc(FCurrentPage);
UpdateListView;
UpdatePager;
end;
end;
procedure TMainForm.UpdateListView;
var
I, StartIndex, EndIndex: Integer;
begin
ListView1.Clear;
StartIndex := (FCurrentPage - 1) * FPageSize;
EndIndex := StartIndex + FPageSize - 1;
if EndIndex >= FData.Count then
EndIndex := FData.Count - 1;
for I := StartIndex to EndIndex do
begin
with ListView1.Items.Add do
begin
Caption := FData[I];
end;
end;
end;
procedure TMainForm.UpdatePager;
begin
FTotalPages := Ceil(FData.Count / FPageSize);
ButtonPrev.Enabled := FCurrentPage > 1;
ButtonNext.Enabled := FCurrentPage < FTotalPages;
end;
end.
浠ヤ笂浠g爜瀹炵幇浜嗕竴涓畝鍗曠殑ListView鍒嗛〉鏄剧ず鐨凞elphi绋嬪簭銆傞€氳繃ComboBox閫夋嫨姣忛〉鏄剧ず鐨勬暟鎹潯鏁帮紝閫氳繃鎸夐挳鍒囨崲涓婁竴椤靛拰涓嬩竴椤点€傛牴鎹綋鍓嶉〉鐨勮捣濮嬬储寮曞拰缁撴潫绱㈠紩锛屼粠鏁版嵁婧愪腑鍙栧嚭瀵瑰簲鐨勬暟鎹紝骞舵洿鏂板埌ListView涓€傚悓鏃讹紝鏍规嵁鎬婚〉鏁板拰褰撳墠椤垫暟锛屾洿鏂颁笂涓€椤垫寜閽拰涓嬩竴椤垫寜閽殑Enabled灞炴€с€?/p>