![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Передача фокуса
Piter © (2004-05-30 16:00:00)Есть несколько Edit'ов на окне. Как реализовать передачу фокуса по [TAB] ?
P.S. И еще такой вопросик в оффтоп - какой стиль надо присвоить Edit'у, чтобы он стал трехмерным, как в VCL? А то у меня плоский, некрасиво выглядит...
Piter (2004-05-31 18:52:00) [41]Gero (31.05.04 18:50) [27]
Иногда с ресурсами бывает подобная фигня, попробуй закрыть проект и открыть заново
да я чего только не делал
Piter (2004-05-31 18:51:00) [42]DVM (31.05.04 18:48) [26]
В чем делал ресурс?
Resource Workshop
DVM (31.05.04 18:48) [26]
Ты ресурс скомпилировал?
да, с помощью brcc32
DVM (31.05.04 18:48) [26]
К проекту подцепил?
да
DVM (31.05.04 18:48) [26]
Все должно работать вообще то.
ан не работает
Gero (2004-05-31 18:50:00) [43]Иногда с ресурсами бывает подобная фигня, попробуй закрыть проект и открыть заново.
DVM (2004-05-31 18:48:00) [44]
> Piter © (31.05.04 18:31) [25]
В чем делал ресурс?
Ты ресурс скомпилировал?
К проекту подцепил?
Все должно работать вообще то.
Piter (2004-05-31 18:31:00) [45]DVM (31.05.04 18:00) [23]
ну так MAKEINTRESOURCE это и есть приведение к PChar'у!
DVM (2004-05-31 18:13:00) [46]
> nikkie © (31.05.04 01:53) [12]
> >DVM
> >В любом случае передача фокуса будет происходить с помощью
> SetFocus(). А нажатие TAB - это лишь сообщение WM_KEYDOWN.
>
> это зачем? по приведенной тобой же ссылке написано:
А если нужно, чтобы по определенному условию фокус установился на некотором поле редактирования? Тогда надо использовать SetFocus()+ GetDlgItem().
DVM (2004-05-31 18:00:00) [47]
> Piter © (31.05.04 17:37) [22]
i:=DialogBoxParam(Instance,PChar(1),Handle,@DialogProc,0);
Piter (2004-05-31 17:37:00) [48]GuAV (31.05.04 12:23) [19]
В pедакотре ресурсов обзови его каким-то числом, например 1000, это и будет ID
обозвал еденичкой. Вызываю:
i:=DialogBoxParam(Instance,MAKEINTRESOURCE(1),Handle,@DialogProc,0);
не пашет :(
"Указанной имя ресурса не найдено в файле образа"
Piter (2004-05-31 17:25:00) [49]Игорь Шевченко (31.05.04 12:27) [20]
а как полностью книжка называется?
Игорь Шевченко (2004-05-31 12:27:00) [50]Piter © (31.05.04 11:05)
Петцольда читать. Наизусть. Буду экзамен принимать.
GuAV (2004-05-31 12:23:00) [51]
> а как я узнаю ID диалога? DIALOG_1 естественно неизвестная
> переменная для дельфи...
В pедакотре ресурсов обзови его каким-то числом, например 1000, это и будет ID
Piter (2004-05-31 11:05:00) [52]вот блин...
Piter (2004-05-31 03:40:00) [53]nikkie (31.05.04 02:49) [16]
параметром MAKEINTRESOURCE должен быть ID диалога
а как я узнаю ID диалога? DIALOG_1 естественно неизвестная переменная для дельфи...
nikkie (2004-05-31 02:49:00) [54]>ну тогда уж наверное все таки
нет. параметром MAKEINTRESOURCE должен быть ID диалога - целое число.
Piter (2004-05-31 02:40:00) [55]Piter (31.05.04 02:33) [13]
MAKEINTRESOURCE(DIALOG_1)
ну тогда уж наверное все таки
MAKEINTRESOURCE('DIALOG_1')
Все равно не работает, тоже самое. Да и вообще MAKEINTRESOURCE это ведь просто приведение к PChar'у.
А Дельфи и так к PChar'у приводит...
nikkie (2004-05-31 02:35:00) [56]DialogBoxParam(Instance,MAKEINTRESOURCE(DIALOG_1),Handle,@DialogProc,0);
Piter (2004-05-31 02:33:00) [57]Что-то не получается ни фига... ресурс создал, подключил.
Вызываю так:
i:=DialogBoxParam(Instance,'DIALOG_1',Handle,@DialogProc,0);
После вызова i=-1
GetLastError дает "Не удается найти класс окна", если DialogBoxParam вообще устанавливает код ошибки...
nikkie (2004-05-31 01:53:00) [58]>DVM
>В любом случае передача фокуса будет происходить с помощью SetFocus(). А нажатие TAB - это лишь сообщение WM_KEYDOWN.
это зачем? по приведенной тобой же ссылке написано:
Преимущество такого способа создания диалоговых окон заключается в том, что Windows берет на себя обеспечение интерфейса диалоговых окон, к которому привык пользователь — кнопки по умолчанию (срабатывающия, когда пользователь нажмет <Enter> или <Esc>); возможность переключения между дочерними элементами управления при помощи клавиши <Tab> и т.п.
DVM (2004-05-31 01:40:00) [59]
> Piter © (31.05.04 01:32) [9]
При программировании интерфейса на WinApi обычно не используют кучу вызовов CreateWindow() для создания диалоговых окон и контролов на них. Вместо этого шаблон окна диалога описывают в файле ресурсов и потом вызывая DialogBoxParam(), например, создают такое окно одим махом, дополнительно получая массу бонусов, например, передача фокуса и т.д.
Подробнее тут:
http://web.ict.nsc.ru/~cancel/delphi/vclfree.html/file3.html
В любом случае передача фокуса будет происходить с помощью SetFocus(). А нажатие TAB - это лишь сообщение WM_KEYDOWN.
nikkie (2004-05-31 01:35:00) [60]ресурс есть такой DIALOG
и функции соответствующие - DialogBox, DialogBoxParam.