powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Про интерфейс и TAB
12 сообщений из 12, страница 1 из 1
Про интерфейс и TAB
    #32215144
AndreyBond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот есть код в потоке:
Код: plaintext
1.
frmAddMark.edNameMark.Text:='';
frmAddMark.ShowModal;

Как мне сделать, чтобы при открытии формы в фокусе был определённый компонент этой формы, если я делаю так:
Код: plaintext
1.
2.
frmAddMark.edNameMark.Text:='';
frmAddMark.edNameMark.СanFocus;
frmAddMark.ShowModal;

то мне пишется, что нельзя невидимый компонент сделать в фокусе, что вполне логично.. Код для передачи фокуса в определённый компонент также нельзя помещать в код открытия самой формы, так как в зависимости от того, откуда она вызывалась, должен быть в фокусе определённый компонент. Может есть свойство у самой формы, чтоб позиционировать фокус, так как этот параметр где-то сохраняется (потому что при открыти-закритии формы в фокусе находится тот элемент, который был до закрытия).
...
Рейтинг: 0 / 0
Про интерфейс и TAB
    #32215152
Speaker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>frmAddMark.edNameMark.СanFocus;
Вот этот код является бессмысленным,
CanFocus проверяет, может или нет компонент установить фокус.
Правильнее было бы if CanFocus then SetFocus, что я
бы и советовал сделать в OnShow, у меня так работает.

В зависимости от версии Delphi у формы есть свойство ActiveControl,
которое отвечает за активный компонент при показе
...
Рейтинг: 0 / 0
Про интерфейс и TAB
    #32215153
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
frmAddMark.edNameMark.Text:='';
frmAddMark.ShowModal;
frmAddMark.edNameMark.SetFocus;
...
Рейтинг: 0 / 0
Про интерфейс и TAB
    #32215175
Speaker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 JibSkeart
Не, так тоже работать не будет :)
...
Рейтинг: 0 / 0
Про интерфейс и TAB
    #32215177
Alexey_VV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуй при обработке события OnShow делать SetFocus на нужный компонент
...
Рейтинг: 0 / 0
Про интерфейс и TAB
    #32215184
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
странно ....
...
Рейтинг: 0 / 0
Про интерфейс и TAB
    #32215203
AndreyBond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сорри, там у меня конечно же написано в проге не CanFocus, а SetFocus. Просто не использовал past/copy, а сам набирал и в это время думал о другом :-)))
Код: plaintext
1.
2.
frmAddMark.edNameMark.Text:=''; 
frmAddMark.ShowModal; 
frmAddMark.edNameMark.SetFocus;

работать действительно не будет, так как к строке frmAddMark.edNameMark.SetFocus; код перейдёт только когда форму закроют. Я специально код торможу фукцией showmodal, чтобы выполняемый поток приостоновился до тех пор, пока в эту форму даные не введут.
У меня Delphi 5, но щас посмотрю на ActiveControl. а в onshow я не могу этого сделать так как в фокусе должен быть разный элемент, в зависимости от того откудова форма вызывается.
...
Рейтинг: 0 / 0
Про интерфейс и TAB
    #32215204
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну так используй Tag :)
...
Рейтинг: 0 / 0
Про интерфейс и TAB
    #32215213
AndreyBond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всё, большое спасибо всем, вот это работает:
Код: plaintext
1.
2.
3.
frmAddMark.edNameMark.Text:='';
frmAddMark.ActiveControl:=frmAddMark.edNameMark;
frmAddMark.ShowModal;
...
Рейтинг: 0 / 0
Про интерфейс и TAB
    #32215220
Alexey_VV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>> а в onshow я не могу этого сделать так как в фокусе должен быть разный элемент, в зависимости от того откудова форма вызывается.


Так добавь в объект поле в котором и будет указываться какой компонент должен быть активным и обрабатывай это поле в OnShow.
...
Рейтинг: 0 / 0
Про интерфейс и TAB
    #32215228
Alexey_VV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну таким полем может быть и ActiveControl, согласен
...
Рейтинг: 0 / 0
Про интерфейс и TAB
    #32215233
AndreyBond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>>>Так добавь в объект поле в котором и будет указываться какой компонент должен быть активным и обрабатывай это поле в OnShow.

Еслиб не стало известно про ActiveControl, то так бы и сделал как вы посоветовали..
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Про интерфейс и TAB
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]