1、代码来自于“C:\Program Files (x86)\Borland\Delphi7\Demos\Virtual Listview”

  1.1、是使用 ListView来显示数据

  1.2、自己管理 ListView里面显示的信息(也就是说,不是像StringGrid那样一格一格内容往里面插入)

2、ListView 控件,属性设置:

  2.1、ViewStyle 设置为 vsReport

  2.2、OwnerData 设置为 true

  2.3、双击 ListView,添加 几个列

  2.4、GridLines 设置为 true

  2.5、RowSelect 设置为 true

  2.6、ReadOnly 设置为 true

3、测试程序界面:

4、测试代码:(Delphi7)

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls; type
TForm1 = class(TForm)
ListView1: TListView;
btnListViewTest01: TButton;
btnListViewTest02: TButton;
procedure btnListViewTest01Click(Sender: TObject);
procedure ListView1Data(Sender: TObject; Item: TListItem);
procedure btnListViewTest02Click(Sender: TObject);
private
Flist :TList;
public
{ Public declarations }
end; Pmsg =^Rmsg;
Rmsg = record
Fi1 :integer;
Fi2 :integer;
Fi3 :integer;
end; var
Form1: TForm1; implementation {$R *.dfm} procedure TForm1.ListView1Data(Sender: TObject; Item: TListItem);
var p :Pmsg;
begin
if ListView1.ViewStyle <> vsReport then Exit;
if (Item.Index >= Flist.Count) then Exit; p := Flist.Items[Item.Index];
Item.Caption := IntToStr(p.Fi1);
Item.SubItems.Add(IntToStr(p.Fi2));
Item.SubItems.Add(IntToStr(p.Fi3));
end; procedure TForm1.btnListViewTest01Click(Sender: TObject);
var i :Integer;
p :Pmsg;
begin
if not Assigned(Flist) then
Flist := TList.Create;
if (Flist.Count <> ) then
begin
for i:= to (Flist.Count-) do
FreeMem(Flist.Items[i], SizeOf(Rmsg));
Flist.Clear;
end; for i:= to do
begin
GetMem(p, SizeOf(Rmsg));
p.Fi1 := i;
p.Fi2 := + i;
p.Fi3 := + i;
Flist.Add(p);
end;
ListView1.Items.Count := Flist.Count;
ListView1.Repaint;
end; procedure TForm1.btnListViewTest02Click(Sender: TObject);
var i :Integer;
p :Pmsg;
begin
if not Assigned(Flist) then
Flist := TList.Create;
if (Flist.Count <> ) then
begin
for i:= to (Flist.Count-) do
FreeMem(Flist.Items[i], SizeOf(Rmsg));
Flist.Clear;
end; for i:= to do
begin
GetMem(p, SizeOf(Rmsg));
p.Fi1 := + i;
p.Fi2 := + i;
p.Fi3 := + i;
Flist.Add(p);
end;
ListView1.Items.Count := Flist.Count;
ListView1.Repaint;
end; end.

5、运行情况:

  5.1、

  5.2、

6、

7、

8、

Listview_简单使用_(Virtual)的更多相关文章

  1. pytho简单爬虫_模拟登陆西电流量查询_实现一键查询自己的校园网流量

    闲来无事,由于校园内网络是限流量的,查询流量很是频繁,于是萌生了写一个本地脚本进行一键查询自己的剩余流量. 整个部分可以分为三个过程进行: 对登陆时http协议进行分析 利用python进行相关的模拟 ...

  2. Java使用poi对Execl简单操作_总结

    poi是Apache组织给开发者提供一套操作office(Execl,Word,PowerPoint)等Java API,开发者通过Poi API可以快速的操作office办公软件,以上3篇博文只是一 ...

  3. centos 6.5 下 nginx 简单优化_虚拟主机_负载均衡

    # 用了nginx for win很久,安装也是超级简单.# 还是用一下linux版的吧.环境是centos 6.5 x64 # 安装开始: # 先安装依赖 yum install gcc-c++ y ...

  4. 3_Jsp标签_简单标签_防盗链和转义标签的实现

    一概念 1防盗链 在HTTP协议中,有一个表头字段叫referer,采用URL的格式来表示从哪儿链接到当前的网页或文件,通过referer,网站可以检测目标网页访问的来源网页.有了referer跟踪来 ...

  5. QT_4_QpushButton的简单使用_对象树

    QpushButton的简单使用 1.1 按钮的创建 QPushButton *btn = new QPushButton; 1.2 btn -> setParent(this);设置父窗口 1 ...

  6. SignalR简单实用_转自:https://www.cnblogs.com/humble/p/3851205.html

    一.指定通信方式 建立一个通讯方式需要一定的时间和客户机/服务器资源.如果客户机的功能是已知的,那么通信方式在客户端连接开始的时候就可以指定.下面的代码片段演示了使用AJAX长轮询方式来启动一个连接, ...

  7. iOS_10_tableView的简单使用_红楼十二钗

    终于效果图: 方式1,用字典数组 BeyondViewController.h // // BeyondViewController.h // 10_tableView // // Created b ...

  8. JSON的简单使用_向前台发送JSON数据

    转自:http://www.cnblogs.com/digdeep/p/5574366.html 1.前台页面 <%@ page language="java" conten ...

  9. JSON的简单使用_解析前台传来的JSON数据

    package cn.rocker.json; import org.junit.Test; import net.sf.json.JSONArray; import net.sf.json.JSON ...

随机推荐

  1. zTree 树形控件 ajax动态加载数据

    很久没搞过树形控件了 , 再次接触看官网文档有点没懂,于是在网上找了个代码copy上,但数据是写死的,就想这在用ajax异步取出数据替换,下面是js代码 <SCRIPT type="t ...

  2. Babel编译

    Babel的目的就是让你可以使用最新的标准来开发,然后把兼容的问题交给它来完成.比如我如何在使用ES6的语法写完之后将其转换为ES5满足通用性呢? 先用这个最常用的Babel的用法来引入吧. 一  首 ...

  3. linux库冲突解决方法 apt purge / aptitude purge

    remove libs: [apt-get purge remove] or [aptitude purge] how to use apt-get and aptitude https://blog ...

  4. scrapy spider

    spider 定义:在spiders文件夹中由用户自定义,继承scrapy.Spider类或其子类 Spider并没有提供什么特殊的功能. 其仅仅请求给定的 start_urls/start_requ ...

  5. form表单学习

    1.http://www.cnblogs.com/fish-li/archive/2011/07/17/2108884.html 2.http://www.cnblogs.com/polk6/arch ...

  6. (转)Android工程出现 java.lang.NoClassDefFoundError错误解决方法

    在Eclipse中,导入Android工程,工程没有报错,运行时,出现 java.lang.NoClassDefFoundError类没有找到的错误.从问题上可以看出是导入包出错的原因.遂百度加谷歌. ...

  7. action接收请求参数

    一.采用基本类型接收请求参数(get/post)在Action类中定义与请求参数同名的属性,struts2便能接收自动接收请求参数并赋给同名属性. action的代码: public class Pa ...

  8. 系列文章(三):WAPI为无线局域网WLAN安全而生——By Me

    导读:无线局域网(又称为WLAN,Wireless Local Area Network),其应用领域不断拓展,无线接入所具有的前所未有的连接性和自动化能够为人们带来巨大的便利和商机.与此同时,在信息 ...

  9. js 实现无限加载分页(适合移动端)

    一.原理:当滚动条到达底部时,执行下一页内容. 判断条件需要理解三个概念:    1.scrollHeight 真实内容的高度    2.clientHeight 视窗的高度,即在浏览器中所能看到的内 ...

  10. Q35+uefi or bios+legacy // PCI | PCIE

    1:首先统一可扩展固件接口(UEFI)是一种规范定义操作系统和平台固件之间的软件接口. UEFI旨在替代基本输入/输出系统(BIOS)固件接口.(legacy) 硬件平台厂商越来越多地采用UEFI管理 ...