![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Tab Control -? [D6, D7, 95/98, 2000, XP]
TIF © (2007-09-15 13:21:00)Здравствуйте.
Вопрос такой: когда нажимаю TAB, то происходит фокусировка на Таб Контрол, и потом можно передвигаться по его вкладкам (с помоью "стрелка влево", "стрелка вправо"). Надо: как-то запретить такой переход, чтобы нельзя было с помощью клавиатуры переходить с одной вкладки на другую.
Пожалуйста, помогите, а то уже месяц бьюсь на этим, но никто не может ничего дельного сказать.
TIF (2007-10-15 11:52:00) [1]
> я уж всё равно решение нашёл :-)
вроде :-)
TIF (2007-10-13 15:26:00) [2]
> Могу предложить внятно описать задание
я уж старался, описал по-моему очень понятно. я уж всё равно решение нашёл :-)
Игорь Шевченко (2007-10-12 12:24:00) [3]
> хотелось бы, но что можете предложить?
Могу предложить внятно описать задание
TIF (2007-10-12 12:08:00) [4]
> может не мучить пользователя и использовать вместо таб-контрола
> что-то другое ?
хотелось бы, но что можете предложить?
ASoft (2007-10-11 15:15:00) [5]
TIF © (11.10.07 14:59) [14]
> а мне нужна блокировка, которая сработает лишь тогда, когда
> юзер попытается выполнить "незаконную" операцию, т.е. перейти
> на следующую вкладку.
ну, может тогда OnChanging(Sender: TObject; var AllowChange: Boolean) подойдет?
> юзер попытается выполнить "незаконную" операцию
AllowChange:=False;
Dennis I. Komarov (2007-10-11 15:12:00) [6]if not HaveRights(User) then .....Enable:=false; И все тут :)
Игорь Шевченко (2007-10-11 15:08:00) [7]
> когда юзер попытается выполнить "незаконную" операцию, т.
> е. перейти на следующую вкладку
может не мучить пользователя и использовать вместо таб-контрола что-то другое ?
TIF (2007-10-11 14:59:00) [8]
> так а почему бы TabVisible = false не сделать?
а прикол в том, что вкладок будет, например, 50 или больше. Придётся тогда прописывать визибл для каждой, а это просто ужас...
можно, конечно, выполнить поиск всех вкладок, но этот способ менее рациональный и будет выполняться много раз при работе с программой, а мне нужна блокировка, которая сработает лишь тогда, когда юзер попытается выполнить "незаконную" операцию, т.е. перейти на следующую вкладку. Если попыток не будет, то эта процедура вообще не выполнится.
clickmaker (2007-10-02 16:29:00) [9]
> [12] TIF © (02.10.07 16:24)
так а почему бы TabVisible = false не сделать?
TIF (2007-10-02 16:24:00) [10]
> может вам нужен просто запрет выбора другой закладки при
> определенном условии?
Вкладки закрыты (накрыты поверх) панелью, т.е. они невидимы, и щёлкать по ним нельзя, но мне нужно ещё запретить переход по вкладкам с помощью клавиатуры
ASoft (2007-10-02 13:00:00) [11]
> TIF © (15.09.07 13:21)
может вам нужен просто запрет выбора другой закладки при определенном условии?
Действительно [7], зачем так извращаться...:)
clickmaker (2007-10-02 11:15:00) [12]
> [9] TIF © (02.10.07 10:53)
это не нужно отслеживать.
Это стиль окна
const
TCS_FOCUSNEVER = $8000;
SetWindowLong(PageControl1.Handle, GWL_STYLE,
GetWindowLong(PageControl1.Handle, GWL_STYLE) or TCS_FOCUSNEVER);
TIF (2007-10-02 10:53:00) [13]не понял, как это можно отслеживать...
TIF (2007-09-29 15:25:00) [14]
> TCS_FOCUSNEVER ?
а как это отслеживать?
Германн (2007-09-28 15:20:00) [15]
> Пожалуйста, помогите, а то уже месяц бьюсь на этим
И стоило ли целый месяц так извращаться над стандартным поведением стандартного компонента?
clickmaker (2007-09-28 14:45:00) [16]TCS_FOCUSNEVER ?
TIF (2007-09-28 14:10:00) [17]СПАСИБО! Этот способ работает, но возник ещё нюанс:
переход по вкладкам осуществляется при нажатии ctrl+tab и ctrl+tab+shift.
Хорошо бы заблокировтаь и их...
{RASkov} (2007-09-15 14:25:00) [18]Хм... Впрочем, сейчас проверил.... нормально вроде....
хотя фик знает как там нужно автору :)
{RASkov} (2007-09-15 14:22:00) [19]Неее [1] не верно.... так как там вообще стрелки вправо-влево запрещаются во всем ТабКонтроле...)
{RASkov} (2007-09-15 14:07:00) [20]> with TWMKey(Mes) do
> if (CharCode=VK_LEFT) or ( TWMKey(Mes).CharCode=VK_RIGHT)
> then CharCode:=0 else OldWndProc(Mes);
ошибки нет, но забыл убрать :)
with TWMKey(Mes) do
if (CharCode=VK_LEFT) or (CharCode=VK_RIGHT) then CharCode:=0 else OldWndProc(Mes);