Главная страница
    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.047 c
15-1191450765
Суслик
2007-10-04 02:32
2007.11.04
adwords от гугл


2-1192163293
Stud
2007-10-12 08:28
2007.11.04
Где найти алгоритм перебора?


5-1162477747
Делфи
2006-11-02 17:29
2007.11.04
TTrackBar


6-1172567282
paradox01
2007-02-27 12:08
2007.11.04
Файл через сокет


15-1191400955
Slimer
2007-10-03 12:42
2007.11.04
AT & WM2003





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский