主页
Top.Mail.Ru Yandeks.Metrika
论坛:“基地”;
当前存档:2002.04.25;
下载:[xml.tar.bz2];

向下

保存对DB的更改。 找到类似的分支


ph   (2002-04-03 12:01) [0]

如何更改DBGrid单元格的值(选择了该单元格后)后立即将更改保存到数据库? 如果将Table1.Post插入到Table1field1Change,BGrid1Columns0UpdateData中,程序将循环并发生堆栈溢出错误。



Anatoly Podgoretsky   (2002-04-03 12:10) [1]

在OnExit中进行
只有您失去了撤消编辑的能力,不喜欢用户还是为此目的还使用了其他方法?



Johnmen   (2002-04-03 12:11) [2]

OnSetText
一般来说,为什么这是必要的?



ph   (2002-04-03 12:15) [3]

您无需撤消编辑。
OnExit不适合-使用数据库时必须保存更改
完全不响应OnSetText。




Johnmen   (2002-04-03 12:19) [4]

> ...使用数据库时需要保存更改...

为什么要保存更改每个字段的值?




Anatoly Podgoretsky   (2002-04-03 12:22) [5]

保存部分完成的剪辑的一种奇怪的愿望,更糟糕的是没有出现故障。 所以你继续 关口退出,而不是整个网格



ph   (2002-04-03 12:23) [6]

这是必要的,以便立即计算页脚,而不是在切换到另一行之后



ph   (2002-04-03 12:27) [7]

OnColExit也不起作用



Aleksandr   (2002-04-03 12:35) [8]

好吧,好吧……您认为编辑已基于什么理由终止?



ph   (2002-04-03 12:41) [9]

标志:编辑已结束-如果有Table1field1Change,BGrid1Columns0UpdateData,那就很好了,但是程序循环了。



Aleksandr   (2002-04-03 13:03) [10]

Mlyn,我不是在说这个……有人在您的单元格中写东西,写东西,写东西……以及什么时候考虑他完成了写操作并应该被保存? 在每个输入的字符之后,还是什么?



ph   (2002-04-03 13:08) [11]

按Enter后



Aleksandr   (2002-04-03 13:19) [12]

好吧,你可以这样做:
您添加了一种在网格上按下键的方法:
DBGrid.OnKeyDown:

if (Key=VK_Return) and (Table.State IN [dsInsert,dsEdit]) then begin
Table.Post;
// и поищи в хелпе, чего там надо отправить гриде, чтобы она из состояния Editing вышла, если сама не выйдет
Key:=0
end;

选项2:使用相同的代码创建一个动作:

if Table.State in [dsInsert,dsEdit] then
Table.Post;


通常,这是不好的方式-允许直接在网格中进行编辑。通常使用模式形式进行编辑。 毕竟,网格不能显示所有数据类型。



Aleksandr   (2002-04-03 13:20) [13]

PS
我的意思是,使用此代码和Enter快捷方式创建一个Action ...



Johnmen   (2002-04-03 13:35) [14]

> Aleksandr©
> ...举止不好-允许直接在网格中进行编辑...

我不敢苟同 !
在使用网格进行编辑时,我可以举很多例子,只有这样才能解决问题!



Aleksandr   (2002-04-03 13:41) [15]

约翰曼©
让我同意你的观点,简单的任务可以用一个网格解决。但是举个例子,如果没有网格就无法解决问题? 我还没有遇到这样的人:)



Johnmen   (2002-04-03 13:56) [16]

> Aleksandr©特别为您服务!

我们输入特定文件的内容,例如发票。
我们输入了标题,然后开始输入内容。
对于每个条目,我们都注明名称,数量,价格。
这是填充的问题:您需要多长时间
如果是名称,则填写模态表单中的每个条目-100个。 ,运单-50个,为此分配给您-最多30分钟。 ?




Aleksandr   (2002-04-03 14:05) [17]

约翰曼©
有点...在此过程中添加了两次击键:插入-调用添加窗口,输入-保存...浏览各个字段-相同的制表符; 方便的是,无需切换到鼠标即可选择下拉列表...



deleon   (2002-04-03 14:07) [18]

使您的基于TDbGrid的网格并向其添加OnCellExit事件:-)))



Erlend   (2002-04-03 14:13) [19]

刚离开模态形式时,您将编写:
if ((Table1.State in [tsEdit]) or Table1.Modified then Table1.Post;



Johnmen   (2002-04-03 14:19) [20]

> Aleksandr©:
1.以及没有鼠标的下拉列表-<Alt> + <箭头向下/向上> ...

2.您至少有2次额外点击-插入并输入
还有一种额外的形式...



Aleksandr   (2002-04-03 14:26) [21]

约翰门©:

1.是的,但是这样的组合总是很方便吗?
2.好吧,先生,通过按箭头将它们替换为网格...多余的表单将无法应对天气-如果表单连接一次,则不会丢失很多内存...



Johnmen   (2002-04-03 15:03) [22]

> Aleksandr©:这是我无法理解的-如果用更少的身体运动和更少的资源就可以解决问题,那为什么不呢?



Aleksandr   (2002-04-03 15:21) [23]

约翰门©:
1.可靠性标准。 如果仅填充第一列的用户不小心单击了向上箭头,而剩下的必填列太多了怎么办?
2.如何在网格中显示Blob数据?



ph   (2002-04-03 15:31) [24]

谢谢Aleksandr
DBGrid.OnKeyDown:
if(Key = VK_Return)和(Table.State IN [dsInsert,dsEdit])然后开始
Table.Post;
键:= 0
结束;
作品。 但是,如果有一列CheckBoxes并且您需要以相同方式处理鼠标单击,该怎么办?



ph   (2002-04-03 15:39) [25]

已经知道了。 谢谢大家!



Страницы: 1 整个分支

论坛:“基地”;
当前存档:2002.04.25;
下载:[xml.tar.bz2];

楼上





内存:0.62 MB
时间:0.032 c
4-81113
GBX
2002-02-15 07:38
2002.04.25
HOOK WIN32


1-80972
强尼
2002-04-12 09:55
2002.04.25
在哪里放置exe-shnik?


1-80969
Vovochka
2002-04-10 12:15
2002.04.25
表单中没有WM_MouseLeave消息!


14-81040
drpass
2002-03-19 19:04
2002.04.25
如何使用CD-RW指数驱动器?


3-80797
PikulevEvgeny
2002-04-05 09:12
2002.04.25
按数据库搜索





南非荷兰语 阿尔巴尼亚人 阿拉伯语 亚美尼亚 阿塞拜疆 巴斯克 白俄罗斯 保加利亚语 加泰罗尼亚 简体中文 中国(繁体) 克罗地亚 捷克 丹麦语 荷兰人 英语 爱沙尼亚语 菲律宾人 芬兰 法语
加利亚西语 格鲁吉亚语 德语 希腊语 海地克里奥尔语 希伯来语 印地语 匈牙利 北日耳曼语 印度尼西亚人 爱尔兰语 意大利语 日本 韩语 拉脱维亚 立陶宛 马其顿 马来语 马耳他语 挪威语
波斯语 波兰语 葡萄牙语 罗马尼亚 俄语 塞尔维亚 斯洛伐克 斯洛文尼亚 西班牙语 斯瓦希里 瑞典语 泰国人 土耳其 乌克兰 乌尔都语 越南人 威尔士语 意第绪语 孟加拉 波斯尼亚
宿务 世界语 古吉拉特语 豪萨语 苗族 伊博 爪哇 卡纳达语 高棉 老挝 拉丁语 毛利 马拉 蒙古人 尼泊尔 旁遮普 索马里 淡米尔文 泰卢固语 约鲁巴语
祖鲁
英文 Французский Немецкий Итальянский Португальский 俄文 Испанский