相关疑难解决方法(0)

TListView标题栏中的复选框 - 如何防止它窃取焦点?

这与如何在TListView标题列中显示复选框的问题有关.

我想从使用代码这个答案@Sertac Akyuz.(我还需要这个在WinXP中工作)

但我想让标题CheckBox不从ListView或其他活动控件中窃取焦点.

一个快速的解决方法是始终将焦点设置为ListView ListHeaderWndProc:

...
FListHeaderChk.Checked := not FListHeaderChk.Checked;
ListView1.SetFocus;
// code that checks/clears all items
Run Code Online (Sandbox Code Playgroud)

但这有点难看.因为CheckBox首先被聚焦,然后焦点返回到ListView.如果我单击CheckBox并将鼠标拖到CheckBox外部,则无法接收BN_CLICKED消息.

我也尝试过:

TCheckBox = class(StdCtrls.TCheckBox)
  private
    procedure WMMouseActivate(var Message: TWMMouseActivate); message WM_MOUSEACTIVATE;
  protected
    procedure CreateParams(var Params: TCreateParams); override;
  public
    procedure DefaultHandler(var Message); override;
  end;

procedure TCheckBox.WMMouseActivate(var Message: TWMMouseActivate);
begin
  Message.Result := MA_NOACTIVATE; // no effect!
end;

procedure TCheckBox.CreateParams(var Params: TCreateParams);
const
  WS_EX_NOACTIVATE = $08000000;
begin
  inherited;
  Params.ExStyle := Params.ExStyle …
Run Code Online (Sandbox Code Playgroud)

delphi checkbox listview delphi-5

8
推荐指数
1
解决办法
1153
查看次数

在TListView中绘制一个复选框

我需要在a中的特定列中绘制一个复选框TListView,所以我检查这个问题How can I setup TListView with CheckBoxes in only certain columns?并在接受的答案中建议使用另一个问题中描述的方法How to set a Checkbox TStringGrid in Delphi?,现在移植该代码以使用ListView我带有这个:

procedure TForm15.ListView1CustomDrawSubItem(Sender: TCustomListView; Item: TListItem; SubItem: Integer; State: TCustomDrawState; var DefaultDraw: Boolean);
const
  PADDING = 4;
var
  h    : HTHEME;
  s    : TSize;
  r    : TRect;
  Rect : TRect;
  i    : Integer;
  Dx   : Integer;
begin
  if (SubItem=1) then
  begin
    DefaultDraw:=True;
    Rect  :=Item.DisplayRect(drBounds);
    Dx:=0;

    for i := 0 to SubItem do
    Inc(Dx,Sender.Column[i].Width);
    Rect.Left  :=Rect.Left+Dx;

    Rect.Right :=Rect.Left+Sender.Column[SubItem+1].Width; …
Run Code Online (Sandbox Code Playgroud)

delphi checkbox listview tlistview delphi-xe

7
推荐指数
1
解决办法
1万
查看次数

标签 统计

checkbox ×2

delphi ×2

listview ×2

delphi-5 ×1

delphi-xe ×1

tlistview ×1