![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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). Компа нет щас, могу тока путь подсказать.
|
|
#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) и обрабатывать стандартные процы
|
|
#13
|
|||
|
|||
|
Ama, да так уже и сделал .) NIch 5 за соо6разительность)
все 6ольше и 6ольше поражаюсь русской смекалкой.) все.) хватит о6тирать эту тему, всем спаси6о .) вот если кому интересно над чем я парился.)) написано на бейсике, так как надо6ыло подготовиться к какомуто конкурсу по бейсике... вот сидет, изучал "новый" язык. c ракетой правда лажа.. но я осо6о не парился .) Последний раз редактировалось beavi5, 22.04.2010 в 16:29. |
|
#14
|
|||
|
|||
|
блин.)) тока щас вспомнил про SpeedButton , каторый не имеет фокусного выделения)) все оказалось очень просто.)
|