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


Автор: User 8.2.2005, 09:47
У меня есть TreeView и 4 четыре кнопки Button1, Button2, Button3, Button4. В TreeView есть такой список
Каталог
............Имя 1
............Имя 2
............Имя 3
............Имя 4
Мне необходимо при нажатии на Button1 что бы фокус падал на "Имя 1", при нажатии на Button2, фокус падал на "Имя 2". Неповерите, но на этом меня замкнуло просто - 2 часа просидел, так и не понял. Черт подери как говориться - требуется просветление. Скиньте примерчик как это сделать?

Автор: Akella 8.2.2005, 10:24
Код

TreeView1.Select();
//-----------------------//
procedure Select(const Nodes: array of TTreeNode); overload; virtual;
procedure Select(Nodes: TList); overload; virtual;
procedure Select(Node: TTreeNode; ShiftState: TShiftState = []); overload; virtual;

Добавлено @ 10:29
smile
можно выделять жырным
нашел в DW6
Код

uses
 CommCtrl;

procedure SetNodeBoldState(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_BOLD;
   if Value then state := TVIS_BOLD  
   else  
     state := 0;
   TreeView_SetItem(Node.Handle, TVItem);
 end;
end;

// Example: Make the first node bold.
// Beispiel: Erster Eintrag fett machen.

procedure TForm1.Button1Click(Sender: TObject);
begin
 SetNodeBoldState(TreeView1.Items[0], True);
end;

Автор: User 8.2.2005, 12:32
Вот, что вышло господа!

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ComCtrls;

type
TForm1 = class(TForm)
TreeView1: TTreeView;
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
i : Integer; // Поставить в TreeView1 свойство HideSelection = False
// если false, то в дереве выделенный элемент будет виден даже если
// фокус ввода находится у другого контрола.

begin
for i :=0 to TreeView1.Items.Count-1 do
if TreeView1.Items.Item[i].Text = 'Имя 1' then
TreeView1.Selected := TreeView1.Items.Item[i];
end;

procedure TForm1.Button2Click(Sender: TObject);
var
i : Integer; // Поставить в TreeView1 свойство HideSelection = False
// если false, то в дереве выделенный элемент будет виден даже если
// фокус ввода находится у другого контрола.
begin
for i :=0 to TreeView1.Items.Count-1 do
if TreeView1.Items.Item[i].Text = 'Имя 2' then
TreeView1.Selected := TreeView1.Items.Item[i];
end;

end.


Может кто знает как это сделать подругому, буду рад!

Автор: ~FoX~ 8.2.2005, 15:40
А просто так не поможет?
Код

procedure TForm1.Button1Click(Sender: TObject);
begin
 TreeView1.Selected := TreeView1.Items.Item[1];
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
 TreeView1.Selected := TreeView1.Items.Item[2];
end;

Итемы, как водиться, начинаются с 0, это "Каталог" в твоем случае.

Автор: User 8.2.2005, 16:02
Это конечно все правильно, но если ветки начать перемещать, то по мойму будит белеберда? Разве не так?

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