Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Программное нажатие на кнопку / 7 сообщений из 7, страница 1 из 1
27.04.2004, 10:48
    #32498062
sergius_2000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программное нажатие на кнопку
Добрый день товарищи !

Мучает очередной вопрос. Если поместить на форму две кнопки, то как сделать так, чтобы при нажатии на одну из них нажималась и другая (причем, чтобы было видно, как нажимается вторая) ???
...
Рейтинг: 0 / 0
27.04.2004, 10:50
    #32498067
JibSkeart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программное нажатие на кнопку
Собсвенно На чем пишите ,

(причем, чтобы было видно, как нажимается вторая)
Не излишесва ли хотите ???


i_i
(';')
(V),(V),,
JS
...
Рейтинг: 0 / 0
27.04.2004, 15:52
    #32499010
sergius_2000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программное нажатие на кнопку
Использую билдер. Ну что вы, какие излишества! Эстетическое удовольствие!
...
Рейтинг: 0 / 0
27.04.2004, 16:18
    #32499084
JibSkeart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программное нажатие на кнопку
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
void __fastcall TForm1::OnButton1Click(TObject * Sender) 
{
   OnButton2Click(Sender);  
}

void __fastcall TForm1::OnButton2Click(TObject * Sender) 
{
 
 if (dynamic_cast<TButton*>(Sender))
   {
     AnsiString str =  "Вы меня типа 'нажали' из " + dynamic_cast<TButton*>(Sender)->Name; 
     ShowMessage();
   }
}


А так не хватит ?


i_i
(';')
(V),(V),,
JS
...
Рейтинг: 0 / 0
28.04.2004, 10:58
    #32500025
CEMb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программное нажатие на кнопку
Во-первых. Если кнопка типа пушбатн, то хрен вы чё без второй мыши увидите =) Ибо, нажатая(вдавленая, всмысле) пушбатн видна как нажатая тока когда над ней висит мышь. А как вы хотите одной мышью давить на первую кнопку и ей же висеть над второй

Ладно.
Решать можно по разному.

Решение №1. Сложное и красивое (дурное). Берётся пушбатн и подменяется ему функция отрисовки, в которой, в завсимости от флага(который взводится/сбрасываестя по нажатию/отпуску первой кнопки) рисуем себя вдавленной/отпущенной.
Или. Подменяется функция реакции на мышь. Если я не ошибаюсь, то при наличии мыши над кнопкой делается TrackMouseEvent на WM_MOUSELEAVE, при котором отрисовка меняется. Всё что нужно, это TrackMouseEvent с отменой ожидания WM_MOUSELEAVE (после отработки WM_MOUSEMOVE в стандартной функции обработки окна). Далее по нажатию первой кнопки надо послать WM_LBUTTONDOWN а по отпуску WM_LBUTTONUP.

Решение №2 Нечестное (зато простое)
В самом начале второй кнопке прописывается стиль BS_PUSHLIKE.
Делаем обработчик события клика на первую кнопку, по которому прописываем второй кнопке стиль чекбокс взамен пушбатн и говорим, что она чекнутая. Тоже самое по событию отпускания мыши(стиль уже можно не прописывать: нельзя отжать кнопку не нажав(на самом деле можно, но это редко кто умеет))
Делаем обработчик события WM_MOUSEMOVE для второй кнопки и по этому событию просто меняем стиль чекбокс на пушбатн.
Вот и всё.
...
Рейтинг: 0 / 0
28.04.2004, 15:07
    #32500874
SnowMan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программное нажатие на кнопку
Попробуй так

Код: plaintext
1.
2.
3.
4.
5.
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 SendMessage(Button2->Handle, BM_SETSTATE, TRUE, 0L);
 Sleep( 500 );
 SendMessage(Button2->Handle, BM_SETSTATE, FALSE, 0L);
}
...
Рейтинг: 0 / 0
28.04.2004, 21:00
    #32501622
sergius_2000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программное нажатие на кнопку
Спасибо ВСЕМ! Последнее особо гениальное!!!!! ))))))))))))))))))))))))
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Программное нажатие на кнопку / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]