Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Передача фокуса


Страницы:   1 2 3 4

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.


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо