Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Нужен компонент


Автор: ne0n 25.9.2006, 18:48
Вобщем нужен такой компонент, который выводит список дисков, папок И нужные диски папкм можно отметить.
Вобщем все видно на скрине. заранее благодарю.

Автор: drkot 25.9.2006, 19:10
в jedy подобное видел.

Автор: ne0n 26.9.2006, 15:53
Я че то не видел. Как называется?

Автор: ~FoX~ 26.9.2006, 16:24
Возьми обычный ShellTreeView и поехали:
Код

procedure TForm1.FormShow(Sender: TObject);
begin
  SetWindowLong(ShellTreeView1.Handle, GWL_STYLE,
  GetWindowLong(ShellTreeView1.Handle, GWL_STYLE) or TVS_CHECKBOXES); //применяем стиль
end;


Так проверяем состояние:
Код

function IsCheckedNode(Node: TTreeNode): boolean; //Проверяем
var
  TVItem: TTVItem;
begin
  Result := false;
  if not Assigned(Node) then Exit;
  with TVItem do
    begin
      mask := TVIF_STATE or TVIF_HANDLE;
      hItem := Node.ItemId;
      stateMask := TVIS_STATEIMAGEMASK;
      TreeView_GetItem(Node.Handle, TVItem);
      if state = 8192 then result := true
      else result := false;
    end;
end;


Соответственно так устанавливаем состояние:
Код

procedure CheckNode(Node: TTreeNode; Value: boolean); //Устанавливаем
var TVItem: TTVItem;
begin
  if not Assigned(Node) then Exit;
  with TVItem do
    begin
      mask := TVIF_STATE or TVIF_HANDLE;
      hItem := Node.ItemId;
      stateMask := TVIS_STATEIMAGEMASK;
      if value then state := INDEXTOSTATEIMAGEMASK(2) else state := INDEXTOSTATEIMAGEMASK(1);
    end;
  TreeView_SetItem(Node.Handle, TVItem);
end;


Вот так все это вызывается:
Код

procedure TForm1.Button1Click(Sender: TObject);
begin
  CheckNode(ShellTreeView1.Items[1], True); //Ставим галку на первый итем
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  b: Boolean;
begin
  b:=IsCheckedNode(ShellTreeView1.Items.Item[1]);
  If b = False then MessageBox(0, Pchar('False'), 'Uncheck', mb_ok) //смотрим что там в первом итеме
  else MessageBox(0, Pchar('True'), 'Check', mb_ok);
end;

Автор: ne0n 28.9.2006, 09:46
Конечно хорошо, но ShellTreeView тормозит, а это мне не подходит. Ну я знаю, что ест этот компонент,
только название  не знаю(простите за коломбур). 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)