Delphi中DBgid的操作问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Delphi中DBgid的操作问题相关的知识,希望对你有一定的参考价值。
我用的是DBgrid控件,左边的数据是从数据库中获得
我想双击左边grid中的一行数据,该条数据出现在右边grid中,并可以编辑数量单元理得内容(数据编号不能重复)
最后我点击按钮,能将右边grid中的数据保存到数据库中
求大神指导
给个思路吧:
1、新加一个AdoClientdataset和datasource,然后把dbgrid2连接至AdoClientdataset和datasource,把AdoClientdataset的locktype属性改为ltBatchOptimistic(缓存更新模式)。然后双击AdoClientdataset,把你需要的字段全部添加到列表中
2、在程序启动时,初始化AdoClientdataset,执行AdoClientdataset.CreateDataSet ;
3、在dbgrid1的双击事件中添加代码:
procedure TForm1.dbgrd1DblClick(Sender: TObject);
var i,j : Integer ;
begin
AdoClientdataset1.Append ;
for i := 0 to dbgrd1.Columns.Count-1 do
begin
for j := 0 to AdoClientdataset1.Fields.Count-1 do
begin
if dbgrd1.Columns[i].FieldName=dst1.Fields[j].FieldName then
begin
AdoClientdataset1.Fields[j].Value := dbgrd1.Fields[i].Text ;
end;
end;
end;
dst1.Post ;
end;
本人测试过,可以实现
参考技术A DBGrid是数据感知控件,不知道你右边网格用的是DBGrid还是其他的,用DBGrid做不到你想要的效果。我觉得简单的做法就是选择左边的网格一条记录,点击一个 修改按钮 ,弹出一个修改信息的窗口 这样比较要操作吧。想你说的在右边的网格中编辑,那项目编号要不要编辑呢?如果输入编号不对还要加判断,这样感觉比较繁琐。 参考技术B 先获取单击的内容吗?像dbgrid.field[0].asstring,其它应该会吧
Delphi Prism 中的操作系统指令
【中文标题】Delphi Prism 中的操作系统指令【英文标题】:Operating System Directive in Delphi Prism 【发布时间】:2011-08-23 13:01:37 【问题描述】:由于我正在编写一个最终将在从相同项目文件编译的 Windows 和 Linux 环境中运行的程序,因此我想测试一下操作系统指令的性能如何。所以,我写了一个示例代码。代码似乎意外运行,或者只是我的想象。
代码如下:
method MainForm.ControlBtn_Click(sender: System.Object; e: System.EventArgs);
begin
$IFDEF linux
MessageBox.Show('This is Linux. Horay!!!', 'mypro',MessageBoxButtons.yesno);
$ENDIF
$IFDEF WIN32
MessageBox.Show('This is Win32. Horay!!!', 'mypro',MessageBoxButtons.yesno);
$ENDIF
$IFDEF CLR
MessageBox.Show('This is .NET Framework. Horay!!!', 'mypro',MessageBoxButtons.yesno);
$ENDIF
end;
现在,当我在 Windows 上运行此方法时,它会弹出一个消息框,其中包含“这是 .NET Framework。万岁!!!'我有点期待它在 Windows 上运行。当我在 Mono 下的 Linux 上运行它时,它会弹出一个带有相同消息的消息框,“这是 .NET FrameWork。万岁!!!”我期待看到 Linux 消息,即“这是 Linux。万岁!!!”如果此代码工作正常,那么如果您确实需要执行仅受 Linux 或 Mac 或 windows 支持的不同方法,您如何检查您的程序在哪个平台上运行。
【问题讨论】:
【参考方案1】:编译器指令在编译时进行评估(因此编译器指令)。因此,生成的 .exe 将始终说明它是在哪个平台上编译的,而不是它正在运行的平台。此外,对于 Prism / Oxygene 语言,Delphi-Compiler 指令没有以这种方式定义。
检索您正在运行的操作系统的方法有点棘手(例如,有多个值表明您在 UNIX 上),但并不过分复杂。
第一个去的地方是System.Environment.OSVersion.Platform
。
此枚举在 .NET 2.0 中定义以下值:Win32S, Win32Windows, Win32NT, WinCE, Unix, Xbox, MacOSX
。 MacOS 有自己的价值,而 Linux 和其他 Unixoid 系统共享 Unix 的价值。
Mono 还定义了其他值(参见Mono FAQ entry 确定平台)。
编辑:一种可能的方法是:
var os: string := if Environment.OSVersion.Platform = System.PlatformID.Unix then
'Linux/Unix'
else if Environment.OSVersion.Platform = System.PlatformID.MacOSX then
'Mac OS X'
else
'Windows';
【讨论】:
以上是关于Delphi中DBgid的操作问题的主要内容,如果未能解决你的问题,请参考以下文章