问题标签 [tdbgrid]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
457 浏览

delphi - 如何设置 TDBGrid 排序中的字符顺序?

我正在使用连接到 TDataSource 的 TDBGrid。此 TDataSource 使用 TADOQuery 作为其数据集。TADOQuery 连接到 Oracle10g 数据库并保存以下查询:

ST.desc 是一个字符串,通常包含如下数据:

一切正常,除了当我在 SQLTools 中运行查询时,它首先返回按LETTERS 排序的数据,然后返回 NUMBERS。例如:

但是当我运行应用程序时,结果首先是 NUMBERS,然后是 LETTERS!例如:

我发现 Oracle 使用一种排序语言(http://docs.oracle.com/cd/B19306_01/server.102/b14225/ch5lingsort.htm)和一些 Delphi 组件(TDBGrid 或 TDataSource?)另一种。

然后我尝试使查询的结果符合 Delphi 的组件顺序,即NUMBERS 然后 LETTERS。但这是不希望的,因为用户的自然顺序是LETTERS,然后是 NUMBERS

有谁知道我如何确定哪个组件正在“重新排序”数据以及如何使两个排序顺序相同?

0 投票
1 回答
1145 浏览

delphi - 更新 DBgrid 时如何突出显示更改的单元格?

假设我正在显示股票价格、体育比分、电影出席率或其他内容。

定期,我将通过 Close() 然后 Open() 刷新链接到其关联数据源的查询的网格。

我知道如何使用 OnDrawCell() 绘制一个单元格 - 我不知道如何知道新值是否与给定单元格的先前值相同或不同。

我想这里有两种用例,一种是行数固定并且它们保持相同的行顺序,另一种是行可以更改(插入/删除或重新排序)。

对于前者,我可以在更新之前拍摄快照并在更新之后进行比较,但这可能是很多数据。我不确定是否要将操作限制为当前可见的行。我认为用户可能想要向下滚动并且仍然会在上次更新期间收到任何更改的通知。

对于后者,我很困惑,当然,除非每一行都有一个唯一的键。

我怎样才能(有效地)做到这一点?TDbGrid 的解决方案对每个人都有帮助,使用 TMS Software 的 TAdvDbGrid 的解决方案对我来说很好(就像(最好是免费的)第 3 方组件一样)。

0 投票
2 回答
465 浏览

c++ - 在 DateTimePicker c ++ builder中更改按钮的大小

再会。请帮忙。如何更改组件 DateTimePicker 中按钮的大小(按钮:向上、向下、打开日历)。我想做触控应用,但是按钮太小了。我对组件 DBGrid 中的 ROWS 也有同样的问题。

0 投票
1 回答
924 浏览

delphi - How to hook after a query is executed?

I am using AnyDac and TMS TAdvDbGrid (rather than plain TDbGrid), in case that makes any difference, but I suspect that there is a general solution.

I have a data aware grid, which should display a maximum of say 12 lines because of screen size. If the associated query returns less than 12 rows then I would like to change the DB Grid's height property accordingly (leaving some empty space below the newly poisiotned bottom og the grid, rather than within it).

I can post the code for that if requested, but my question is what event handler should I do it in?

I had thought to use the Query's AfterOpen() handler, but that is never trigeered.

What else is there? I could use the DB Grid's DrawCell() method, but that would be called frequently.


[Update] I added some tracing. I clciked on the master grid exactly once (its OnClick() gets called twice, but I tried this a few times and it is consistent).

Here's the trace:

I notice a few things:

  • The detail grid is reported as being scrolled before the master grid is repoted as being clicked. I gues that's just the Windows message queue, but it does seem strange.

  • The master grid is reported as being clicked twice

  • Those 2 clicks seem to cause 2 sets of scrolling. The first reports scrolling 5 times; by coincidence (?) there are 5 columns on the detail grid. If there were more, or if processing on scroll was heavy, that ight be an overhead (and I can't understand enough to set & clear flags). Ideally I would like to hook that 2nd "group" which has only a single click, but I don't knwo how.

  • I can confirm AfterScoll as agood event to hook. It is only called when I clcik on a master grid row which is not the current row (i.s, when the content of the detail grid chages).

Any comments?


[Update++]

Since i am using an AnyDac TADQuery, I found that I can assign OrdersADQuery.Command.AfterOpen := OrdersADQueryAfterOpen; and that function will be called exactly once when I click a non-current row of the master grid.

That works for me, but fell free to comment on my previous upate if you think that it will help others

0 投票
4 回答
5971 浏览

delphi - 如何让 DBGrid 绘制 Yes/No 而不是 True/False

我试图在 DBGrid 中用 Yes/No 替换 True/False。下面的代码几乎可以工作:

这似乎有效,直到我开始使用键盘光标键在网格中移动。具有焦点的单元格始终将 True 和 Yes 或 False 和 No 绘制在彼此之上。如何防止在具有焦点的单元格上绘制默认的 True/False 标签?网格的所有其他单元格都是完美的。

编辑:我没有提到网格设置为只读,我注意到问题出在选中和集中。提前致谢。

0 投票
1 回答
167 浏览

mysql - (如何)我可以将来自多个数据库的选择加入 DBgrid 吗?

我有单独的 MySQL 数据库服务器。

如何将查询中的数据加入这些服务器上的数据库,并在 DBgrid 上显示?

[答案] http://dev.mysql.com/doc/refman/5.1/en/federated-storage-engine.html

0 投票
1 回答
2434 浏览

delphi - 如何启用 dbnavigator。

如何启用执行 proram 时默认禁用的 dbNavigator。但是它的 enable 属性是真的吗?我已经设置了数据源属性。我还需要什么?

0 投票
1 回答
209 浏览

delphi-xe2 - 从 DELPHI 上的 SQL 中检索日期名称

我正在使用 Delphi XE2 和 SQL Server 2005 Express。

我有一个名为维护的表,其中包含以下列:

我使用这张表来记录每天必须完成的维护活动,例如周一他们必须在 x 或 y 后面进行清洁等,周二他们必须做其他事情等等。

我将这一天从 1 到 7 保存为星期日 = 1 到星期六 = 7,因此程序将检索 queryday.text= DayOfWeek(Now) 的所有活动,并警告用户有活动要完成。

我的问题是我想在 DBGrid 中显示全名而不是数字的日期。

在 SQL 上,我使用以下方法获取全天名称:

我设置dia_sem-2它会匹配我想要的那一天(显然是星期二=1)

我的问题是,当我将此查询添加到 delphi 上的 Tquery 并添加字段时,未添加“day”字段,它不存在。我做错了什么或者我怎样才能实现我想要做的事情?

0 投票
4 回答
8611 浏览

delphi - DBGrid 通过代码突出显示定位的行?

我得到了: ADOTable1(codepeople 作为整数,namepeople 作为字符串)DataSource1(DateSet 是 ADOTable1)DBGrid1(连接到 DataSource1,Options-dgRowSelect 为 true)

我使用以下代码在 ADOTable1 上找到一行

DBGrid1 正在选择正确的行。但不是亮点。

如何使 DBGrid 自动突出显示我从 ADOTable1 找到的行?

我阅读了以下链接,但没有找到答案:

如何在 TDBGrid 中设置活动单元格?

Delphi - 使用 DBGrid 从搜索中选择行

在 Delphi 中滚动时查看 DBGrid 中的位置

请简单的源代码...

PS:我用的是德尔福 2010。

0 投票
0 回答
49 浏览

delphi - 如何检测列是否被移动?

我正在TDBGrid使用它的OnTitleClick事件进行排序,但是当用户只是排列他的列时,我不想对网格进行排序。

OnTitleClick是否可以在事件触发时检测列是否已移动/正在移动?

OnStartDrag不会被触发,因为拖放似乎是网格组件的内部。

我现在唯一能想到的就是在OnColumnMoved触发时设置一个标志并忽略事件的下一次执行OnTitleClick

这是一个好主意还是有更好的方法?