Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.01.2010, 23:13   #1
beygul
Форумчанин
 
Аватар для beygul
 
Регистрация: 15.09.2008
Сообщений: 335
По умолчанию TreeVeiw

Такая проблема возникла! Создал в свойстве Items, компонента TreeVeiw - древо. Теперь нужно чтобы при двойном нажатии на какой нибудь подраздел - выполнялась какая нибудь определённая функция. например в компаненте Label, свойстве Caption - что то менялось... вот...
beygul вне форума Ответить с цитированием
Старый 02.01.2010, 00:22   #2
Скандербег
Форумчанин
 
Регистрация: 04.04.2009
Сообщений: 438
По умолчанию

Если проект в Delphi.
На закладке Events, если отметить компонент TTreeView, есть событие OnDblClick. В правой колонке напротив строки щелкаем два раза. В тексте появляется заготовка процедуры, которая будет реагировать на двойное нажатие. В этой процедуре пишем.
Код:
procedure TForm1.TreeView1DblClick(Sender: TObject);
begin
  if TreeView1.Selected = nil then Exit;
  Label1.Caption := TreeView1.Selected.Text; //как пример
end;
Скандербег вне форума Ответить с цитированием
Старый 02.01.2010, 13:09   #3
beygul
Форумчанин
 
Аватар для beygul
 
Регистрация: 15.09.2008
Сообщений: 335
По умолчанию

Спасибо разобрался, только вот ещё что! нужно сделать так, чтобы при нажатии на одну ветвь древа - выполнялась какая то одна функция, а при нажатии на другую - другая функция, при нажатии на третью - третья функция... То есть у меня таких функций много... около 50 - и к каждой ветви должна быть своя функция...
beygul вне форума Ответить с цитированием
Старый 02.01.2010, 14:40   #4
Скандербег
Форумчанин
 
Регистрация: 04.04.2009
Сообщений: 438
По умолчанию

Знает.
Код:
...
implementation

{$R *.dfm}
//функции, которые нужно выполнять.
function Number1 : string;
begin
  result := 'Number1';
end;

function Number2 : string;
begin
  result := 'Number2';
end;
...
//в соответствующий ноуд вставляем ссылку на нужную функцию
procedure TMainForm.FormCreate(Sender: TObject);
var F : function:string;
begin
  F := Number1;
  TreeView1.Items.AddChildObject(nil, 'aaaa', @F);
  F := Number2;
  TreeView1.Items.AddChildObject(nil, 'bbbb', @F);
  ...
end;

procedure TMainForm.TreeView1DblClick(Sender: TObject);
var F : function:string;
begin
  if (TreeView1.Selected <> nil) and (TreeView1.Selected.Data <> nil) then begin
    F := TreeView1.Selected.Data; //присвоение переменной сохраненной функции
    Label3.Caption := F; //вызов функции
  end;  
end;
Скандербег вне форума Ответить с цитированием
Старый 02.01.2010, 14:58   #5
beygul
Форумчанин
 
Аватар для beygul
 
Регистрация: 15.09.2008
Сообщений: 335
По умолчанию

а можно поподробнее... мне не совсем понятно что для чего писать... я просто пока что нуб в этом деле, и понимаю мало... можно поподробнее пожалуйста?
beygul вне форума Ответить с цитированием
Старый 02.01.2010, 15:02   #6
Скандербег
Форумчанин
 
Регистрация: 04.04.2009
Сообщений: 438
По умолчанию

Задача неясна. Как, например, в задаче предполагается заполнять ветки дерева?
И насчет подробностей: какое место непонятно?
Скандербег вне форума Ответить с цитированием
Старый 02.01.2010, 15:09   #7
beygul
Форумчанин
 
Аватар для beygul
 
Регистрация: 15.09.2008
Сообщений: 335
По умолчанию

задача такова. если выбирается ветка под названием "красный" - то меняется Caption комопнента Label1. Если выбирается ветка под названием "синий" - то меняется Caption компонента Button1. И так далее... тоисть к каждой ветки должна быть своя функция! Вот...
beygul вне форума Ответить с цитированием
Старый 03.01.2010, 14:36   #8
TaYgA
Форумчанин
 
Аватар для TaYgA
 
Регистрация: 24.09.2009
Сообщений: 264
По умолчанию

beygul, всё очень просто:
Код:
  if TreeView.Items.Item[2].Selected=True then  // номер ветки "красный"
  Label1.Caption:=''; 
  if TreeView.Items.Item[3].Selected=True then  // номер ветки "синий"
  Button1.Caption:='';
Всё это прописываешь в процедуре TreeView1DblClick
TaYgA вне форума Ответить с цитированием
Старый 03.01.2010, 14:45   #9
beygul
Форумчанин
 
Аватар для beygul
 
Регистрация: 15.09.2008
Сообщений: 335
По умолчанию

спасибо! наконец то до меня дошло!!!!!!!
beygul вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц