- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
TForm1 *Form1;
//----------------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//- Буква А ---------------------------------------------------------------------
void __fastcall TForm1::Label1Click(TObject *Sender)
{
Image1->Picture->LoadFromFile("PICTURE/1.bmp");
PlaySound("SOUND/1.wav",0,SND_ASYNC);
}
//--Буква Б-----------------------------------------------------------------------
void __fastcall TForm1::Label2Click(TObject *Sender)
{
Image1->Picture->LoadFromFile("PICTURE/2.bmp");
PlaySound("SOUND/2.wav",0,SND_ASYNC);
}
//--Буква В-------------------------------------------------------------------------
void __fastcall TForm1::Label3Click(TObject *Sender)
{
Image1->Picture->LoadFromFile("PICTURE/3.bmp");
PlaySound("SOUND/3.wav",0,SND_ASYNC);
}
....
и т.д.
//--Буква Я-------------------------------------------------------------------------
void __fastcall TForm1::Label33Click(TObject *Sender)
{
Image1->Picture->LoadFromFile("PICTURE/33.bmp");
PlaySound("SOUND/33.wav",0,SND_ASYNC);
}
//---------------------------------------------------------------------------
Пример из обучающей статьи по с++, где от а до я выресовываются буквы.
Мистер Хэнки 16.06.2010 20:04 # +2
guest 16.06.2010 20:05 # +2
guest 18.06.2010 18:42 # 0
guest 18.06.2010 19:44 # 0
This is obvious 18.06.2010 23:11 # 0
AxisPod 17.06.2010 06:03 # −2
guest 17.06.2010 09:06 # +5
ganja_boy 17.06.2010 09:33 # 0
3.14159265 17.06.2010 10:35 # 0
- А-ааа
- теперь Б
- Бэээ
напомнило калькулятор с логикой для цифр в подобном стиле
guest 17.06.2010 17:02 # +5
У большинства событий есть Sender, оный нам и пригодится.
Пишем процiдурку в духе
После чего всем лейблам присваиваем один обработчик. Никакой копипасты. Я в своё время в институте так пятнашки писал, и на спор с одним кренделем крестики-нолики. Он был уверен, что на джаве это будет записано короче, у меня вышло вместе с логикой десяток строк.
При этом, я не совсем уверен, что это оптимальный метод. Можно сделать лучше, например, раздать компонентам теги целочисленные.
Инструмент - просто инструмент, голова важнее.
ganja_boy 18.06.2010 11:40 # +1
AnsiString num = ( ( TLabel * ) Sender )->Name.SubString ( 6, 3 );
вот это коряво. обычно используют тег компонента. при желании можно и компонент дописать, добавив ему новые свойства
guest 18.06.2010 12:51 # 0
Имя содержит столько же полезной информации, как и любые другие свойства, естественно, обрабатывать сложнее.
Теги - да, ещё один вариант, но их ещё нужно расставить и не попутать. Имя даётся "бесплатно" и гарантированно уникально.
Stalker 18.06.2010 13:15 # 0
Image1->Canvas->TextOut(0, 0, ((TLabel*)Sender)->Caption);
33 лабела можно в ран-тайме создать при загрузке формы, и теги в том же цикле расставить.
absolut 18.06.2010 21:21 # 0
Плюс, может быть, там картинки как в азбуке для каждой буквы.
Stalker 19.06.2010 02:12 # 0
В общем да, скорее всего так и есть... Иначе вместо Image обошлись бы простым Label :)
Webkill 18.06.2010 05:12 # −2
видимо для автора то что делает билдер эт отоже магия.. главнео что метод сгенерирован и ладно..
guest 19.06.2010 17:23 # −4
nil 22.06.2010 00:35 # −1