Форум программистов, компьютерный форум, киберфорум
Наши страницы

Delphi

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 64, средняя оценка - 4.69
AliGin
0 / 0 / 0
Регистрация: 18.06.2009
Сообщений: 9
#1

Как узнать какой компонент сейчас в фокусе - Delphi

22.10.2009, 22:47. Просмотров 9228. Ответов 6
Метки нет (Все метки)

Привет. Такая задача. Мне по нажатию на кнопку нужно вставить в Memo опред. текст. На форме есть несколько Memo и Edit. При нажатии на кнопку нужно посмотреть, если в фокусе Memo - то вставить текст, если не - то Exit;
я думаю что-то типа такого

Delphi
1
2
3
4
5
6
7
8
9
procedure TForm1.Button1Click(Sender: TObject);
var
  Comp : TComponent;
begin
// вот здесь что написать. Что-то типа такого я думаю, но такой команды нету
  Comp := getFocusedCotrol;
  if Comp is TMemo then
    (Comp as TMemo).SelText := 'Текст';
end;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.10.2009, 22:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как узнать какой компонент сейчас в фокусе (Delphi):

Как узнать, нажата ли сейчас клавиша ctrl, alt или winkey? - Delphi
Я сделал программу, которая набирает текст, введенный в эту программу, эмитируя нажатия на клавиатуре (для копипаста туда, где копипаст не...

Какой edit в фокусе? - Delphi
У меня есть два edita. Подскажите пожалуйста как узнать в каком из них находится фокус?

Как узнать выбранный компонент - Delphi
Пишу прогу которая использует сканер штрих кодов. Штрих код сохраняется в базе (Firebird) в нескольких таблицах выборку из нужной таблиц я...

В какой компонент можно вставить несколько строчек... - Delphi
только таким образом, шоб строчки вносились целиком (как в NotePade, чёрт с ним что концовку видно не будет), а не разбивались по ширине...

Как увидеть какие библиотеки (только DLL) сейчас запущены ??? - Delphi
Подскажите пожалуйста! Как увидеть какие библиотеки (только DLL) сейчас запущены ??? Вот собственно и все, их нужно отображать в...

Как узнать, из какой таблицы взято поле активного ADOQuery? - Delphi БД
Доброго времени суток, уважаемые форумчане. Пожалуйста, помогите. Есть открытый ADOQuery с несколькими полями. Как узнать у поля к...

6
tiger2009
1 / 1 / 0
Регистрация: 26.09.2009
Сообщений: 10
22.10.2009, 23:21 #2
ну узнать я думаю можно вот так:
Delphi
1
2
3
4
5
6
7
procedure TForm1.Button1Click(Sender: TObject);
begin
if memo1.Focused then
memo2.Text:='dfgdfv'
else
Application.Terminate;
end;
0
AliGin
0 / 0 / 0
Регистрация: 18.06.2009
Сообщений: 9
23.10.2009, 00:46  [ТС] #3
Ну ....., ваша идея для меня не подходит, т.к. компоненты Memo создаются в рантайме, но она натолкнула меня на суперпростую идею. Я перебором все компонент узнаю какой из них в фокусе.

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm1.Button1Click(Sender: TObject);
var
  i : Integer;
begin
// вот здесь что написать. Что-то типа такого я думаю, но такой команды нету
  for i := 0 to ComponentCount-1 do
    begin
      if  (Components[i] is TMemo) then
        if  (Components[i] as TMemo).focused then
          (Components[i] as TMemo).SelText := 'Текст';
    end;
end;
Я просто думал, что есть команда эквивалентная FindComponent, только для поиска компонента с фокусом.

Добавлено через 1 час 20 минут
Не это тоже не катит, я когда нажимаю на кнопку, то фокус передается ей, и я не знаю в каком Memo фокус был только что, т.е. не знаю куда вставлять текст. Помогите плиз.
0
Lord_Voodoo
Супер-модератор
8596 / 2215 / 61
Регистрация: 07.03.2007
Сообщений: 10,766
Завершенные тесты: 1
23.10.2009, 01:04 #4
AliGin, я бы сделал так:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  public
    { Public declarations }
    tmp : TControl;
  end;
...
procedure TForm1.Edit1Enter(Sender: TObject);
begin
   tmp := Sender as TControl;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  if (tmp.ClassNameIs('TEdit')) then
    (tmp as TEdit).Text := 'Text'
  else if (tmp.ClassNameIs('TMemo')) then
    (tmp as TMemo).Text := 'Text';
end;
назначил нужным компонентам событие OnEnter и запоминал, где был фокус...
1
AliGin
0 / 0 / 0
Регистрация: 18.06.2009
Сообщений: 9
23.10.2009, 01:12  [ТС] #5
VoodooMan, спасибо, я попробую, у меня мемо создаются в рантайме, я поставлю тода при создании компонента обрабочик на OnEnter().
0
Lord_Voodoo
Супер-модератор
8596 / 2215 / 61
Регистрация: 07.03.2007
Сообщений: 10,766
Завершенные тесты: 1
23.10.2009, 01:13 #6
AliGin, ну я тоже думаю, что это уже мелкие нюансы, причем легко разрешимые
0
Shaggy
4 / 4 / 0
Регистрация: 26.05.2007
Сообщений: 13
23.10.2009, 04:17 #7
Delphi
1
2
3
If Assigned(Screen.ActiveControl) And (Screen.ActiveControl Is TMemo)
Then
  TMemo(Screen.ActiveControl).SelText:='Тра-та-та';
0
23.10.2009, 04:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.10.2009, 04:17
Привет! Вот еще темы с ответами:

Как узнать какой компонент в фокусе - C++ Builder
Всем доброго времени суток. Кто может подсказать как определить какой компонент сейчас находится в фокусе?

Как узнать, находится ли компонент в фокусе - C#
Как узнать находится ли компонент в фокусе? Заранее спасибо

Как узнать какой из элементов сейчас видно? - jQuery
Java Scripts не знаю вовосе но всё же вот понадобился Делаю автоматический регер и во возникла проблемка, а именно как узнать какой из...

Как узнать, какой текст в браузере сейчас выделен? - JavaScript
Как узнать, какой текст в браузере сейчас выделен? Вроде как надо использовать document.selection, только вот не понял как. В...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.