Форум программистов, компьютерный форум, киберфорум
Наши страницы

Lazarus

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 1, средняя оценка - 5.00
Hretgir
201 / 75 / 2
Регистрация: 25.01.2012
Сообщений: 2,774
Записей в блоге: 20
#1

Всплывающее сообщение при выборе ячейки TStringGrid - Lazarus

22.12.2016, 15:25. Просмотров 268. Ответов 6
Метки нет (Все метки)

Скажите пожалуйста, можно-ли сделать всплывающее сообщение при выборе ячейки таблицы. Если да, то нужно, чтобы сообщение всплывало возле курсора. Заранее благодарен.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2016, 15:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Всплывающее сообщение при выборе ячейки TStringGrid (Lazarus):

Залить картинку-значок в ячейки заглавного столбца TStringGrid - Lazarus
Нужно загрузить значки в ячейки заглавного столбца TStringGrid, подскажите процедуру или операцию, через которую можно это сделать.

Всплывающее сообщение - Delphi
Подскажите пожалуйста, как сделать так чтобы вместо сообщения Is not a valid floating point value выводилось свое сообщение например...

Исключение при работе с TStringGrid - Lazarus
Дело в том, что в при событии StringGrid1DblClick программа выводит в консоль номер столбца и строки, по которым произошёл клик. И вот...

Какое событие генерируется при нажатии на ячейке TStringGrid? - Lazarus
подскажите, можно ли сделать так, чтобы при нажатии на ячейке TStringGrid получалось событие, которое можно обрабатывать так-же, как и...

Всплывающее сообщение\окно определенному пользователю Delphi - Delphi
Добрый день ув.форумчане. Подскажите пожалуйста как реализовать всплывающее окно или сообщение для определенного пользователя, программа...

как нарастить переменную при выборе определённой строки в Combobox - Delphi
как нарастить переменную при выборе определённой строки в Combobox !! очень нужно помигите !! спасибо

6
Joey
Модератор
696 / 436 / 117
Регистрация: 05.05.2015
Сообщений: 2,557
Записей в блоге: 1
22.12.2016, 22:40 #2
Hretgir, на вкладке CommonControls есть PopupNotifier. У TStringGrid есть свойство OnClick:
Delphi
1
2
3
4
procedure TForm1.StringGrid1Click(Sender: TObject);
begin
  PopupNotifier1.ShowAtPos(Mouse.CursorPos.x, Mouse.CursorPos.y);
end;
1
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
24632 / 16302 / 5009
Регистрация: 22.10.2011
Сообщений: 28,867
Записей в блоге: 5
22.12.2016, 23:09 #3
Joey, это некорректное решение. Окно при его использовании появится, даже если кликнуть на свободную от ячеек область грида. Вопрос был про выбор ячейки.
2
Joey
Модератор
696 / 436 / 117
Регистрация: 05.05.2015
Сообщений: 2,557
Записей в блоге: 1
22.12.2016, 23:15 #4
volvo, Вы правы, надо на OnSelectCell, судя по всему (теперь при щелчке на Fixed ячейках ничего не происходит, только при выделении ячейки и на старте программы, ну это Hretgir уже сам разберется)
1
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
24632 / 16302 / 5009
Регистрация: 22.10.2011
Сообщений: 28,867
Записей в блоге: 5
23.12.2016, 12:42 #5
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Joey Посмотреть сообщение
и на старте программы
Вот чтобы избежать этого самого поведения, что при старте программы срабатывает OnSelectCell, нужно не писать действия в обработчике OnSelectCell, а назначить свой метод:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
type
  { TForm1 }
  TForm1 = class(TForm)
    // тут хозяйничает сама IDE
 
  private
    // Добавляем свой метод, по сигнатуре совпадающий с OnSelectCell
    procedure MySelectCell(Sender: TObject; aCol, aRow: Integer;
      var CanSelect: Boolean);
  public
  end;  
 
// ...
 
procedure TForm1.MySelectCell(Sender: TObject; aCol, aRow: Integer;
  var CanSelect: Boolean);
begin
  PopupNotifier1.ShowAtPos(Mouse.CursorPos.x, Mouse.CursorPos.y);
end; 
 
procedure TForm1.FormShow(Sender: TObject);
begin
  StringGrid1.OnSelectCell := @MySelectCell; // и назначаем его при показе формы
end;
, тогда все станет работать, как и было задумано: при старте ничего отображаться не будет.
0
Hretgir
23.12.2016, 14:39  [ТС]
  #6

Не по теме:

Хотел сегодня заняться, но пришлось ехать наколенники покупать, маску хамелеон 2900р нормально, я в старом хамелеоне года 4 проработал, пока уезжая с командировки не оставил его в вагончике, объект доделали - я последний уезжал, думал всё норм будет поехал к родственникам в гости заехал, приехал, а хамелеона тю-тю. Такой-же взял, только дизайн изменился. Сейчас в ночь, а с завтрашнего начну делать. Уже начинал, но пока кроме пролистывания отлаженной заготовки и её разбора не пошло, пока так - читал, вспоминал что к чему. Всем спасибо за участие.

0
Joey
Модератор
696 / 436 / 117
Регистрация: 05.05.2015
Сообщений: 2,557
Записей в блоге: 1
23.12.2016, 18:35 #7
Цитата Сообщение от Hretgir Посмотреть сообщение
Хотел сегодня заняться, но пришлось ехать наколенники покупать, маску хамелеон 2900р нормально, я в старом хамелеоне года 4 проработал, пока уезжая с командировки не оставил его в вагончике, объект доделали - я последний уезжал, думал всё норм будет поехал к родственникам в гости заехал, приехал, а хамелеона тю-тю. Такой-же взял, только дизайн изменился. Сейчас в ночь, а с завтрашнего начну делать. Уже начинал, но пока кроме пролистывания отлаженной заготовки и её разбора не пошло, пока так - читал, вспоминал что к чему. Всем спасибо за участие.
Я, конечно, почти ничего не понял) но не за что

Цитата Сообщение от volvo Посмотреть сообщение
Вот чтобы избежать этого самого поведения, что при старте программы срабатывает OnSelectCell
Можно просто на старте избегать этого и все
Например, объявляем глобальную переменную:
Delphi
1
2
var
vstarted: boolean = false;
и при создании формы
Delphi
1
if not vstarted then vstarted := true;
А в обработчике OnSelectCell просто проверять сперва:
Delphi
1
2
if vstarted then
PopupNotifier1.ShowAtPos(Mouse.CursorPos.x, Mouse.CursorPos.y);
Это так, 1. для новичков, 2. как альтернатива, 3. для тех, кто не справится с назначением обработчиков событий (не самая тривиальная задача). Но метод volvo, конечно, лучше, избавляет от лишней операции проверки при каждом вызове обработчика.
0
23.12.2016, 18:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.12.2016, 18:35
Привет! Вот еще темы с ответами:

Автозапуск макроса при выборе ячейки - VBA
Добрый день, уважаемые форумчане. Подскажите пожалуйста, как вызывать макрос при изменении активной ячейки на листе? Необходимо...

Присвоение действия при выборе ячейки - VBA
Всем добрый день! Я не силен в VBA, поэтому прошу вашей помощи. Сейчас занимаюсь созданием зависимостей (дерева) и мне нужно, чтобы...

Показ скрытых колонок при выборе ячейки - MS Excel
Добрый день. Интересует механика работы следующего: Есть, к примеру, столбцы B и С. Ячейки B2 и C2 объединены в одну. Как сделать так,...

Показать MsgBox при выборе ячейки листа - VBA
Доброго времени суток! Хотел спросить как вывести MSGBOX при выборе ячейки в Excel? Нашел вот такой код, поместил его на лист 1 и он...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.