![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
Yurka |
![]()
Сообщение
#1
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 143 Пол: Мужской Репутация: ![]() ![]() ![]() |
Есть форма которая в одном столбике компонета stringgrid выводит названия городов, нужно из этих названий сделать ссылки которые открывают другую форму с информацией про соотвественный город.
Как сделать из названий ссылки? За вывод информации про каждый город отвечает одна стандартная форма, которая читает данные из файлов. |
![]() ![]() |
мисс_граффити |
![]()
Сообщение
#2
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
может быть, обрабатывать OnMouseDown? определять, по какому городу щелкнули...
-------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
volvo |
![]()
Сообщение
#3
|
Гость ![]() |
Цитата Есть форма которая в одном столбике компонета stringgrid выводит названия городов Вместо текста с названием города пускай она создает TLabel с нужной информацией (и со своим обработчиком OnClick), и вставляет его в грид. Тогда при клике на любой из этих Label-ов будет выполняться нужный обработчик без каких-либо дополнительных действий с твоей стороны. Как вставить один компонент в другой - см. DRKB. |
Yurka |
![]()
Сообщение
#4
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 143 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вместо текста с названием города пускай она создает TLabel с нужной информацией (и со своим обработчиком OnClick), и вставляет его в грид. Тогда при клике на любой из этих Label-ов будет выполняться нужный обработчик без каких-либо дополнительных действий с твоей стороны. Как вставить один компонент в другой - см. DRKB. Спасибо! Будем пробовать ![]() |
Yurka |
![]()
Сообщение
#5
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 143 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вместо текста с названием города пускай она создает TLabel с нужной информацией (и со своим обработчиком OnClick), и вставляет его в грид. Тогда при клике на любой из этих Label-ов будет выполняться нужный обработчик без каких-либо дополнительных действий с твоей стороны. Как вставить один компонент в другой - см. DRKB. Хмм... Не так всё просто как казалось. Может есть какой-нибудь другой подход? |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Поправка: вместо TLabel использовать TStaticText, потому как TLabel - не оконный компонент, и будет лежать под оконными компонентами, его на гриде просто не будет видно. А Статик - это компонент оконный, он прекрасно будет отображаться...
Цитата Хмм... Не так всё просто как казалось. Куда ж проще? Что, код показать? |
Yurka |
![]()
Сообщение
#7
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 143 Пол: Мужской Репутация: ![]() ![]() ![]() |
Поправка: вместо TLabel использовать TStaticText, потому как TLabel - не оконный компонент, и будет лежать под оконными компонентами, его на гриде просто не будет видно. А Статик - это компонент оконный, он прекрасно будет отображаться... Куда ж проще? Что, код показать? у меня идея такая возникла: создаю простую процедуру которая просто открывает нужную форму, например: Код procedure TForm1.Click(Sender: TObject); begin form2.Show; end; для собития onClick в stringgrid, то есть где бы не кликнул по ячейке нужная форма откроется, но тут возникают проблемы, как узнать номер ячейки по которой кликнули и как сделать активным для кликов только нужный столбец |
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
Цитата как узнать номер ячейки по которой кликнули В OnClick - никак. Надо ловить OnMouseDown, там определять, в какой ячейке пользователь нажал на кнопку мыши, запоминать координаты ячейки, а потом - ловить OnClick и обрабатывать запомненное раньше значение. Предупреждаю сразу: это - плохой метод. Ибо в Windows я привык, что если нажму мышой на контрол, а потом передумаю и нажатую мышь уведу с контрола - то клик не засчитывается. У тебя будет засчитываться. Это нехорошо. Чем тебе вот это решение не понравилось - понять не могу.... (Показать/Скрыть)
![]() |
Yurka |
![]()
Сообщение
#9
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 143 Пол: Мужской Репутация: ![]() ![]() ![]() |
В OnClick - никак. Надо ловить OnMouseDown, там определять, в какой ячейке пользователь нажал на кнопку мыши, запоминать координаты ячейки, а потом - ловить OnClick и обрабатывать запомненное раньше значение. Предупреждаю сразу: это - плохой метод. Ибо в Windows я привык, что если нажму мышой на контрол, а потом передумаю и нажатую мышь уведу с контрола - то клик не засчитывается. У тебя будет засчитываться. Это нехорошо. Чем тебе вот это решение не понравилось - понять не могу. Ваш код записал в delphi 7. Результат прикрепляю. Получается, что в StringGrid всё равно ссылки не создаются, ссылка создается вверху формы, может и напутал чего конечно... ![]() |
![]() ![]() |
![]() |
Текстовая версия | 13.07.2025 15:40 |