- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的表单上有一个 TGridPanel
,并且希望向单击的特定“单元格”添加一个控件。
我很容易明白这一点:
procedure TForm1.GridPanel1DblClick(Sender: TObject);
var
P : TPoint;
InsCol, InsRow : Integer;
begin
P := (Sender as TGridPanel).ScreenToClient(Mouse.CursorPos);
if (Sender as TGridPanel).ControlAtPos(P) = nil then
begin
InsCol := ???;
InsRow := ???;
(Sender as TGridPanel).ControlCollection.AddControl(MyControl, InsCol, InsRow)
end;
end;
我可能不需要 if ControlAtPos(P) = nil then
行,但我想确保我没有在已有控件的单元格中插入控件。
那么...我应该使用什么代码来获取 InsCol 和 InsRow?我已经检查了 TGridPanel
和 TControlCollection
类代码,但找不到任何可以从鼠标坐标为我提供列或行值的内容。除了 OnDblClick()
之外,它们似乎也不是可使用的相关事件。
任何帮助将不胜感激。
编辑:将变量 Result 更改为 MyControl 以避免混淆。
最佳答案
procedure TForm1.GridPanel1Click(Sender: TObject);
var
P: TPoint;
R: TRect;
InsCol, InsRow : Integer;
begin
P := (Sender as TGridPanel).ScreenToClient(Mouse.CursorPos);
for InsCol := 0 to GridPanel1.ColumnCollection.Count - 1 do
begin
for InsRow := 0 to GridPanel1.RowCollection.Count - 1 do
begin
R:= GridPanel1.CellRect[InsCol,InsRow];
if PointInRect(P,R) then
begin
ShowMessage (Format('InsCol = %s and InsRow = %s.',[IntToStr(InsCol), IntToStr(InsRow)]))
end;
end;
end;
end;
function TForm1.PointInRect(aPoint: TPoint; aRect: TRect): boolean;
begin
begin
Result:=(aPoint.X >= aRect.Left ) and
(aPoint.X < aRect.Right ) and
(aPoint.Y >= aRect.Top ) and
(aPoint.Y < aRect.Bottom);
end;
end;
关于delphi - 在 TGridPanel 中单击单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8327381/
我有一个 16 x 4 的网格面板,如下所示: 有时我想隐藏一些行并将底行向上移动。当我将组件可见属性设置为 false 时,布局不会更新: 尽管如此,行大小类型设置为自动: 当没有任何内容可显示时,
我正在使用 TGridPanel 来保存一些面板。在设计时,我将网格面板设置为 1 行 5 列。 我可以使用此代码向网格添加一个面板,效果很好: procedure TForm6.AddPanelTo
在 Google 上进行了搜索,恐怕找不到答案。 这是我目前的情况: 我不想让这些复选框向左对齐,而是希望它们像这样居中(显然是经过照片处理的): 有人知道如何用 VCL 实现这一点吗?谢谢。 编辑:
我正在使用 TGridPanel 来管理多个面板。我创建面板并使用如下代码将它们添加到 GridPanel: var pnl: TPanel; begin pnl := TPanel.Crea
如何找出 TGridPanel 内控件的位置(行和列索引)?我想对按钮数量使用常见的 OnClick 事件,并且需要知道按钮的 X、Y 位置。 我使用的是 Delphi 2007。 最佳答案 不幸的是
我的表单上有一个 TGridPanel,并且希望向单击的特定“单元格”添加一个控件。 我很容易明白这一点: procedure TForm1.GridPanel1DblClick(Sender: TO
我正在尝试从代码创建一个带有 TGridPanel 的表单。 它包含: 顶部的备忘录(设置为 50%) 中心的导航器(设置为 24 像素) 底部的网格(设置为 50%) 这是我写的代码: uses
我需要使用以下结构: TGridPanel 内的 TGdridPanel 内的 TEdit 换句话说,存在一个 TGridPanel,并且在一个单元格中我需要插入其他 TGridPanel。 在此内部
我是一名优秀的程序员,十分优秀!