FAQ VCL
Компоненты\TreeView

:: Меню ::
:: На главную ::
:: FAQ ::
:: Заметки ::
:: Практика ::
:: Win API ::
:: Проекты ::
:: Скачать ::
:: Секреты ::
:: Ссылки ::

:: Сервис ::
:: Написать ::

:: MVP ::

:: RSS ::

Яндекс.Метрика

Как полностью развернуть TTreeView?

uses
  {...,} ComCtrls;

procedure TForm1.Button1Click(Sender: TObject);
begin
   with TreeView1 do
   begin
      Items.BeginUpdate;
      FullExpand;
      Items.EndUpdate;
   end;
end;


Как полностью свернуть TTreeView?

uses
  {...,} ComCtrls;

procedure TForm1.Button1Click(Sender: TObject);
begin
   with TreeView1 do
   begin
      Items.BeginUpdate;
      FullCollapse;
      Items.EndUpdate;
   end;
end;


Как изменить шрифт в TTreeView на моноширный?

// SYSTEM_FIXED_FONT или ANSI_FIXED_FONT

procedure TForm1.FormCreate(Sender: TObject);
begin
   SendMessage( TreeView1.Handle, WM_SETFONT,
                GetStockObject( SYSTEM_FIXED_FONT ), 1 );
end;


Как изменить цвет текста TTreeView?

procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView;
  Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
   TreeView1.Canvas.Font.Color := clRed;
end;


Как получить информацию о состоянии узла TTreeView?

uses
  {...,} CommCtrl;

// В данном пимере проверяется, помечен ли узел как "вырезанный"
function isTreeCuted( Node: TTreeNode ): boolean;
var
  tvItem: TTVItem;
begin
    tvItem.mask := TVIF_HANDLE or TVIF_STATE;
    tvItem.hItem := Node.ItemId;
    tvItem.Mask := TVIF_STATE;
    tvItem.stateMask := TVIS_STATEIMAGEMASK;
    TreeView_GetItem( Node.Handle, tvItem );

    Result := ( tvItem.state and TVIS_CUT ) = TVIS_CUT;
end;


Как изменить высоту элементов TTreeView?

// Способ первый
uses
  {...,} CommCtrl;

procedure TForm1.Button1Click(Sender: TObject);
const
  ItemHeight = 30;
begin
   TreeView1.Perform( TVM_SETITEMHEIGHT, ItemHeight, 0 );
end;

// Способ второй
uses
  {...,} CommCtrl;

procedure TForm1.Button1Click(Sender: TObject);
const
  ItemHeight = 30;
begin
   SendMessage( TreeView1.Handle, TVM_SETITEMHEIGHT, ItemHeight, 0 );
end;


Как отцентрировать выделенный элемент в TreeView?

procedure SelCentering(Tree: TTreeView);
var
  i: Integer;
  pp, cp: TTreeNode;
begin
   if Assigned(Tree.Selected) then
   begin
      cp := Tree.Selected;
      pp := cp;
      for i := 1 to Round(Tree.Height/30) do
         if cp <> nil then
         begin
            pp := cp;
            cp := cp.GetPrevVisible;
         end;
      Tree.TopItem := pp;
   end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   SelCentering(TreeView1);
end;


Как сохранить выделение в TreeView после потери фокуса?

TreeView1.HideSelection := False;

При использовании материала - ссылка на сайт обязательна