delphi7里获取dbgrid每个字段的值

delphi7里获取dbgrid每个字段的值,第1张

不同部门不同的百分比? 那百分比自然存储在 生产部门信息表里

假如说 原来的 sql语句是

select a.订单号,a.数量,a.MRP数量,b.生产部门 from 订单表 a,部门表 b where .............

如果同时还要修改数据库的话 一点击 就获取数据对应的ID

那就先执行

update 订单表 a,部门表 b set a.数量=a.数量*b.百分比 where 。。。。。。。。。ID=XXX

然后重新查询不就行了

你的意思是在修改表格时,表格不提交更新,只有按某个键时才提交更新是吧。 如果是这样的话,你的想法是错误的。 首先你需将DBGRID链接的ADOQuery控件的LockType属性设为ltBatchOptimistic,这时表格是不向数据库提交修改的

行数 int nItemNum = m_list.GetItemCount()

列数 int nHeadNum = m_list.GetHeaderCtrl()->GetItemCount()

1、 ListCtrl添加左键单击(NM_CLICK)函数(这个很重要)。

2、 ListCtrl风格设置(一般是网格)。

一般listctrl默认view风格为report,一般在OnInitDialog函数中:

LONG m_lStyle

m_lStyle = GetWindowLong( m_list.m_hWnd , GWL_STYLE)//获取当前窗口style

m_lStyle |= LVS_EX_FULLROWSELECT//选中某行使整行高亮(只适用与report风格的listctrl)

m_lStyle |= LVS_EX_GRIDLINES//网格线(只适用与report风格的listctrl)

//m_lStyle |= LVS_SHOWSELALWAYS//一直选中item

m_list.SetExtendedStyle( m_lStyle )//设置扩展风格

3、 插入数据

一般在OnInitDialog函数中:

//m_list.InsertColumn( 0, "ID", LVCFMT_LEFT, 40 )

//插入列

m_list.InsertColumn( 1, "NAME", LVCFMT_LEFT, 50 )

int nRow = m_list.InsertItem(0, "11")//插入行

m_list.InsertItem(1,"12")

m_list.SetItemText(nRow, 1, "jacky")//设置数据

m_list.SetItemText(nRow+1, 1, "James")

4、 得到listctrl中所有行的checkbox的状态

在OnNMClickList1函数中:

方法一:

m_list.SetExtendedStyle(LVS_EX_CHECKBOXES)

CString str

for(int i=0i<m_list.GetItemCount()i++)

{

if( m_list.GetItemState(i, LVIS_SELECTED) == LVIS_SELECTED || m_list.GetCheck(i))

{

str.Format(_T("第%d行的checkbox为选中状态"), i+1)

AfxMessageBox(str)

}

}

方法二:

POSITION pos = m_list.GetFirstSelectedItemPosition()

CString str

if (pos == NULL)

TRACE0("No items were selected!/n")

else

{

while (pos)

{

int nItem = m_list.GetNextSelectedItem(pos)

str.Format(_T("选中了第%d行"), nItem+1)

AfxMessageBox(str)

}

}

5、 删除所有列(即清空)

while ( m_list.DeleteColumn (0));

6、 得到单击的listctrl的行列号

// 方法一:

DWORD dwPos = GetMessagePos()//返回表示屏幕坐标下光标位置的长整数值

CPoint point( LOWORD(dwPos), HIWORD(dwPos) )

m_list.ScreenToClient(&point)//把屏幕上指定点的屏幕坐标转换成用户坐标

LVHITTESTINFO lvinfo

lvinfo.pt = point

lvinfo.flags = LVHT_ABOVE

int nItem = m_list.SubItemHitTest(&lvinfo)

if(nItem != -1)

{

CString strtemp

strtemp.Format("单击的是第%d行第%d列", lvinfo.iItem, lvinfo.iSubItem)

AfxMessageBox(strtemp)

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/6778062.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-28
下一篇2023-03-28

发表评论

登录后才能评论

评论列表(0条)

    保存