问题标签 [tstringgrid]
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.
delphi - 为什么 InvalidateRow/InvalidateColum 不起作用?
InvalidateRow 和 InvalidateColum 不适用于 TStringGrid。这些方法不会使整个 Row/Col 无效。
InvalidateGrid 始终有效(因此在找到错误原因之前,这可能是一个肮脏的解决方法)。
在某些情况下(它似乎是随机的) InvalidateRow 和 InvalidateColum 似乎也可以工作。更新:我发现了哪些情况会触发这个bug:网格必须大于可见区域并且位置在视图之外。
有任何想法吗?
德尔福 7、Win 7 32 位
delphi - 水平滚动条移动时StringGrid的实时更新?
在 Delphi 2010 中,我需要显示一个具有大约 15 列 x 5 行的水平滚动条的网格。
我选择使用 StringGrid。
但是,当鼠标按钮向下拖动水平滚动条时,我希望网格实时滚动。
看起来,StringGrid 组件不会实时滚动。它会一直等到释放鼠标按钮,然后再更新列并在必要时滚动。
此外,水平滚动条按钮(就是所谓的)与列数不成比例。对于底部行上的向下箭头移动到右侧下一列的顶部...
这些似乎是常见的需求,所以我很惊讶没有在 TStringGrid 中找到它们。
关于解决这两个问题的方法有什么建议吗?我可以使用 DbGrid 或其他标准组件,但如果可以避免的话,我的偏好是不使用商业网格。而且我不会使用共享软件或免费软件...
TIA
delphi - 用于主题化 StringGrid 的组件,例如 ThemedDBGrid
存在任何类似的组件来为 stringrid 设置主题,例如 与 delphi 5 兼容的ThemedDBGrid组件。
delphi - 从 OnDrawCell 事件外部绘制 TStringGrid 单元格,这可能吗?
有什么方法可以在不使用 OnDrawCell 事件的情况下在 Delphi 的 TStringGrid 上绘制特定单元格,例如,如果我单击一个按钮,指定的单元格将根据其内容进行绘制。
delphi - OnDrawCell 中心文本 StringGrid - Delphi
我试图让我的 StringGrid 中的文本居中。经过一些研究,我想出了其他人在这里发布的这个函数,当在 DefaultDraw:False 上使用时应该可以工作。
但是,如果我设置 DefaultDraw:False,StringGrid 就会出现故障。
用文本填充 StringGrid 的函数中的行是
arrpos 和 arrby 是字符串数组。sg 是字符串网格。
之后我需要执行文本以显示在单元格的中心。
更新
对于那些遭受类似问题的人来说,这段代码的关键问题之一是 if 语句
该行意味着它将仅运行第 1 列的代码,例如,第二列,因为 StringGrid 是基于 0 的。您可以安全地删除 if 语句,它将执行和工作,而无需禁用默认绘图。
delphi - 为什么我的代码这么慢?
热门(抱歉)答案,适用于那些没有时间进入但可能有类似问题的人。
规则#1,一如既往,尽可能多地移出循环。
2、将 TField var := ADODataSet.FieldByname() 移出循环 3、ADODataSet.DisableControls(); 和 ADODataSet.EnableControls(); 在循环 4 周围,每行上的 stringGrid.Rows[r].BeginUpdate() 和 EndUpdate() (不能在控制时执行)每个都缩短了几秒钟,但我把它归结为“比眼睛快可以看到”通过改变
放在stringGrid.RowCount := ADODataSet.RecordCount;
循环之前
+1 并衷心感谢所有提供帮助的人。
(现在我会去看看我能做些什么来优化绘制 TChart,这也很慢 ;-)
表中有大约 3,600 行,这需要 45 秒来填充字符串网格。我究竟做错了什么?
更新:
delphi - 如何检测用户何时完成编辑 TStringGrid 单元格?
当用户完成输入数据时,我想在字符串网格中返回单元格的内容。当按下键盘上的回车键,或者单击或双击另一个单元格时,用户就完成了。
在 Lazarus 中有 FinishedCellEditing 的方法,但在 Delphi 中没有。如何在 Delphi 中检测到它?
image - Delphi - 在字符串网格中绘制到选定单元格的画布 - 可能吗?
我想在字符串网格中的单元格的画布上绘制。这将位于预加载到字符串网格中的图像之上。
我有什么
目前,我不是在图像顶部绘制,而是加载第二个透明图像,然后在单元格顶部绘制。这是我使用的代码,它可以工作。
该过程首先绘制引用到单元格的图像。如果存在“玩家”,它将在顶部绘制玩家块。因为“播放器”图像是透明的 .PNG 图像,所以下面的原始图像仍然可见。
我想要的是
这种方法的缺点是由于图像是恒定的,“玩家棋子”位于单元格内的设定位置。我希望能够根据选择的单元格在单元格内的不同位置绘制“播放器”。我有大约 200 个单元格,所以我真的不想手动创建那么多具有不同位置的图像。
我试过的
我尝试在 drawcell 过程中直接绘制到 stringgrid 的画布,但这似乎引用了整个 stringgrid 而不是正在绘制的当前单元格。
我看过但我似乎无法引用当前单元格的画布 - 我认为它不存在?
我尝试的下一件事是绘制到临时图像,然后将图像绘制到单元格。
这在一定程度上起作用,它确实将图像绘制到单元格,但是图像具有不透明的背景/画布,因此单元格是白色的,上面有圆圈,下面的图像不可见。我做了一些研究,但找不到使图像的画布透明的方法。
我能想到的最后一件事是编写一个算法来定位当前单元格的左上角,然后从那里直接绘制到画布上,但这可能会很麻烦,并且在重绘字符串网格时会产生问题。
任何人都可以看到解决我的问题的方法吗?
在此先感谢,乔希
image - Delphi StringGrid 以图片为背景
嗨,有谁知道是否可以将图片显示为字符串网格的背景,或者是否有人知道可以执行此操作的任何免费 Grid 组件。
谢谢
科林
delphi - 在 Delphi 的 TStringGrid 中放置一个 TCheckBox
我想在某个列的每个单元格中放入TCheckBox
一个在 Delphi 中的内部。TStringGrid
我正在使用德尔福 XE。