Версия для печати

Как выделить некоторые строчки TTreeView бледным (аналогично Ctrl+X в проводнике)?

Оцените материал
(1 Голосовать)

Как выделить некоторые строчки TTreeView бледным (аналогично Ctrl+X в проводнике)?

uses
  ..., CommCtrl;
 
// Способ первый
procedure SetNodeState( node: TTreeNode; Flags: Integer );
var
  tvi: TTVItem;
begin
   FillChar( tvi, SizeOf( tvi ), 0 );
   tvi.hItem := node.ItemID;
   tvi.mask := TVIF_STATE;
   tvi.stateMask := TVIS_CUT;
   tvi.state := Flags;
   TreeView_SetItem( node.Handle, tvi );
end;

 

procedure TForm1.TreeView1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
   // Выделяем бледным
   if ( ssCtrl in Shift ) then
      if ( Key = Ord( 'X' ) ) or ( Key = Ord( 'x' ) ) then
         SetNodeState( ( Sender as TTreeView ).Selected, TVIS_CUT );
   // Снимаем выделение
   if Key = VK_ESCAPE then
      SetNodeState( ( Sender as TTreeView ).Selected, 0 );
end;

Способ второй

procedure TForm1.Button1Click(Sender: TObject);
begin
   TreeView1.Items.Item[0].Cut := true; // false
end;