问题标签 [tgrid]

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 投票
0 回答
182 浏览

delphi - 如何将 TClientDataset 的更改发送回 RTC 服务器?

嗨,我在 Delphi 中有一个带有 RTC 的服务器/客户端应用程序。我的客户端是一个 Android Mobil 设备并且有一个 TGrid。服务器从 dbf 文件中获取数据,并通过 HTTP 将此数据作为数据集发送到客户端。客户端获取数据并填充 TGrid,这可以工作,但是如果我想将更改数据发回,它不起作用#t work :(

这是我的代码:

delphi说我数据没有初始化

...

Grid 从 GetDataSet 获取数据,我只想发回更改!GetDataset 是全局的。

0 投票
1 回答
872 浏览

delphi - 与 LiveBindings 和数据集一起使用时如何使 TProgressColumn 工作

我的目标是拥有一个包含多个列的 TGrid,通过 LiveBindings 连接到 TClientDataSet。其中一列是 TProgressColumn 类型。

网格显示数据,但进度条列不显示任何内容(即 0% 进度)。

TProgressColumn 连接到 ftInteger 类型的字段。此字段中的值介于 0 和 100 之间。

我尝试过使用 ftSingle,但没有运气。我通过 ColumnStyle 属性将列的类型设置为 TProgressColumn,该属性在 TLinkGridToDataSourceBindSourceDB/Columns 下可用。

奇怪的是,当我使用 TPrototypeBindSource 生成值时 - TProgressColumn 有效,但仅适用于 ftUInteger 值。ftInteger 生成器失败。

这是一个小演示(Delphi XE7):

TProgressColumn 问题

当我在 TProgressCell.DrawCell() 中放置一个断点并跳过 Value.IsOrdinal 和 Value.IsType 的两个条件时,ClampValue 接收到一个值为 0 的“Min”。该值似乎有问题,通过到功能。

使用 TProgressColumn 时有什么特别之处吗?我需要在 TLinkGridToDataSourceColumn 中使用 CustomFormat、CustomParse 吗?

这是一个错误还是我错过了什么?

更新: 感谢“nompa”,谜团解开了!

事实上,“asInteger”是 TField 类的众所周知的属性,即:

TProgressColumn - 已解决!

在 CustomFormat 属性中,您可以访问许多东西,包括 self.asInteger 属性。更多信息在这里:

  1. 在 LiveBindings 中使用自定义格式和解析表达式
  2. 在 TLinkPropertyToField 组件的 CustomFormat 属性中使用绑定表达式
  3. 格式化你的字段
  4. 如何将整数字段视为布尔值?
0 投票
1 回答
5633 浏览

delphi - 如何从 Delphi 的 TClientDataset 中获取新的字段值?

嗨,我在 Delphi 中遇到了 TClientDataset 的问题。我想获得一个带有更改数据的数据集。

这是我的代码:

例如:在第 3 列中是文本 blueblue,我将其更改为 redred。计数器说我更改了 1 是正确的,但值说我字符串是 blueblue ......但我想要数据 redred :((

0 投票
1 回答
400 浏览

delphi - 使用格式化单元格的 Firemonkey XE5 TGrid 滚动问题

我正在使用 Delphi XE5,并尝试根据每个单元格的内容格式化 TGrid。对于数字,我希望它们在单元格中右对齐,负数以红色字体显示。所有其他数据应在单元格中左对齐。当我向上或向下滚动网格时颜色/对齐出错时,以下代码实现了这一点。

有人可以帮我解决这个问题吗?我在这个论坛上尝试了很多例子,但无法让它们正常工作,而且我真的被卡住了。

非常感谢期待。

0 投票
3 回答
5729 浏览

delphi - 如何使用 Delphi XE7 更改字符串网格特定单元格的颜色

我正在使用 Delphi XE7 开发 Android 应用程序。在那我使用了TStringGrid 组件,然后我使用 StringGrid.cells[0, 0] := 'Test' 了我如何更改我在代码中显示的那个特定单元格的字体颜色。而且我也有这个示例代码,但我无法更改特定单元格的字体颜色。请任何人解释我如何更改特定单元格值的字体颜色。我正在使用 Delphi XE7,我的目标是 Android 手机。

谢谢..

0 投票
2 回答
130 浏览

c++ - 设置 Firemonkey 控件的 OnMouseMove 方法

我有一个自定义控件,我正在尝试为其定义一个 OnMouseMoveFunction。本质上,该控件用作搜索栏,由一个编辑框和一个TGrid用于显示结果的子自定义控件组成。我已经处理了几个鼠标事件TGrid,但是在尝试实现 OnMouseMove 时,当我尝试设置TGridOnMouseMove 方法时出现以下错误:

E2034 Cannot convert 'void (_fastcall * (_closure )(TMouseMoveEvent))(TMouseMoveEvent)' to 'TMouseMoveEvent'

这是定义函数的头文件的一部分:

void __fastcall GridMouseMove( TMouseMoveEvent * MouseEvent );

这是控件的 CPP 文件中的实际函数:

到目前为止,一切都会编译得很好。但是,当我将TGridOnMouseMoveEvent 处理程序分配给我分配的方法时,我收到错误消息。

我错过了什么导致它无法构建?

0 投票
1 回答
168 浏览

c++ - 在代码中突出显示 TGrid 行

我有一个自定义控件TGrid,我正在尝试制作它,因此当鼠标悬停在一行上时,该行会突出显示。如果我使用箭头键导航网格,行会自动突出显示。但是,我不确定如何复制此效果以使用鼠标进行导航。

目前,我有一个 MouseMove 函数,它可以检测鼠标悬停在网格的哪一行。

我最初认为使用该SelectRow功能会达到预期的效果,但是使用该方法时没有任何反应。另外我尝试过使用

FGrid->SelectCell(0, rowSelected);

这也不起作用。

我已经验证我从函数中获得了正确的行,当鼠标悬停在它上面时,将一行的文本设置为粗体

FGrid->RowObjects[rowSelected]->SetBold();

0 投票
2 回答
1352 浏览

delphi - 如何将 TGrid 的“选定”属性设置为-1

我正在使用一个FMX.Grid.TGrid用户可以选择完整行的。在某些情况下,我想重置此选择。如果我这样做grid.selected = -1或使用grid.selectRow(-1)选择从网格中删除但grid.selected设置为'0'(in TCustomGrid.SelectCell),这是第一行。

如何重置选择以使属性grid.selected为“-1”?

0 投票
0 回答
909 浏览

delphi - 如何通过 LiveBindings 在 FMX TGrid 中填充用户定义的列

我正在尝试通过TCalendarEdit以下方式在网格组件内创建一个包含列。

它工作正常。然后,我从日期类型的 FDQuery 字段填充列。我能够建立一个实时绑定链接并填充传统类型的列,并且我可以将我的 DateColumn 添加到网格中。我尝试通过以下方式将此列连接到 BindSourceDB

但这会破坏网格中的所有列并创建一个新列(我想是 TColumnType)。如果存在 LiveBinding 链接,则传统上用于为用户声明的列中的单元格分配值的网格的事件 OnGetValue 不会触发。我认为可以手动填充列,但是如何使用 Livebindings 机制填充此列?

0 投票
1 回答
1046 浏览

delphi - 如何使用用户定义的 FMX TGrid 库中更改的数据更新数据集字段的值

我使用以下方式来定义和填充带有 TCalendarEdit 原始单元格的列(这里是界面部分)。让我知道是否需要公开实现。

代码工作正常,类型列TDateColumn可以添加到网格中。

我问了一个问题并为其打开了一个赏金,以寻找一种填充用户定义列的技术,LiveBindings但在赏金到期日之前我没有得到任何答案。这就是为什么我现在尝试另一种方式。我声明一个集合DynamicData: TList<TDynamicRecord>;并从数据集中填充它。@Mike-Sutton的回答和他的博客中非常清楚地解释了这种方法。我设法做到了这一点。数据在网格及其新定义的列中正确显示。

但现在我被另一个问题困住了。我需要更新有关用户活动的数据集。我尝试了父网格的OnSetValueandOnEditingDone事件(根据文档,这些事件将用于数据更新),但奇怪的是它没有触发。

什么是适合更新数据集的正确事件或其他方式?