| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > TabControl - переименование закладки |
| Автор: aktuba 6.1.2007, 06:30 | ||
| Ситуация такая: мне необходимо в программе реализовать следующий момент. Пользователь дважды щелкает на закладке в TabControl (DblClick), после этого, на месте закладки появляется TEdit, в котором находится текст закладки. Пользователь редактирует текст, нажимает Enter или просто покидает TEdit (например, щелкает на другой компонент) и текст в закладке меняется на новый, из TEdit. Теперь вопросы: 1. Как отловить DblClick на закладке? 2. Как определить границы (TRect) закладки? Я использую стандартный TabControl, но, если кто-то знает другой компонент с такими свойствами - буду рад. Заранее благодарен.
|
| Автор: Sunvas 6.1.2007, 12:35 |
| хз. Я для начала я бы использовал PageControl. А вообще кажися в JVCL уже был компонент для реализации такиф "финтов" |
| Автор: aktuba 6.1.2007, 12:55 |
| Page Control не подходит. Программа уже есть и мне необходимо просто улучшать ее. А замена TabControl на PageControl - больщой объем работы... |
| Автор: MetalFan 6.1.2007, 13:51 |
| зачем лишние понты? сделай попап меню с пунктом "переименовать") |
| Автор: aktuba 6.1.2007, 13:54 |
| Не "понты", а требования заказчика =((( Вот хочется ему, чтобы прямо на вкладке переименовывать можно было... Добавлено @ 14:03 Хорошо, границы табов можно запоминать во время отрисовки. Это не проблема. Но, неужели никто не может подсказать, как отловить DblClick? |
| Автор: ivan219 6.1.2007, 14:16 |
Новерное тут надо решать с помощью сообщений Windows и смотреть геде в это время находится курсор. |
| Автор: MetalFan 6.1.2007, 14:20 | ||
да запросто!! можно через лок.хуки а можно и тупо WndProc переопределив вот простейший вариант:
|
| Автор: aktuba 6.1.2007, 14:31 |
| Metalfan: В обоих случаях надо определить, что DblClick был именно по закладке и определить по какой закладке. Это как решить? |
| Автор: MetalFan 6.1.2007, 14:34 |
| if AMessage.Msg = WM_LBUTTONDBLCLK then begin ShowMessage(tbc1.Tabs[tbc1.TabIndex]); end; ты попробуй! эт возникнет только при даблклике на закладке |
| Автор: December 6.1.2007, 14:37 |
| Как-то всё мегасложно получается. Давайте проще. 1) Ловим клик, запоминаем GetTickCount 2) Ловим ещё клик, проверяем GetTickCount-OldTickCount<Treshold 3) если да, то считаем DoubleClick пойманным Disclaimer: у меня это работало на PageControl, с TabControl не тестировал. |