Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с выделением в TreeView ПКМ, сбрасывается выделение 
V
    Опции темы
puZzo
Дата 23.2.2009, 07:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 12.3.2008

Репутация: нет
Всего: нет



Вообщем проблема такова:
Есть дерево

Корень 1
    Пункт 1
    Пункт 2
Корень 2
    Пункт 1
    Пункт2

Список загружается динамически, мне в ходе программы необходимо отслеживать "выделенный" Node, поэтому после заполнения дерева делаю:
Код

  TreeView.Selected := Items.Item[0];

работает до тех пор пока Items.Item не поставить на значение дочернего Node, т.е. если 1 первая ветка раскрывается, но все равно выделен элемент 0, а вот если 3 поставить, то выделяется "Корень 2"..

Если щелкнуть правой кнопкой мыши, то текущий пункт выделяется, но при нажатии любого пункта в PopupMenu выделение сбрасывается и остается на том Node, который был выделен до этого..
в PopupMenu должны происходить действия над выделенным пунктом, но при 
Код

  Label.Caption := TreeView.Selected.Text;

в метку выводится не то..

событие ContextPopup у TreeView обрабатываю так:
Код

var
  tmpNode: TTreeNode;
begin
  with MainForm.UsersTree do
  begin
    tmpNode := GetNodeAt(MousePos.X, MousePos.Y);
    if tmpNode <> nil then
      Selected := tmpNode;
  end;


Надеюсь все понятно объяснил..

С уважением.
PM ICQ   Вверх
morpheyushka
Дата 23.2.2009, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зеленый человек
**


Профиль
Группа: Участник
Сообщений: 563
Регистрация: 26.2.2008
Где: Киев

Репутация: 3
Всего: 8



Не знаю что у тебя не получилось - но вот код:
Код

unit Unit13;

interface

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

type
  TForm13 = class(TForm)
    TreeView1: TTreeView;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure TreeView1ContextPopup(Sender: TObject; MousePos: TPoint;
      var Handled: Boolean);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form13: TForm13;

implementation

{$R *.dfm}

procedure TForm13.Button1Click(Sender: TObject);
begin
  Form13.Caption := TreeView1.Selected.Text;
end;

procedure TForm13.FormCreate(Sender: TObject);
begin
  TreeView1.Selected := TreeView1.Items.Item[4];
end;

procedure TForm13.TreeView1ContextPopup(Sender: TObject; MousePos: TPoint;
  var Handled: Boolean);
var
  tmpNode: TTreeNode;
begin
  with Form13.TreeView1 do
  begin
    tmpNode := GetNodeAt(MousePos.X, MousePos.Y);
    if tmpNode <> nil then
      Selected := tmpNode;
  end;
end;
end.


И так по порядку

Цитата(puZzo @  23.2.2009,  07:49 Найти цитируемый пост)
работает до тех пор пока Items.Item не поставить на значение дочернего Node, т.е. если 1 первая ветка раскрывается, но все равно выделен элемент 0

Ничего подобного - выделяет любой подпункт - у меня в коде выделяется первый подпункт второй ветке
Код

TreeView1.Selected := TreeView1.Items.Item[4];

если поставить 1 - то выделит первый подпункт первой ветки - в общем то что тебе нужно!

Цитата(puZzo @  23.2.2009,  07:49 Найти цитируемый пост)
Если щелкнуть правой кнопкой мыши, то текущий пункт выделяется, но при нажатии любого пункта в PopupMenu выделение сбрасывается и остается на том Node, который был выделен до этого..
в PopupMenu должны происходить действия над выделенным пунктом, но при 

  Label.Caption := TreeView.Selected.Text;

в метку выводится не то..


Все отлично выделяется, ничего не сбрасывается...я выводил в кэпшен формы:
Код

Form13.Caption := TreeView1.Selected.Text;


забрасывает то что выделено!!!

ЗЫ Проект прикрепил - можешь скачать его и сам убедиться в работоспособности!

Присоединённый файл ( Кол-во скачиваний: 9 )
Присоединённый файл  TreeView.rar 189,47 Kb


--------------------
user posted image
Спасибо делается вот так!!!
PM MAIL WWW   Вверх
puZzo
Дата 23.2.2009, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 12.3.2008

Репутация: нет
Всего: нет



Мдаа..сам погнал..на стандартном TreeView действительно все работает как надо, а вот на RzTreeView увы..я не стал указывать, думал не так уж и много различий..вообщем прошу прощения за упущение:-[
PM ICQ   Вверх
morpheyushka
Дата 23.2.2009, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зеленый человек
**


Профиль
Группа: Участник
Сообщений: 563
Регистрация: 26.2.2008
Где: Киев

Репутация: 3
Всего: 8



Цитата(puZzo @  23.2.2009,  14:17 Найти цитируемый пост)
RzTreeView

увы нет под рукой такого компонента...не могу посмотреть


--------------------
user posted image
Спасибо делается вот так!!!
PM MAIL WWW   Вверх
puZzo
Дата 23.2.2009, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 12.3.2008

Репутация: нет
Всего: нет



Да ладно, сделал уже со стандартным, правда пришлось повозиться с оформлением..а это набор различных компонент, нацеленных в основном на улучшение интерфейса=) можете глянуть в сети Raize Components.
PM ICQ   Вверх
morpheyushka
Дата 23.2.2009, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зеленый человек
**


Профиль
Группа: Участник
Сообщений: 563
Регистрация: 26.2.2008
Где: Киев

Репутация: 3
Всего: 8



Сейчас попробую разобраться))))


--------------------
user posted image
Спасибо делается вот так!!!
PM MAIL WWW   Вверх
morpheyushka
Дата 23.2.2009, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зеленый человек
**


Профиль
Группа: Участник
Сообщений: 563
Регистрация: 26.2.2008
Где: Киев

Репутация: 3
Всего: 8



И так - нашел, скачал и установил Raize Components v. 5.0 - Code Gear 2007


Внизу прикрепил проект - в нем все выбирается, как нужно, даже при выделении правой кнопкой!!!
Для проверки еще и PopupMenu прикрутил - в общем, качай, смотри что не так и закрывай тему.

ЗЫ Для выделения Итема правой кнопочкой сделал обработчик события OnMouseDown. Все это в проекте

Добавлено через 21 секунду
Забыл прикрепить)))

Присоединённый файл ( Кол-во скачиваний: 10 )
Присоединённый файл  RzTV.rar 211,02 Kb


--------------------
user posted image
Спасибо делается вот так!!!
PM MAIL WWW   Вверх
puZzo
Дата 24.2.2009, 05:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 12.3.2008

Репутация: нет
Всего: нет



=) Спасибо=) Как с работы приду гляну;-)
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0514 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.