Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > Delphi > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 06.02.2010, 19:18   #1
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,517
По умолчанию DBTreeView и правая кнопка мыши

Всем привет.
В различных DBTreeView есть свойство RightClickSelect (True/False).
Т.е., как я понимаю, разрешить или не разрешить выделение узла правой кнопкой мыши. Но узел вроде бы выделяется, но фактически в таблице курсор остается на той же записи (при потере фокуса DBTreeView выделяется предыдущая запись). При вызове PopUpMenu это вводит в заблуждение, т.к. действие совершается не той записью, которая вроде бы выделена.

Пробовал JvDBTreeView и dxDBTreeView. Проблема та же.

В DTTableTree есть свойство
DTTableTree1.TreeOptions.SelectionO ptions:=[toRightClickSelect];
и правая кнопка работает как положено, но этот компонент мне не подходит, там другие проблемы.

Как сделать, чтобы правая кнопка мыши выделяла узел как и левая?
Спасибо.
_SERGEYX_ вне форума Ответить с цитированием
Старый 06.02.2010, 20:32   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Да пожалуйста :
Код:
procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var tp: TPoint;
begin
tp:=TreeView1.ClientToScreen(Point(X, Y));
if (TreeView1.GetNodeAt(X, Y)<>nil) then
TreeView1.Selected:=TreeView1.GetNodeAt(X, Y);
//if (Button=mbRight) then
//(treemenu as TPopupMenu).Popup(tp.X, tp.Y);
end;
mihali4 вне форума Ответить с цитированием
Старый 07.02.2010, 10:59   #3
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,517
По умолчанию

Михалыч, огромное спасибо.
_SERGEYX_ вне форума Ответить с цитированием
Старый 19.07.2019, 11:43   #4
restar82
Пользователь
 
Регистрация: 15.10.2013
Сообщений: 10
По умолчанию

Добрый день!

народ подскажите пожалуйста где ошибка?

Код:
procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);

var
   pp:TPoint;
begin 
  if Button = mbRight then
  begin
    if assigned(TreeView1.GetNodeAt(X, Y)) then
    begin
      TreeView1.Selected := TreeView1.GetNodeAt(X, Y);
      pp := TreeView1.ClientToScreen(Point(X,Y));
      pm2.Popup(pp.X,pp.Y);
    end
    else
    begin
      TreeView1.Selected :=nil;
    end;
  end;
end;

ругается в этом месте pp := TreeView1.ClientToScreen(Point(X,Y) );
[dcc32 Error] FMain.pas(2087): E2029 ')' expected but ',' found

версия Delphi 10.2
restar82 вне форума Ответить с цитированием
Старый 19.07.2019, 12:00   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,260
По умолчанию

не вижу криминала.

а если переписать так?
Код:
    begin
      TreeView1.Selected := TreeView1.GetNodeAt(X, Y);
      pp.X := X;
      pp.Y := Y;
      pp := TreeView1.ClientToScreen( pp );
      pm2.Popup(pp.X,pp.Y);
    end
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.07.2019, 12:34   #6
restar82
Пользователь
 
Регистрация: 15.10.2013
Сообщений: 10
Хорошо

так работает, спасибо большое
restar82 вне форума Ответить с цитированием
Старый 19.07.2019, 12:50   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,061
По умолчанию

Возможно еще одноименная Point есть где-то, кроме Classes или Types. И берет не то. Можно проверить, подставив в код:
Код:
pp := TreeView1.ClientToScreen(Classes.Point(X,Y));
ну или где этот point в 10-ке. Или где-то сам такой идентификатор используешь
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Правая кнопка мыши в RichEdit DimOn4Ik Общие вопросы Delphi 6 08.06.2010 20:35
И снова левая и правая кнопка мыши (Delphi 7) alxd Помощь студентам 6 25.09.2009 14:10
OnClick - правая или левая кнопка мыши Vadim_S Общие вопросы Delphi 8 16.09.2009 18:15
кнопка мыши Drive Общие вопросы C/C++ 4 24.12.2008 00:40
нажата ли кнопка мыши? VDLab Общие вопросы Delphi 2 15.11.2006 01:59


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS