Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.03.2012, 02:02   #1
vladislav_m
Пользователь
 
Регистрация: 29.03.2011
Сообщений: 62
По умолчанию попап меню

Здравствуйте.
Знающие люди помогите с вопросом. как можно реализовать следующее, хочу чтоб мой попап меню выпадал только на записях в таблице. а то на данный момент он и на заголовках полей выпадает.
vladislav_m вне форума Ответить с цитированием
Старый 18.03.2012, 08:56   #2
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Вопрос, конечно, интересный, если это TDBGrid. Компонент "себе на уме".
Если поразбираться то можно его пригнуть так:
- PopupMenu1.AutoPopup = False
- DBGrid1.OnMouseUp = Form1.DBGrid1MouseUp
- в коде:
Код:
type
  TDBGidWr = class(DBGrids.TDBGrid)
  end;

procedure TForm1.DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  P : TPoint;
begin
  if (Button = mbRight) and (Y > TDBGidWr(DBGrid1).RowHeights[0])
  then begin
    P := DBGrid1.ClientToScreen(Point(X, Y));
    PopupMenu1.Popup(P.X, P.Y);
  end;
end;
Прик вне форума Ответить с цитированием
Старый 18.03.2012, 11:03   #3
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Я вот так делал... Вот, нарыл в старом коде
Код:
procedure TForm1.DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if (Button = mbRight) then
  begin
    with (Sender as TDBGrid) do
      if (MouseCoord(ScreenToClient(Mouse.CursorPos).X,
          ScreenToClient(Mouse.CursorPos).Y).X > 0) and
        (MouseCoord(ScreenToClient(Mouse.CursorPos).X,
          ScreenToClient(Mouse.CursorPos).Y).Y > 0) then
        PopupMenu1.Popup(Mouse.CursorPos.X, Mouse.CursorPos.Y);
  end;
end;
_SERGEYX_ вне форума Ответить с цитированием
Старый 18.03.2012, 11:09   #4
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

_SERGEYX_, столбец индикаторный тоже обходим...
Да, пожалуй, ваш вариант получше будет.
Прик вне форума Ответить с цитированием
Старый 18.03.2012, 11:41   #5
vladislav_m
Пользователь
 
Регистрация: 29.03.2011
Сообщений: 62
По умолчанию

Прик, _SERGEYX_ - Большое Вам человеческое спасибо за внимание, и помощь!!

Прик - использовал ваш код для dbgrideh , работает. Спасибо!!

_SERGEYX_ - Спасибо Вам за код, его я на след dbgrid'aх потестирую.
vladislav_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Попап меню блокируют передачу фокуса на др. компоненты... chandrasecar Общие вопросы Delphi 9 24.03.2010 11:57
И сново sendMessage =) Как нажать пункт верхнего меню и меню правой кнопки? TwiX Win Api 9 15.10.2009 01:57
TreeView как сделать, чтобы попап-меню выпадало для определенных ветвей? KWN, lnc Помощь студентам 11 08.03.2009 01:01
TreeView как сделать, чтобы попап-меню выпадало для определенных ветвей? KWN, lnc Помощь студентам 4 03.03.2009 17:04
Меню с Items в виде набора Bitmap (как меню редактирования в Word'е) chandrasecar Мультимедиа в Delphi 7 14.01.2009 09:20