Показать сообщение отдельно
  #4  
Старый 09.01.2015, 00:38
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,106
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Добавить в TV чекбоксы:

Код:
interface

type
  TTreeView = class(ComCtrls.TTreeView)
  end;

  TForm1 = class(TForm)
  ...

implementation

procedure TTreeView.CreateParams(var Params: TCreateParams);  
begin
inherited;
    Params.Style := Params.Style or TVS_CHECKBOXES;
end;

Получить список в Мемо:
Код:
function TreeNodeChecked(n:TTreenode):Boolean;
Const
  TVIS_CHECKED = $2000;
var
   Item: TTVItem;
begin
   Item.mask := TVIF_STATE or TVIF_HANDLE;
   Item.hItem := n.ItemId;
   if Bool(SendMessage(n.Handle, TVM_GETITEM, 0, lParam(@Item))) then
       Result := (Item.State and TVIS_CHECKED) = TVIS_CHECKED
   else
       Result := false;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  Memo1.Lines.Clear;
  for i := 0 to TreeView1.Items.Count - 1 do
  begin
    if (TreeView1.Items[i].Count = 0) And (TreenodeChecked(TreeView1.Items[i])) then
        Memo1.Lines.Add(TreeView1.Items[i].Text);
  end;
end;
Ответить с цитированием