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

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

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


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

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

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

icq: 375449564
По умолчанию 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,198
Репутация: 2695
По умолчанию

Да пожалуйста :
Код:
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
Репутация: 437

icq: 375449564
По умолчанию

Михалыч, огромное спасибо.
_SERGEYX_ вне форума   Ответить с цитированием
Старый 19.07.2019, 11:43   #4
restar82
Пользователь
 
Регистрация: 15.10.2013
Сообщений: 10
Репутация: 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
Сообщений: 25,693
Репутация: 5617
По умолчанию

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

а если переписать так?
Код:
    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
Репутация: 10
Хорошо

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

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Правая кнопка мыши в 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


18:37.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.