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

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

22.10.2009, 22:47. Просмотров 9853. Ответов 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?
Я сделал программу, которая набирает текст, введенный в эту программу, эмитируя...

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

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

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

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

Как узнать, из какой таблицы взято поле активного 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
Супер-модератор
8607 / 2228 / 133
Регистрация: 07.03.2007
Сообщений: 10,803
Завершенные тесты: 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
Супер-модератор
8607 / 2228 / 133
Регистрация: 07.03.2007
Сообщений: 10,803
Завершенные тесты: 1
23.10.2009, 01:13 #6
AliGin, ну я тоже думаю, что это уже мелкие нюансы, причем легко разрешимые
0
Shaggy
4 / 4 / 2
Регистрация: 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
Привет! Вот еще темы с решениями:

Как узнать какой компонент в фокусе
Всем доброго времени суток. Кто может подсказать как определить какой компонент...

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

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

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


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

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

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