相关疑难解决方法(0)

为什么TStringGrid的子控件不能正常工作?

我将checkboxes(TCheckBox)放在TStringGrid第一列的字符串grid()中.复选框显示正常,正确定位,并在鼠标悬停时通过发光响应鼠标.但是,当我点击它们时,它们不会切换.他们对点击作出反应并突出显示,但最后,实际Checked属性不会改变.更令人费解的是,我没有任何代码在它们存在时更改这些值,我甚至没有OnClick为这些复选框分配事件.此外,我默认这些复选框是未选中的,但在显示时,它们会被检查.

复选框与每个添加到列表中的记录一起创建,并在记录指针内引用,该记录指针分配给要放置复选框的单元格中的对象.

字符串网格黑客用于单元格突出显示:

type
  THackStringGrid = class(TStringGrid); //used later...
Run Code Online (Sandbox Code Playgroud)

记录包含复选框:

  PImageLink = ^TImageLink;
  TImageLink = record
    ...other stuff...
    Checkbox: TCheckbox;
    ShowCheckbox: Bool;
  end;
Run Code Online (Sandbox Code Playgroud)

创建/销毁复选框:

function NewImageLink(const AFilename: String): PImageLink;
begin
  Result:= New(PImageLink);
  ...other stuff...
  Result.Checkbox:= TCheckbox.Create(nil);
  Result.Checkbox.Caption:= '';
end;

procedure DestroyImageLink(AImageLink: PImageLink);
begin
  AImageLink.Checkbox.Free;
  Dispose(AImageLink);
end;
Run Code Online (Sandbox Code Playgroud)

向网格添加行:

//...after clearing grid...
//L = TStringList of original filenames
if L.Count > 0 then
  lstFiles.RowCount:= L.Count + 1
else
  lstFiles.RowCount:= 2; …
Run Code Online (Sandbox Code Playgroud)

delphi checkbox mouseevent tstringgrid delphi-xe2

4
推荐指数
1
解决办法
3724
查看次数

标签 统计

checkbox ×1

delphi ×1

delphi-xe2 ×1

mouseevent ×1

tstringgrid ×1