Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.02.2015, 11:11   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,899
Вопрос ShowModal и SetFocus Delphi XE7

Доброго времени суток!
Заметил, что на форме вызванной с помощью ShowModal не работает SetFocus, например у TEdit или TMemo1 и подозреваю, что у всего остального. Что это за нововведение такое и как с ним бороться?
Shouldercannon вне форума Ответить с цитированием
Старый 21.02.2015, 14:31   #2
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

А SetMouseFocus работает?
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 21.02.2015, 15:00   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Что это за нововведение такое и как с ним бороться?
Не знаю насчет нововведения, но вот вопрос - где ты SetFocus вызываешь?
К примеру если вызвать в OnShow то все работает. Возможно ты пытаешься приписать вызов фокуса после ShowModal или до, тогда конечно облом )
И вполне обьяснимый.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.02.2015, 16:24   #4
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,899
По умолчанию

Один и тот же код в Delphi 7 и Delphi XE7
Код:
...
var
  Form3: TForm3;

implementation

{$R *.dfm}

uses Unit4;

procedure TForm3.Button1Click(Sender: TObject);
begin
  Form4.ShowModal;
end;
...
var
  Form4: TForm4;

implementation

{$R *.dfm}

procedure TForm4.Button1Click(Sender: TObject);
begin
  MessageBox(0, 'Пароль не указан', 'PChar(ProgramName)', MB_ICONError);
  Edit1.SetFocus;
  Exit;
end;
Стоит в Delphi XE7 убрать
Код:
MessageBox(0, 'Пароль не указан', 'PChar(ProgramName)', MB_ICONError);
И фокус сразу устанавливается. В Delphi 7 оба варианта работают.
Shouldercannon вне форума Ответить с цитированием
Старый 21.02.2015, 16:33   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Что-то мне этот пример совсем не нравится...
Т.е. ты хочешь сказать что в ХЕ, после вызова MessageBox-а первый эдит не получает фокус?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.02.2015, 17:04   #6
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,899
По умолчанию

И второй TEdit и TMemo, да что угодно.

Последний раз редактировалось Shouldercannon; 21.02.2015 в 17:24.
Shouldercannon вне форума Ответить с цитированием
Старый 21.02.2015, 17:09   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

MessageBox(Handle, 'Пароль не указан', 'PChar(ProgramName)', MB_ICONError);
И фокус нормально будет устанавливаться
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 21.02.2015, 21:10   #8
xxbesoxx
Участник клуба
 
Аватар для xxbesoxx
 
Регистрация: 10.08.2010
Сообщений: 1,401
По умолчанию

Цитата:
Заметил, что на форме вызванной с помощью ShowModal не работает SetFocus, например у TEdit или TMemo1
Перед вызова надо посмотреть свойства TabOrder если TEdit --TabOrder =0 тогда фокус будет на Edit -е . А если TMemo1--TabOrder =0 ... в общем для просмотра табуляций на визуальный компонента пользуюсь CnWizards http://www.cnpack.org/index.php?lang=en
Изображения
Тип файла: jpg Taborder.jpg (58.1 Кб, 122 просмотров)
xxbesoxx вне форума Ответить с цитированием
Старый 21.02.2015, 21:27   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Перед вызова надо посмотреть свойства TabOrder если TEdit --TabOrder =0 тогда фокус будет на Edit -е . А если TMemo1--TabOrder =0 ... в общем для просмотра табуляций на визуальный компонента пользуюсь CnWizards
В огороде бузина, а в Киеве дядька
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 21.02.2015, 21:42   #10
xxbesoxx
Участник клуба
 
Аватар для xxbesoxx
 
Регистрация: 10.08.2010
Сообщений: 1,401
По умолчанию

Цитата:
В огороде бузина, а в Киеве дядька
:D :D :D Дякую, буду знать
xxbesoxx вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Установка KOL в Delphi XE7 Aqel Компоненты Delphi 3 20.12.2014 18:18
Использование синтаксиса Delphi XE7 bro Общие вопросы Delphi 2 20.12.2014 11:25
Delphi xe7 bluetooth андройд Volt Общие вопросы Delphi 2 12.12.2014 13:34
Разработка под Android (Delphi XE7) kta87 Общие вопросы Delphi 33 27.10.2014 19:15
Delphi XE7 & Genymotion NEoMASTERR Общие вопросы Delphi 3 04.10.2014 22:22