Вверх ↑
Этот топик читают: Гость
Ответов: 409
Рейтинг: 17
#1: 2009-05-30 11:04:39 ЛС | профиль | цитата
Есть программа в которой много форм и кнопок, все кнопки - это кнопки-картинки.
Хочу сделать чтобы в каждой форме была "основная" кнопка нажимаемая клавишей Enter.
Вот сделал схемку:
code_13538.txt

Но как то она грамоздко выглядит, и нужно будет для каждой открытой формы включать таймер опрашивающий кнопку, а при закрытии формы отключать.
Может есть другие варианты?
карма: 0

0
файлы: 1code_13538.txt [17.7KB] [336]
Гость
Ответов: 17029
Рейтинг: 0
#2: 2009-05-30 11:23:06 правка | ЛС | профиль | цитата


Редактировалось 2 раз(а), последний 2025-01-10 09:44:11
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#3: 2009-05-30 12:00:52 правка | ЛС | профиль | цитата


Редактировалось 2 раз(а), последний 2025-01-10 09:44:11
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#4: 2009-05-30 12:04:21 правка | ЛС | профиль | цитата


Редактировалось 2 раз(а), последний 2025-01-10 09:44:11
карма: 0

0
Разработчик
Ответов: 26164
Рейтинг: 2127
#5: 2009-05-30 12:04:44 ЛС | профиль | цитата
dynamic-95-188-182-36.ppp писал(а):
эта не прога эта элемент

Да тут же спросили -- какой прогой образы кнопок нарисовали, и где ее взять
А еще лучше -- может ресурс есть, где образы таких кнопок готовые валяются
карма: 22

0
Ответов: 33
Рейтинг: -5
#6: 2009-05-30 12:15:57 ЛС | профиль | цитата
nesco а ну сори я поначалу понял так как сделать такую кнопку про рисунок неподумал )
вот тут кнопки есть http://db.ibresource.ru/355/ тут тка помелочи
карма: 1

0
Разработчик
Ответов: 4698
Рейтинг: 426
#7: 2009-05-30 14:33:07 ЛС | профиль | цитата
А зачем так мучиться и издеваться над таймером?
code_13540.txt
А если нужно несколько кнопок по разным направлениям, то просто добавь if. Если не хочешь чтобы событие повторялось, ставь переключатель и сравнение(1 или 0) перед определением нажатия клавиши
------------ Дoбавленo в 14.34:
здесь без картинок, просто не помещалось в сообщение, форум ругался. Но вобщем ты их можешь заменить на кнопки-картинки
карма: 10
1
файлы: 1code_13540.txt [1.6KB] [181]
Голосовали:Pirr
Ответов: 409
Рейтинг: 17
#8: 2009-05-30 20:23:38 ЛС | профиль | цитата
90.150.206.186 писал(а):
Где взял прогу которая такие кнопки рисует?

Прога называется UltraButton. Есть еще содатели кнопок - Web Button Maker Deluxe, Free-buttons, LiknoWebButtonMaker и т.д.
карма: 0

0
Разработчик
Ответов: 4698
Рейтинг: 426
#9: 2009-05-31 08:51:12 ЛС | профиль | цитата
Да, Pirr, при наличие редакторов текста или того что использует клавишу Enter, надо кнопки помещать в отдельный контейнер и событие по нажатию на ентер брать из панели, иначе... сам попробуй добавить в мою схему memo!
карма: 10
0
Ответов: 9906
Рейтинг: 351
#10: 2009-05-31 20:00:10 ЛС | профиль | цитата
Assasin писал(а):
иначе... сам попробуй добавить в мою схему memo!

Видимо "великие тайны" св-ва KeyPreview уже утрачены...
Настолько, что оно даже в WinControl.ini не попало
карма: 9

0
Ответов: 409
Рейтинг: 17
#11: 2009-05-31 21:57:17 ЛС | профиль | цитата
Еще вопрос, но уже не по кнопкам... в схеме Assasin при открытии основной формы из дочерней, в панель задач не попадает окошко запущенного приложения, если свернуть его, а затем развернуть то оно появляется.
Это очень неудобно, особенно если на компьютере запущенно много приложений и пользователь переключается между ними.
В своем приложении я при открытии основной формы, сперва сворачиваю её а затем разварачиваю - получается такой прикольный эффект, вроде как форма из панели задач разворачивается.
Но может есть способ, как то обновить панель задач без эффекта сворачивания?
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#12: 2009-06-01 10:25:54 ЛС | профиль | цитата
Pirr писал(а):
Хочу сделать чтобы в каждой форме была "основная" кнопка нажимаемая клавишей Enter.
Активная (установлен фокус) кнопка прекрасно нажимается "пробелом" . Можно даже сказать - общепринятый метод.

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 4698
Рейтинг: 426
#13: 2009-06-01 12:46:41 ЛС | профиль | цитата
Pirr писал(а):
о может есть способ, как то обновить панель задач без эффекта сворачивания?

Другого способа не нашел, так пойдет?
code_13550.txt
Хотя должна работать кнопка doPlaceInTaskBar
карма: 10
0
файлы: 1code_13550.txt [1.8KB] [158]
Ответов: 409
Рейтинг: 17
#14: 2009-06-01 14:00:16 ЛС | профиль | цитата
Tad писал(а):
Активная (установлен фокус) кнопка прекрасно нажимается "пробелом" . Можно даже сказать - общепринятый метод.

Это есть у обычных кнопок, у кнопок-картинок - фокуса нет.

Assasin писал(а):
code_13550.txt

Сейчас посмотрю.
Но вот еще вопрос, по твоей схеме... у меня не получилось сделать так чтобы в каждой форме кнопка Enter - выполняла свою функцию, получается только сразу все функции на всех формах, даже невидимых.
карма: 0

0
Разработчик
Ответов: 26164
Рейтинг: 2127
#15: 2009-06-01 14:17:59 ЛС | профиль | цитата
Pirr писал(а):
Но вот еще вопрос, по твоей схеме... у меня не получилось сделать так чтобы в каждой форме кнопка Enter - выполняла свою функцию


А чего, вот так нельзя сделать


Add(MainForm,5171360,483,343)
{
Width=617
Height=250
Visible=1
Position=1
Point(doVisible)
Point(doPlaceInTaskBar)
}
Add(ChildForm,15500213,378,371)
{
link(onEvent1,5171360:doVisible,[])
link(onEvent2,8816934:doWork1,[])
}
BEGIN_SDK
Add(EditMulti,3089606,21,21)
{
EventCount=2
Width=503
Height=340
}
Add(MainForm,2201256,266,112)
{
Left=35
Top=105
Width=349
Height=141
Position=1
Point(doVisible)
Point(onKeyDown)
link(onActivate,11847270:doSetFocus,[(310,118)(310,83)(254,83)(254,48)])
}
Add(Button,11847270,266,42)
{
Left=25
Top=15
Width=90
Height=55
Caption="1"
Point(onKeyDown)
Point(doSetFocus)
link(onKeyDown,15576366:doCase,[])
}
Add(Button,413377,266,189)
{
Left=195
Top=15
Width=90
Height=55
Caption="2"
link(onClick,3089606:onEvent2,[(501,195)(501,34)])
}
Add(Case,15576366,322,49)
{
Value=Integer(13)
DataOnTrue=Integer(1)
link(onTrue,15573958:doEvent1,[])
}
Add(Hub,15573958,378,56)
{
link(onEvent1,3089606:onEvent1,[(451,62)(451,27)])
link(onEvent2,7289780:doData,[(404,69)(404,107)(184,107)(184,146)])
}
Add(DoData,7289780,196,140)
{
Data=Integer(0)
link(onEventData,2201256:doVisible,[])
}
END_SDK
Add(ChildForm,8816934,434,378)
{
}
BEGIN_SDK
Add(EditMulti,3089606,21,21)
{
EventCount=1
WorkCount=1
Width=363
Height=228
link(doWork1,3759038:doWork1,[(144,27)])
}
Add(MainForm,6864688,168,140)
{
Left=35
Top=105
Width=349
Height=141
Visible=1
Position=1
Point(doVisible)
Point(onKeyDown)
}
Add(Button,11847270,168,70)
{
Left=25
Top=15
Width=90
Height=55
Caption="3"
Point(onKeyDown)
link(onKeyDown,15576366:doCase,[])
}
Add(Case,15576366,224,77)
{
Value=Integer(13)
DataOnTrue=Integer(1)
link(onTrue,7289780:doData,[(268,90)(268,132)(86,132)(86,174)])
}
Add(DoData,7289780,98,168)
{
Data=Integer(0)
link(onEventData,3759038:doWork2,[])
}
Add(HubEx,3759038,140,161)
{
link(onEvent,6864688:doVisible,[])
}
END_SDK

карма: 22

1
Голосовали:Assasin
Сообщение
...
Прикрепленные файлы
(файлы не залиты)