Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.04.2012, 19:09   #1
bogdan333
Пользователь
 
Регистрация: 26.12.2011
Сообщений: 22
По умолчанию Изменение обработчика событий

Всем привет
Во время разработки интерфейса у меня возникла проблема

Я хочу чтобы при нажатии на SpeedButton3 менялся обработчик события Image5->OnMouseDown и Image5->OnMouseUp как мне это написать?? я уже перепробовал все варианты что знал,помогите если можете.
bogdan333 вне форума Ответить с цитированием
Старый 28.04.2012, 19:13   #2
bogdan333
Пользователь
 
Регистрация: 26.12.2011
Сообщений: 22
По умолчанию

К примеру, если я нажму на SpeedButton3 то обработчик Image5->OnMouseDown меняется с :
void __fastcall TOKBottomDlg::Image5MouseDown(TObje ct *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
Image5->Picture->LoadFromFile("blue_ico_2.bmp");
}
//---------------------------------------------------------------------------
На
void __fastcall TOKBottomDlg::Image5MouseDown(TObje ct *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
Image5->Picture->LoadFromFile("red_ico_2.bmp");
}
//---------------------------------------------------------------------------
bogdan333 вне форума Ответить с цитированием
Старый 28.04.2012, 20:16   #3
nick42
Форумчанин
 
Аватар для nick42
 
Регистрация: 14.10.2011
Сообщений: 267
По умолчанию

- ну, используйте общую ("глобальную") переменную AnsiString *myF, которой сначала присваиваете значение blue_ico2.bmp, а затем red_ico2.bmp , вот так, к примеру
Код:
//---------------------------------------------------------------------------
     AnsiString myF = "blue_ico2.bmp" ;
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{    myF = "blue_ico2.bmp" ;  }
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{    myF = "red_ico2.bmp" ;   }
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{    Image1->Picture->LoadFromFile(myF);   }
//---------------------------------------------------------------------------
nick42 вне форума Ответить с цитированием
Старый 28.04.2012, 21:03   #4
bogdan333
Пользователь
 
Регистрация: 26.12.2011
Сообщений: 22
По умолчанию

Всё равно не работает
Ладно, Моя основная цель это нажатый Image5 при этом его изображение меняется с blue_ico_1 на blue_ico_2
а потом при нажатии на SpeedButton3 Image5 меняется с red_ico_1 на red_ico_2
кааак мне это прописать???:co nfused:
я уже на 2 форума писал но мне не отвечали пишу сюда, помогите если можете, плз
вот пример #include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
AnsiString myF = "blue_ico_1.bmp" ;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
{ Image5->Picture->LoadFromFile(myF); }
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Image5MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
Image5->Picture->LoadFromFile(myF);
{ myF = "blue_ico_1.bmp" ; }
if (SpeedButton3->OnClick)
myF = "red_ico_1.bmp" ;

}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image5MouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
Image5->Picture->LoadFromFile(myF);
{ myF = "blue_ico_2.bmp" ; }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton3Click(TObject *Sender)
{
Image1->Picture->LoadFromFile("1.bmp");
}
//---------------------------------------------------------------------------
P.S если надо могу скинуть полный исходник.
bogdan333 вне форума Ответить с цитированием
Старый 28.04.2012, 22:05   #5
nick42
Форумчанин
 
Аватар для nick42
 
Регистрация: 14.10.2011
Сообщений: 267
По умолчанию

Вот это посмотрите... . Я правильно понял задачу?
Вложения
Тип файла: zip Temp.zip (758.8 Кб, 16 просмотров)
nick42 вне форума Ответить с цитированием
Старый 28.04.2012, 22:10   #6
bogdan333
Пользователь
 
Регистрация: 26.12.2011
Сообщений: 22
По умолчанию

В общем да, это именно то )
только red_ico_1 должен изменятся при щелчке на него, а не на кнопку

Последний раз редактировалось bogdan333; 28.04.2012 в 22:20.
bogdan333 вне форума Ответить с цитированием
Старый 28.04.2012, 23:34   #7
nick42
Форумчанин
 
Аватар для nick42
 
Регистрация: 14.10.2011
Сообщений: 267
По умолчанию

Ну, тогда так приблизительно..
Вложения
Тип файла: zip variant2.zip (762.3 Кб, 21 просмотров)
nick42 вне форума Ответить с цитированием
Старый 29.04.2012, 00:48   #8
bogdan333
Пользователь
 
Регистрация: 26.12.2011
Сообщений: 22
Вопрос

Всё работает, спс, выручил
Но теперь хочу спросить возможно ли сделать это для 6-ти кнопок?
принцип тот же типо при нажатии на SpeedButton3 в результате нажатия на Image5->OnMouseDown и OnMouseUp
будут 2 красные картинки, с разными отличиями
При нажатии на SpeedButton4 в результате нажатия на Image5->OnMouseDown и OnMouseUp
будут 2 синие картинки, с разными отличиями
И так для 6 кнопок SpeedButton5,6,7 и.тд
У меня даже для трёх не вышло ( не знаю почему
я пробовал так для других кнопок
void __fastcall TOKBottomDlg::SpeedButton1MouseDown (TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
{ ipush = "yellow_ico_2.bmp" ;
inopush = "yellow_ico_1.bmp" ; }
}
//----------------------------------------------------
Но никакой реакции на кнопку
Пробовал так
if(ipush == "yellow_ico_2.bmp")
{ ipush = "yellow_ico_2.bmp" ;
inopush = "yellow_ico_1.bmp" ; }
Тоже не пашет
bogdan333 вне форума Ответить с цитированием
Старый 29.04.2012, 01:37   #9
nick42
Форумчанин
 
Аватар для nick42
 
Регистрация: 14.10.2011
Сообщений: 267
По умолчанию

Цитата:
Сообщение от bogdan333 Посмотреть сообщение
... никакой реакции на кнопку
Пробовал так
if(ipush == "yellow_ico_2.bmp")
{ ipush = "yellow_ico_2.bmp" ;
inopush = "yellow_ico_1.bmp" ; }
Тоже не пашет
а какая реакция должна быть? Вы просто подменили названия картинок в переменных, а использованы они будут в событии нажатия на Image5. И, кстати, здесь первая строчка неверна: если ipush не равно ..2.bmp, - иначе какой смысл перезагружать ТУ ЖЕ картинку!
nick42 вне форума Ответить с цитированием
Старый 29.04.2012, 02:56   #10
bogdan333
Пользователь
 
Регистрация: 26.12.2011
Сообщений: 22
По умолчанию

А как тогда? Мне начинает казатся что это вобще нереально )
Просто уже столько всего перепробовал, и ничего не помогает, даже в инете ничё нет на эту тему

Последний раз редактировалось bogdan333; 29.04.2012 в 03:05.
bogdan333 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание обработчика событий объектов Caside Microsoft Office Excel 5 07.04.2011 12:54
Перехват обработчика OnExit Аватар Общие вопросы Delphi 3 21.01.2011 11:39
Выход из обработчика события tools Visual C++ 1 20.12.2010 10:24
Организация обработчика OnClick 8alig8 Помощь студентам 1 03.06.2008 05:11