热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

DelphiListView列项可编辑和TCheckListBox使用代码

Delphi列项可编辑和TCheckListBox使用代码(XE7下测试通过

Delphi 列项可编辑和TCheckListBox使用代码(XE7下测试通过)

在这里插入图片描述

unit testFrm;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.ComCtrls, Vcl.Grids,
Vcl.DBGrids, Vcl.StdCtrls, Vcl.CheckLst;
type
TtestFrame = class(TForm)
lv1: TListView;
saveBtn1: TButton;
chklst1: TCheckListBox;
saveBtn2: TButton;
edt: TEdit;
procedure saveBtn1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure saveBtn2Click(Sender: TObject);
procedure edtChange(Sender: TObject);
procedure edtExit(Sender: TObject);
procedure lv1DblClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
testFrame: TtestFrame;
nCurIndex : Integer;
implementation
{$R *.dfm}
procedure TtestFrame.FormCreate(Sender: TObject);
begin
ShowScrollBar(lv1.Handle,SB_HORZ,False);
end;
procedure TtestFrame.lv1DblClick(Sender: TObject);
var
W,X,nCount,nCol:Integer;
Rect:TRect;
Pos : TPoint;
ColSet:set of 0..0; //屏蔽列段
begin
ColSet := [0..0];
if Assigned(lv1.Selected) then
begin
Pos := lv1.ScreenToClient(Mouse.CursorPos);
nCount := lv1.Columns.Count;
X := GetScrollPos(lv1.Handle,SB_HORZ);
for nCol := 0 to nCount - 1 do
begin
W := lv1.Columns[nCol].Width;
if Pos.X <= X+W then
begin
Break;
end;
X:=X+W;
end;
nCurIndex := nCol;
if nCol = nCount then
begin
Exit;
end;
if (nCol in ColSet) then
begin
Exit;
end;
if X <0 then
begin
Exit;
W := W+X;
X := 0;
end;
Rect := lv1.Selected.DisplayRect(drBounds);
Pos.X := X-lv1.Left;
Pos.Y := Rect.Top;
MapWindowPoints(lv1.Handle,Handle,Pos,1);
edt.SetBounds(Pos.X,Pos.Y,W,Rect.Bottom-Rect.Top+3);
edt.Parent := lv1;
edt.Top := lv1.Selected.Top;
edt.Text := lv1.Selected.SubItems[nCurIndex - 1];
edt.Visible := True;
edt.SetFocus;
end;
end;
procedure TtestFrame.edtChange(Sender: TObject);
begin
lv1.Selected.SubItems[nCurIndex-1] := edt.Text;
end;
procedure TtestFrame.edtExit(Sender: TObject);
begin
if edt.Text <> '' then
begin
lv1.Selected.SubItems[nCurIndex - 1]:=edt.Text;
end;
edt.Visible := False;
end;
procedure TtestFrame.saveBtn1Click(Sender: TObject);
var i : Integer;
begin
lv1.Clear;
for i := 0 to 30 do
begin
with lv1.Items.Add do
begin
Caption := '测试1';
SubItems.Add('测试2');
SubItems.Add('测试3');
end;
end;
chklst1.Items.AddObject('AAA',TObject(1000));
chklst1.Items.AddObject('BBB',TObject(1001));
chklst1.Items.AddObject('CCC',TObject(1002));
end;
procedure TtestFrame.saveBtn2Click(Sender: TObject);
var i : Integer;
begin
for i := 0 to chklst1.Count - 1 do
begin
if chklst1.Checked[i] then
begin
ShowMessage(IntToStr(Integer(chklst1.Items.Objects[i])));
end;
end;
end;
end.

推荐阅读
  • 在Delphi7下要制作系统托盘,只能制作一个比较简单的系统托盘,因为ShellAPI文件定义的TNotifyIconData结构体是比较早的版本。定义如下:1234 ... [详细]
  • 在PHP中如何正确调用JavaScript变量及定义PHP变量的方法详解 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • 本文详细解析了使用C++实现的键盘输入记录程序的源代码,该程序在Windows应用程序开发中具有很高的实用价值。键盘记录功能不仅在远程控制软件中广泛应用,还为开发者提供了强大的调试和监控工具。通过具体实例,本文深入探讨了C++键盘记录程序的设计与实现,适合需要相关技术的开发者参考。 ... [详细]
  • 本指南介绍了如何在ASP.NET Web应用程序中利用C#和JavaScript实现基于指纹识别的登录系统。通过集成指纹识别技术,用户无需输入传统的登录ID即可完成身份验证,从而提升用户体验和安全性。我们将详细探讨如何配置和部署这一功能,确保系统的稳定性和可靠性。 ... [详细]
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • C++ 异步编程中获取线程执行结果的方法与技巧及其在前端开发中的应用探讨
    本文探讨了C++异步编程中获取线程执行结果的方法与技巧,并深入分析了这些技术在前端开发中的应用。通过对比不同的异步编程模型,本文详细介绍了如何高效地处理多线程任务,确保程序的稳定性和性能。同时,文章还结合实际案例,展示了这些方法在前端异步编程中的具体实现和优化策略。 ... [详细]
  • 本文探讨了如何利用Java代码获取当前本地操作系统中正在运行的进程列表及其详细信息。通过引入必要的包和类,开发者可以轻松地实现这一功能,为系统监控和管理提供有力支持。示例代码展示了具体实现方法,适用于需要了解系统进程状态的开发人员。 ... [详细]
  • 在 Vue 应用开发中,页面状态管理和跨页面数据传递是常见需求。本文将详细介绍 Vue Router 提供的两种有效方式,帮助开发者高效地实现页面间的数据交互与状态同步,同时分享一些最佳实践和注意事项。 ... [详细]
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • 深入解析 Android 中 EditText 的 getLayoutParams 方法及其代码应用实例 ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • 本文详细介绍了一种利用 ESP8266 01S 模块构建 Web 服务器的成功实践方案。通过具体的代码示例和详细的步骤说明,帮助读者快速掌握该模块的使用方法。在疫情期间,作者重新审视并研究了这一未被充分利用的模块,最终成功实现了 Web 服务器的功能。本文不仅提供了完整的代码实现,还涵盖了调试过程中遇到的常见问题及其解决方法,为初学者提供了宝贵的参考。 ... [详细]
  • 优化后的摘要:默认情况下,PopupWindow在点击外部区域时会自动关闭。为了实现点击外部区域时不自动关闭的功能,可以通过自定义设置来调整PopupWindow的行为,确保其在外部点击时仍保持显示状态。这需要对PopupWindow的属性进行适当的修改和配置,以满足特定的交互需求。 ... [详细]
  • ButterKnife 是一款用于 Android 开发的注解库,主要用于简化视图和事件绑定。本文详细介绍了 ButterKnife 的基础用法,包括如何通过注解实现字段和方法的绑定,以及在实际项目中的应用示例。此外,文章还提到了截至 2016 年 4 月 29 日,ButterKnife 的最新版本为 8.0.1,为开发者提供了最新的功能和性能优化。 ... [详细]
author-avatar
Simon_Diego
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有