Форум: "Начинающим";
Текущий архив: 2007.11.04;
Скачать: [xml.tar.bz2];
ВнизTab Control -? Найти похожие ветки
← →
TIF © (2007-09-15 13:21) [0]Здравствуйте.
Вопрос такой: когда нажимаю TAB, то происходит фокусировка на Таб Контрол, и потом можно передвигаться по его вкладкам (с помоью "стрелка влево", "стрелка вправо"). Надо: как-то запретить такой переход, чтобы нельзя было с помощью клавиатуры переходить с одной вкладки на другую.
Пожалуйста, помогите, а то уже месяц бьюсь на этим, но никто не может ничего дельного сказать.
← →
{RASkov} © (2007-09-15 14:05) [1]> [0] TIF © (15.09.07 13:21)
Если я правильно понял, то можно так попробывать:TForm1 = class(TForm)
.....
TabControl1: TTabControl;
procedure FormCreate(Sender: TObject);
private
OldWndProc: TWndMethod;
procedure NewWndProc(var Mes: TMessage);
public
{ Public declarations }
end;
................
procedure TForm1.FormCreate(Sender: TObject);
begin
OldWndProc:=TabControl1.WindowProc;
TabControl1.WindowProc:=NewWndProc;
end;
procedure TForm1.NewWndProc(var Mes: TMessage);
begin
if Mes.Msg=WM_KEYDOWN then begin
with TWMKey(Mes) do
if (CharCode=VK_LEFT) or (TWMKey(Mes).CharCode=VK_RIGHT) then CharCode:=0 else OldWndProc(Mes);
end else OldWndProc(Mes);
end;
← →
{RASkov} © (2007-09-15 14:07) [2]> 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);
← →
{RASkov} © (2007-09-15 14:22) [3]Неее [1] не верно.... так как там вообще стрелки вправо-влево запрещаются во всем ТабКонтроле...)
← →
{RASkov} © (2007-09-15 14:25) [4]Хм... Впрочем, сейчас проверил.... нормально вроде....
хотя фик знает как там нужно автору :)
← →
TIF © (2007-09-28 14:10) [5]СПАСИБО! Этот способ работает, но возник ещё нюанс:
переход по вкладкам осуществляется при нажатии ctrl+tab и ctrl+tab+shift.
Хорошо бы заблокировтаь и их...
← →
clickmaker © (2007-09-28 14:45) [6]TCS_FOCUSNEVER ?
← →
Германн © (2007-09-28 15:20) [7]
> Пожалуйста, помогите, а то уже месяц бьюсь на этим
И стоило ли целый месяц так извращаться над стандартным поведением стандартного компонента?
← →
TIF © (2007-09-29 15:25) [8]
> TCS_FOCUSNEVER ?
а как это отслеживать?
← →
TIF © (2007-10-02 10:53) [9]не понял, как это можно отслеживать...
← →
clickmaker © (2007-10-02 11:15) [10]
> [9] TIF © (02.10.07 10:53)
это не нужно отслеживать.
Это стиль окна
const
TCS_FOCUSNEVER = $8000;
SetWindowLong(PageControl1.Handle, GWL_STYLE,
GetWindowLong(PageControl1.Handle, GWL_STYLE) or TCS_FOCUSNEVER);
← →
ASoft (2007-10-02 13:00) [11]
> TIF © (15.09.07 13:21)
может вам нужен просто запрет выбора другой закладки при определенном условии?
Действительно [7], зачем так извращаться...:)
← →
TIF © (2007-10-02 16:24) [12]
> может вам нужен просто запрет выбора другой закладки при
> определенном условии?
Вкладки закрыты (накрыты поверх) панелью, т.е. они невидимы, и щёлкать по ним нельзя, но мне нужно ещё запретить переход по вкладкам с помощью клавиатуры
← →
clickmaker © (2007-10-02 16:29) [13]
> [12] TIF © (02.10.07 16:24)
так а почему бы TabVisible = false не сделать?
← →
TIF © (2007-10-11 14:59) [14]
> так а почему бы TabVisible = false не сделать?
а прикол в том, что вкладок будет, например, 50 или больше. Придётся тогда прописывать визибл для каждой, а это просто ужас...
можно, конечно, выполнить поиск всех вкладок, но этот способ менее рациональный и будет выполняться много раз при работе с программой, а мне нужна блокировка, которая сработает лишь тогда, когда юзер попытается выполнить "незаконную" операцию, т.е. перейти на следующую вкладку. Если попыток не будет, то эта процедура вообще не выполнится.
← →
Игорь Шевченко © (2007-10-11 15:08) [15]
> когда юзер попытается выполнить "незаконную" операцию, т.
> е. перейти на следующую вкладку
может не мучить пользователя и использовать вместо таб-контрола что-то другое ?
← →
Dennis I. Komarov © (2007-10-11 15:12) [16]if not HaveRights(User) then .....Enable:=false; И все тут :)
← →
ASoft (2007-10-11 15:15) [17]
TIF © (11.10.07 14:59) [14]
> а мне нужна блокировка, которая сработает лишь тогда, когда
> юзер попытается выполнить "незаконную" операцию, т.е. перейти
> на следующую вкладку.
ну, может тогда OnChanging(Sender: TObject; var AllowChange: Boolean) подойдет?
> юзер попытается выполнить "незаконную" операцию
AllowChange:=False;
← →
TIF © (2007-10-12 12:08) [18]
> может не мучить пользователя и использовать вместо таб-контрола
> что-то другое ?
хотелось бы, но что можете предложить?
← →
Игорь Шевченко © (2007-10-12 12:24) [19]
> хотелось бы, но что можете предложить?
Могу предложить внятно описать задание
← →
TIF © (2007-10-13 15:26) [20]
> Могу предложить внятно описать задание
я уж старался, описал по-моему очень понятно. я уж всё равно решение нашёл :-)
← →
TIF © (2007-10-15 11:52) [21]
> я уж всё равно решение нашёл :-)
вроде :-)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.11.04;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.104 c