C++ Builder 中对listview模拟复制某个单元格的内容
来源:互联网 发布:神乃木庄龙 知乎 编辑:程序博客网 时间:2024/06/06 23:17
实现listview的双击事件OnDblClick()添加如下代码:
方法一:
POINT ptt;
GetCursorPos(&ptt); //获取屏幕相对坐标
long nPos = ptt.x; //获取X轴长度
if( lv2->SelCount <= 0 ){ return; } //如果点击listview空白处之间返回
int nIndex = 0;//索引
long nTotal = lv2->Left+pnl2->Width+3;//计算屏幕坐标距离左边的长度作为初始值
for(int i=0;i<lv2->Columns->Count;i++)
{
TListColumn *pCol = lv2->Column[i];
if( pCol->Width == 1 )//主要针对listview第一列是checkbox
{
nTotal+= pCol->Width;
continue;
}
if( nPos > nTotal )
{
nTotal+= 1;//每2个格子之间的宽度算1
nTotal+= pCol->Width;
if( nTotal >= nPos )
{
int nTemp = nTotal-pCol->Width;
if( nPos >= nTemp+1 && nPos <= nTotal )
{
nIndex = i;
}
else
{
nIndex = i-1;
}
break;
}
}
}
nIndex = nIndex-1; //减掉第一列listview第一列是给checkbox预留的所以要从第二列开始算起
if( nIndex == -1 ) { return; }
String strValue = "";
try
{
strValue = lv2->Items->operator[](lv2->Selected->Index)->SubItems->Strings[nIndex];
}catch(...)
{
strValue="";
}
方法二:
int nIndex = 0;
TPoint Pos = lv2->ScreenToClient(Mouse->CursorPos);
Pos.x += GetScrollPos(lv2->Handle, SB_HORZ);
for(int i=0; i<lv2->Columns->Count; i++)
{
Pos.x -= ListView_GetColumnWidth(lv2->Handle, i);
if (Pos.x < 0)
{
nIndex = i;
break;
}
}
nIndex = nIndex-1; //减掉第一列listview第一列是给checkbox预留的所以要从第二列开始算起
if( nIndex == -1 ) { return; }
String strValue = "";
try
{
strValue = lv2->Items->operator[](lv2->Selected->Index)->SubItems->Strings[nIndex];
}catch(...)
{
strValue="";
}
Clipboard()->Clear();
Clipboard()->SetTextBuf(strValue.c_str());
最终将复制单元格的内容保存到剪切板中,如果Clipboard报错未定义,引入头文件:#include <Vcl.Clipbrd.hpp>
lv2是listview控件的name。
- C++ Builder 中对listview模拟复制某个单元格的内容
- C++Builder ListView 单元格点击菜单
- C# 获取Excel文件中某个单元格的内容
- C#中listview获取鼠标点击的单元格内容
- 复制当前单元格上一个单元格的内容到当前单元格
- dojo中grid单元格内容如何复制
- C# Winform ListView实现单元格双击复制内容到剪贴板
- 对Oracle数据库中某个用户数据的复制
- 在Model/view中查找tableview中的某个单元格的内容
- excel中根据某个单元格内容设置一行样式
- c++builder 中设置 excel表中单元格为超链接
- 如何在rdlc报表中获取文本框或某个表格单元格中的内容,报表中表达式的全局集合
- 在C++builder中快速退回到某个控件的父控件
- 关于DataGridView无法对某个单元格赋值的解决办法
- 拆分单元格快速复制内容
- 读取Jtable某个单元格的内容(刚刚被编辑的单元格)
- 《如何更改其他程序ListView控件中某个Item的内容》 -- 天津 赵春生
- 点击ListView中某个Item按钮,并且修改这个item的内容
- NOIP1998普及组复赛第二题 贰的幂方 解题报告
- 工作学习在Ubuntu下
- MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类
- vtk无法解析的外部符号,无法打开文件等错误
- Hadoop:HDFS数据副本存放策略
- C++ Builder 中对listview模拟复制某个单元格的内容
- spring事务管理
- Idea SpringMVC+Spring+MyBatis+Maven整合
- asp.net生成Excel并导出下载五种实现方法
- js判断手机浏览器屏幕方向
- hdoj1010Tempter of the Bone(DFS+剪枝)
- 单生产者 多消费者
- [jq]jquery的has,find和filter方法的区别
- HTTP中的八种方法