Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.054 c
2-1191946252
Err_f
2007-10-09 20:10
2007.11.04
Как с помощью Delphi можно связаться с сервером точного времени?


3-1182775113
dest81
2007-06-25 16:38
2007.11.04
права доступа в ib


15-1190862990
Slider007
2007-09-27 07:16
2007.11.04
С днем рождения ! 27 сентября 2007 четверг


2-1192260881
031178
2007-10-13 11:34
2007.11.04
Дерево TreeView


2-1192101763
xayam
2007-10-11 15:22
2007.11.04
Как добавить символ перед





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский