С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
43 / 37 / 17
Регистрация: 11.11.2009
Сообщений: 246
1

Рисунок в Timage

27.05.2013, 18:10. Показов 1139. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Суть в том, что создаются динамически Timage, сколько задает пользователь. При нажатии image должен заполнятся картинкой в зависимости от выбранного с помощью RadioButton'a.

Вот сделанное.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{for (int i = 0; i < 81; i++)
{ if (i%9==0 && i!=0) { X=X+60; Y=-51;}
 dynImages[i] = new TImage(this);
 dynImages[i]->Parent = this;
 dynImages[i]->Tag = i;
 dynImages[i]->BringToFront();
 dynImages[i]->Picture->LoadFromFile(AnsiString().sprintf("f.bmp",i+1));
 dynImages[i]->Left = X;
 Y=Y+59;
 dynImages[i]->Top = Y;
 dynImages[i]->OnClick = ImClick;}}
//---------------------------------------------------------------------------
void __fastcall TForm1::ImClick(TObject *Sender)
{int pushedId = -1;
if(Form1->RadioButton1->Checked){};
((TImage*)FindComponent("Image"+String(Tag)))->Picture->LoadFromFile("1.bmp");}
//---------------------------------------------------------------------------

Но не знаю, как закончить. Как реализовать заполнение. в таком коде появляется ошибка и ничего не меняется.
Если использовать ShowMessage(Name); Выдает Form1

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void __fastcall
TForm1::SpeedButton1Click(TObject *Sender)
{
 if(dynamic_cast<TSpeedButton *>(Sender))
 {
  int i=((TSpeedButton *)(Sender))->Tag;
  switch(i)
  {
   case 0:
    .... //Код для кнопки 1
   break;
   case 1:
    .... //Код для кнопки 2   
   break;
  }
  .......// Общий код
 }
}
И как правильно удалить Image?
Миниатюры
Рисунок в Timage  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.05.2013, 18:10
Ответы с готовыми решениями:

TImage
Вообщем написал я программу которая при нажатии стрелки влево картинка начинает двигаться влево,...

Работа с TImage
Ребят,есть вот такие,например, строчки:...

Рисование на TImage
У меня есть картинка TImage и у нее загружается *.png файл. Нужно на этой картинке нарисовать...

Кнопка из TImage
Сделал кнопку из TImage. При нажатии картинка меняется. Но назад при отпускании не могу вернуть. 2...

7
43 / 37 / 17
Регистрация: 11.11.2009
Сообщений: 246
27.05.2013, 18:27  [ТС] 2
Все решил.
C++
1
2
3
4
5
6
7
8
9
void __fastcall TForm1::ImClick(TObject *Sender)
{pushedId = ((TImage*)Sender)->Tag;
if (Form1->RadioButton1->Checked)dynImages[pushedId]->Picture->LoadFromFile("1.bmp");
if (Form1->RadioButton1->Checked)dynImages[pushedId]->Picture->LoadFromFile("2.bmp");
if (Form1->RadioButton1->Checked)dynImages[pushedId]->Picture->LoadFromFile("3.bmp");
if (Form1->RadioButton1->Checked)dynImages[pushedId]->Picture->LoadFromFile("s.bmp");
if (Form1->RadioButton1->Checked)dynImages[pushedId]->Picture->LoadFromFile("s1.bmp");
if (Form1->RadioButton1->Checked)dynImages[pushedId]->Picture->LoadFromFile("p.bmp");}
 //---------------------------------------------------------------------------


Есть ли способ как-то оптимизировать RadioButton? Что бы не такая громоздкая конструкция с условиями получалась?
0
1090 / 588 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
28.05.2013, 10:16 3
оптимизировать можно создавая RadioButton-ы тоже динамически, хотя можно перебрать и все статичные.
а здесь
Цитата Сообщение от Vergil Посмотреть сообщение
if (Form1->RadioButton1->Checked)dynImages[pushedId]->Picture->LoadFromFile("1.bmp");
if (Form1->RadioButton1->Checked)dynImages[pushedId]->Picture->LoadFromFile("2.bmp");
if (Form1->RadioButton1->Checked)dynImages[pushedId]->Picture->LoadFromFile("3.bmp");
if (Form1->RadioButton1->Checked)dynImages[pushedId]->Picture->LoadFromFile("s.bmp");
if (Form1->RadioButton1->Checked)dynImages[pushedId]->Picture->LoadFromFile("s1.bmp");
if (Form1->RadioButton1->Checked)dynImages[pushedId]->Picture->LoadFromFile("p.bmp");}
на результат повлияет только последняя строка
1
Практикантроп
4840 / 2725 / 533
Регистрация: 23.09.2011
Сообщений: 5,795
28.05.2013, 11:44 4
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от Vergil Посмотреть сообщение
Есть ли способ как-то оптимизировать RadioButton?
Используйте RadioGroup__
C++
1
2
3
  String Fl[]= { "1","2","3","s","s1","p" };
  int dx = RadioGroup1->ItemIndex ;
  dynImages[dx]->Picture->LoadFromFile(Fl[dx]+".bmp");
3
43 / 37 / 17
Регистрация: 11.11.2009
Сообщений: 246
29.05.2013, 13:32  [ТС] 5
Забыл Поменять номера) Спасибо за подсказку. Буду осваивать группу.
Кто мне объяснит почему мои темы переносят из раздела для начинающих? Я бы не сказал, что тут есть что-то сложное... Просто еще недостаток знаний связанный с тем, что сам учусь. А хорошей книги с примерами еще не нашел.
0
LK
Заблокирован
29.05.2013, 19:38 6
Цитата Сообщение от Vergil Посмотреть сообщение
Кто мне объяснит почему мои темы переносят
- потому, что для реализации используется билдер:
C++
1
2
3
void __fastcall TForm1::FormCreate(TObject *Sender)
{
// и дальше, по тексту
Цитата Сообщение от Vergil Посмотреть сообщение
А хорошей книги с примерами еще не нашел.
Вам - сюда:
Библиотека VCL и сопутствующие материалы
Путеводитель по книжкам про C++ Builder
1
43 / 37 / 17
Регистрация: 11.11.2009
Сообщений: 246
21.06.2013, 06:58  [ТС] 7
Столкнулся все же с нужностью удаления сего чуда. Точнее пересоздание. Допустим нажимаю на кнопку, и если такие Image существуют, то их удалить и снова создаем... Подскажите, как реализовать.
0
1090 / 588 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
21.06.2013, 08:09 8
Цитата Сообщение от Vergil Посмотреть сообщение
и если такие Image существуют
такие это какие?
удалять так же как создавать, только вместо
C++
1
dynImages[i] = new TImage(this);
так
C++
1
delete dynImages[i];
хотя может и не надо их удалять(и пересоздавать), можно просто грузить в них новые картинки
1
21.06.2013, 08:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.06.2013, 08:09
Помогаю со студенческими работами здесь

TImage C++builder
Помогите пожалуйста!!!!!! Я через OpenImageDialog загружаю картинку в TImage - всьо нормально но...

Компонент TImage
Рисую фигуру на TImage, остальное автоматически заливается белым, как этого избежать? Нужно что бы...

Очистка TImage
Доброго дня коллегам! Есть некоторая проблема с зачисткой TImage. Не могу понять что не так,...

StringGrid TImage
Столкнулся со следующей проблемой.Мне надо создать картинку(кнопку) в StringGrid. Делаю вот так ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru