![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() суть программы : при нажатии на про6ел кнопка должна двигаеться ввниз
код : Код:
procedure TForm4.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key = vk_space then button1.top:= button1.top+10; end; end. про6лема: при запуске приложения кнопка автоматически выделяется и при нажатии на про6ел нажимается кнопка ,а не о6ра6атывается процедура formKeyDown вопрос: как это исправить? как снять выделение с кнопки так, что6ы она была вполне ра6отоспосо6ной? так сказать что6ы активной 6ыла форма а не кнопки расположенные на ней. |
#2
|
|||
|
|||
![]() тоесть если мне нужно о6работать нажатие какой ли6о клавиши ( про6ел, влево, вправо и тд), но на форме стоит кнопка, то все идет под откос.)
|
#3
|
||||
|
||||
![]() beavi5, если не секрет, познакомте с тем преподавателем, который задал эту задачу,а что за секрет если не секрет?
ЗЫЖ Я бв его рпспял. Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#4
|
|||
|
|||
![]() хех .) да не... эт не задача, сам чото сидел ковырялся.. писал чот типа игрушки, поставил кнопку СтАрт и не как с нее на форму слезть не могу) в примере просто показал суть про6лемы.
и млин не успокоюсь терь пока до истины не до6ерусь... |
#5
|
|||
|
|||
![]() А если обработать процу wm_keydown(var msg: twmkeydown). Компа нет щас, могу тока путь подсказать.
APPLICATION.TERMINATOR |
#6
|
|||
|
|||
![]() а если:
1. Выставить свойство форму KeyPreview 2. принудительно делать форму в фокусе через SetFocus? 3. Установить у кнопки свойство TabStop = False; 4. Все предыдущее вместе. 5. Убрать нафиг кнопку и на ее месте положить неоконный компонент и обрабатывть нажатия кнопок и клик на нем отдельно. |
#7
|
|||
|
|||
![]() ну пункты 1 и 3 уже про6овал, но кнопка серавно нажималась.) пункт 2 выдает оши6ку( я как понел form.Setfocus ? если нет, то поподро6ней.)). Была мысль заменить кнопку панелькой как в 5 пункте, походу прийдеться так и сделать.)
про wm_keydown тоже хотелось 6ы поподро6ней, 1й раз прост слышу о такой процедуре, интересно .) А так Паси6 за советы. ![]() Последний раз редактировалось beavi5, 21.04.2010 в 12:04. |
#8
|
||||
|
||||
![]() Создай глобальную переменную
Код:
var Keyy: Word; Код:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key = vk_space then button1.Left:= button1.Left+10; end; procedure TForm1.Button1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key = vk_space then button1.Left:= button1.Left+10; keyy:=key; end; procedure TForm1.Button1Click(Sender: TObject); begin if keyy <> vk_space then showmessage('Hallo'); end; |
#9
|
|||
|
|||
![]() pesi, терь если 1н раз нажать на про6ел, то кнопка воо6ще не ра6отает.)
и серавно при таком коде она визуально нажимается.. .) |
#10
|
||||
|
||||
![]() создай "левую" невидимую (visible = false) кнопку на форме (или убери ее за пределы формы) и передай ей фокус вместо твоей...
В начале был Бит, потом Байт и только потом появилось Слово... |
#11
|
||||
|
||||
![]() Последний раз редактировалось pesi, 23.04.2010 в 13:07. |
#12
|
|||
|
|||
![]() Я думаю проще всего тебе будет заменить кнопку на компонент не имеющий фокуса (TImage? например или TPanel) и обрабатывать стандартные процы
APPLICATION.TERMINATOR |
#13
|
|||
|
|||
![]() Ama, да так уже и сделал .) NIch 5 за соо6разительность)
все 6ольше и 6ольше поражаюсь русской смекалкой.) все.) хватит о6тирать эту тему, всем спаси6о .) вот если кому интересно над чем я парился.)) написано на бейсике, так как надо6ыло подготовиться к какомуто конкурсу по бейсике... вот сидет, изучал "новый" язык. c ракетой правда лажа.. но я осо6о не парился .) Последний раз редактировалось beavi5, 22.04.2010 в 16:29. |
#14
|
|||
|
|||
![]() блин.)) тока щас вспомнил про SpeedButton , каторый не имеет фокусного выделения)) все оказалось очень просто.)
Истина где-то рядом... |