Дельфи TreeView - создайте узлы во времени выполнения

Может кто-либо говорить мне, как сделать следующее:

  • Создайте узлы
  • Позвольте/Запретите Отдельные Узлы

Я хочу знать, как сделать вышеупомянутое во времени выполнения Приложения, например, в событии Form's OnCreate.

9
задан Remus Rigo 20 May 2012 в 12:11
поделиться

2 ответа

Ваш последний редактор делает вещи более четкими.

В основном вы смущены, и вы уже получаете то, что хотите.

1239867980191 Миллисекунды, поскольку эпоха переводится в четверг, 16 апреля 2009 года, в 7: 46: 20.191 в часовом поясе GMT. Очень же момент переводит в тот же день, но 8: 46: 20.191 в часовом поясе GMT ​​+ 01. Если ваша входная строка указана «7: 46: 20.191», а вы действительно получили 1239867980191 из Date.gettime () , затем поздравляю, код анализа понимал ваш «7: 46: 20.191», что следует интерпретировать в Часовой пояс GMT и сделал это правильно.

Если после этого Вы получаете «8:46:20» при печати, это только потому, что вы используете часовой пояс GMT + 01 для отображения этого мгновенного. Обратите внимание, что строка содержит GMT + 100 точно, чтобы уведомить вас, что он использует этот часовой пояс для целей отображения. Мгновенный , какой экземпляр дата представляет собой, тем не менее, точно в том, что вы хотите, чтобы он содержен. Помните, что экземпляр экземпляр представляет собой мгновение во времени, для которых не применяется понятие часового пояса: часовые пояса используются для преобразования моментов в элементы календаря (дни, часы ...) и обратно.

Для преобразования дата к отображенной строке, используйте DateTimeFormat.Format (дата, часовой пояс) , который позволяет указать, какой часовой пояс вы хотите использовать для этой строки.

-121--3723785-

Добавление узлов:

function FindRootNode(ACaption: String; ATreeView: TTreeView): TTreeNode; 
var LCount: Integer; 
begin 
  result := nil; 
  LCount := 0; 
  while (LCount < ATreeView.Items.Count) and (result = nil) do 
  begin 
    if (ATreeView.Items.Item[LCount].Text = ACaption) and (ATreeView.Items.Item[LCount].Parent = nil) then 
      result := ATreeView.Items.Item[LCount]; 
    inc(LCount); 
  end; 
end;

...

var LDestNode: TTreeNode; 
begin 
  LDestNode := FindRootNode('category', TreeView1); 
  if LDestNode <> nil then 
  begin 
    TreeView1.Items.AddChild(LDestNode, 'node1'); 
    TreeView1.Items.AddChild(LDestNode, 'node2'); 
  end; 
end;

(см. Также http://msdn.microsoft.com/en-us/library/70w4awc4.aspx )

Разборка Узел

Насколько я знаю, нет способа отключить Treenode. Только что вы можете сделать, это перехватить BeForeslect-событие и отменить выбор там. Не так приятно.

9
ответ дан 4 December 2019 в 08:33
поделиться

@remus, здесь у вас есть простой пример добавления узлов.

Добавление корневого узла (Уровень 0)

Var
  Node : TTreeNode;
begin
   //function TTreeNodes.Add(Sibling: TTreeNode; const S: string): TTreeNode;
   Node:=TreeView1.Items.Add(nil,'My Root Node') ;
   Node.ImageIndex:=0;//now you can change any  property of the node
end;

Добавление ребенка (уровень> 0)

//in this case we add a child node in the current selected node.
    Var
      Node : TTreeNode;
    begin       
       if TreeView1.Selected= nil then exit;       
       Node:=TreeView1.Items.AddChild(TreeView1.Selected,'My Child Node') ;
       Node.ImageIndex:=0;//now you can change any property of the node
    end;

Добавление многих узлов

Если вы хотите добавить множество узлов, используя петля или что-то еще, что вы должны использовать Начать, прежде чем внести изменения до дерева. Когда все изменения Заполните, вызовите endupdate, чтобы показать изменения на экране. Beginupdate и Endupdate предотвратить чрезмерные перерезания и ускорить время обработки, когда Узлы добавляются, удалены или вставлены.

Var
  Node : TTreeNode;
  i    : Integer;
begin
  TreeView1.Items.BeginUpdate;
  try
   for i:=1 to 100 do
   begin
    Node:=TreeView1.Items.Add(nil,'My Root Node '+IntToStr(i)) ;
    Node.ImageIndex:=0;
   end;
  finally
  TreeView1.Items.EndUpdate;
  end;
end;

Об отключитех узла, не существует никакого недвижимости.

14
ответ дан 4 December 2019 в 08:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: