Topic: Как программно открыть TreeView и выделить нужный узел

Как программно открыть TreeView и выделить нужный узел по его id из таблицы базы данных?

2 (edited by k245 2020-07-21 12:20:40)

Re: Как программно открыть TreeView и выделить нужный узел

Получить номер строки по ID:

function GetRowByID( ATable:TObject; AID: integer ):integer;
// Получить по ID элемента дерева находит номер строки; работает для таблицы и дерева, так как дерево является наследником таблицы
var
  i :integer;
  tmpTable: TdbStringGridEx;
begin
  tmpTable := TdbStringGridEx(ATable);
  Result := -1;
  for i := 0 to tmpTable.RowCount-1 do
  begin
    if tmpTable.dbIndexToID(i) = AID then
    begin
      result := i;
      break;
    end;
  end
end;

Раскрыть дерево в нужном узле:


Form1.TreeView1.Expanded[Index] := True;
Визуальное программирование: блог и телеграм-канал.

Re: Как программно открыть TreeView и выделить нужный узел

Выдает ошибку: tmpTable: TStringGridEx; - неизвестный тип.

Re: Как программно открыть TreeView и выделить нужный узел

abgroup-artur wrote:

Выдает ошибку: tmpTable: TStringGridEx; - неизвестный тип.

Извините, нужно использовать класс - TdbStringGridEx.  Исправил.

Визуальное программирование: блог и телеграм-канал.

Re: Как программно открыть TreeView и выделить нужный узел

Здравствуйте. Спаси бо за ответ. А как мне еще и подсветить выбрав эту строку в дереве, что бы сработала ф-ия нажатия?

Re: Как программно открыть TreeView и выделить нужный узел

Чтобы выбрать (подсветить) строку используйте свойство SelectedRow

Form1.TreeView1.SelectedRow := tmpRow;

Функции (метода) нажатия у дерева нет. Есть события на действия мыши и клавиатуры.  Если у вас есть обработчики этих событий, вы можете вызывать их как обычные процедуры.

Визуальное программирование: блог и телеграм-канал.

Re: Как программно открыть TreeView и выделить нужный узел

Спасибо. Ваша ф-ия и со связанным Grid работает отлично!!!

     Row_coin:=GetRowByID( Form2.TableGrid1,Form1.TableGrid1.dbItemID );
     Form2.TableGrid1.SelectedRow := Row_coin;
     Form2_TableGrid1_OnClick ( Form2.TableGrid1 );