| 
| 
 | Вопрос # 2 167/ вопрос открыт / | 
 |  Здравствуйте, уважаемые эксперты!Как запретить установку фокуса на всех компонентах на форме, в том числе на главном меню?
 
|  |   Вопрос задал: Евгений Eklmn (статус: Посетитель)Вопрос отправлен: 6 декабря 2008, 19:46
 Состояние вопроса: открыт, ответов: 2.
 |  Ответ #1. Отвечает эксперт: Nasgool Здравствуйте, Трофимов Евгений!Все ОЧЕНЬ просто: Form1.Enabled := False;
 
|  | Ответ отправил: Nasgool (статус: 2-ой класс)Время отправки: 6 декабря 2008, 19:56
 
 |  Ответ #2. Отвечает эксперт: Anderson N.N Здравствуйте, Трофимов Евгений!Выдели все компоненты и поставь у всех свойство TabStop в false
 
|  | Ответ отправил: Anderson N.N (статус: 2-ой класс)Время отправки: 6 декабря 2008, 21:38
 Оценка за ответ: 5
 |  
 Мини-форум вопросаВсего сообщений: 5; последнее сообщение — 7 декабря 2008, 00:34; участников в обсуждении: 4. 
|   | Death_Master (статус: Посетитель), 6 декабря 2008, 19:54 [#1]:Изменение TabStop на False подходит? В крайнем случае можно отключть Enabled для нужного компонента...
 //---- я пока редактировал -- не успел ------
 Обычно захожу по ночам... (60-70%)Если нужно что-то написать, то беру оборудованием, деньгими и пивом(при личной встрече)...
 P.S. Помогаю и рассказываю бесплатно ^_^.....Nyaaa!
 |  
|   | Nasgool (статус: 2-ой класс), 6 декабря 2008, 20:02 [#2]:Но при этом вы не сможете даже системными иконками воспользоваться (свернуть и закрыть). если эти функции необходимы нужно Enabled поочередно в ложь выставить на всех компонентах формы. |  
|   | Евгений Eklmn (статус: Посетитель), 6 декабря 2008, 22:05 [#3]:Хотелось бы, чтобы компоненты не получали фокус не только по нажатию на Tab, но и при нажатии на клавиши право, лево и т.д. Ни как не могу этого добиться у TreeView. Генерация случайных чисел - слишком важный вопрос, чтобы оставлять его на волю случая. (Роберт Ковзю, Окриджская лаборатория) |  
|   | Anderson N.N (статус: 2-ой класс), 6 декабря 2008, 23:12 [#4]:По событию OnEnter компонента TreeView передавай фокус на следующий элемент в таб последовательности
 Например если это Edit1 то:
 
 procedure TForm1.TreeView1Enter(Sender: TObject);
 begin
 Edit1.SetFocus;
 end;
 
 След. элемент это тот на который перейдет фокус при нажатии таб
 Вообще Тав список можно просмотрет щелкнув пр кнопкой мыши
 по форме и выбрав пункт Tab Order
 |  
|   | Anderson N.N (статус: 2-ой класс), 7 декабря 2008, 00:34 [#5]:В предыдущем варианте не забуь TabStop в False у TreeView 
 Вот еще легче в Tab последовательности до и после TreeView
 поставь элементы  Memo или Edit. С них клавишами влево, вправо не уйдешь
 и не забудь
 TreeView1.TabStop:=false;
 
 
 
 А вот вариант получше еси след после TreeView компонент Edit1
 хотя можешь заменить его любым
 Создай HandleMessages как метод формы(ну добавь в раздел private или public)
 Например так
 
 public
 { Public declarations }
 procedure sendMessage(var Msg: tMsg;var Handled: Boolean);
 end;
 
 и затем назначьте его Application.HandleMessages.
 
 procedure TForm1.HandleMessages(var Msg: tMsg; var Handled: Boolean);
 begin
 if (Msg.Message = WM_KeyDown) and
 (Msg.wParam in [VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT]) then
 begin
 case Msg.wParam of
 VK_UP: ;
 VK_DOWN: ;
 VK_LEFT: ;
 VK_RIGHT: Edit1.SetFocus;
 end;
 Handled := True;
 end;
 end;
 
 procedure TForm1.FormCreate(Sender: TObject);
 begin
 Application.OnMessage := HandleMessages;
 end;
 
 P.S можно вообще вытаскивать программно список ТабОрдеров и если след./ пред
 элемент равен TTreeView то переходить не на след а через элемент
 НО код еще увеличится, да геморр но если заинтересовал  пиши в личку
 
 __________________________________________________________________________
 Вариантов туча выбирай по душе. И я не говорю что перечислил все
 |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |