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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.02.2018, 15:52   #1
Randewy
 
Регистрация: 19.01.2018
Сообщений: 7
По умолчанию Удаление массива pictureBox

Здравствуйте! Помогите, пожалуйста!
Сделал внуку калькулятор детский. Все работает, но «вес» огромный - более 2,5 мегабайт.
Оно и не мудрено: использовано более 60 pictureBox!
Решил попробовать создавать динамически pictureBox. Все вроде работает: при вводе цифры в textbox появляются pictureBox. Допустим, 3 - 3 картинки, 7 – 7 картинок. Но обратно не получается: было 7 картинок, ввожу цифру 4, а картинок так и осталось 7!
И удалить pictureBox никакими методами не получается! Подскажите, пожалуйста, как удалять такие pictureBox. На форме textbox1 и все (это я так экспериментирую на C++ VC 2010).
Код у меня такой:

Код:
private: System::Void textBox1_TextChanged(System::Object^  sender, System::EventArgs^  e) {
								 
if (textBox1->Text != "") {
				
int d=System::Convert::ToInt32(textBox1->Text); 					 
				 
 int i, b;
				array<PictureBox^>  ^my=gcnew array <PictureBox^> (10);
			if (i < (d-1)) {	
for(int i=0; i < my->Length; i++)
{
      if (i <= (d-1))
	  {
		   b=b+65;
my[i]=gcnew System::Windows::Forms::PictureBox;
my[i]->Parent = this;
            my[i]->BackColor = System::Drawing::SystemColors::Info;
            my[i]->Location = System::Drawing::Point(1+b, 250);
			my[i]->Size = System::Drawing::Size(60, 60);
			my[i]->Image=Image::FromFile("..\\0.gif");
			
	  }
}
			}
} 
	 }

_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 01.02.2018 в 15:56.
Randewy вне форума Ответить с цитированием
Старый 01.02.2018, 16:01   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Randewy Посмотреть сообщение
Сделал внуку калькулятор детский. Все работает, но «вес» огромный - более 2,5 мегабайт.
Ха-ха три раза.
Ну и что?! На дискетку не помещается?
Забудьте про оптимизацию по размеру файла.
Например, обычный стандартый виндузовский калькулятор (вообще без картинок) имеет размер 1 Мб. И что? Это кому-то мешает?

p.s. а по сути вопроса мне сказать нечего, я C++ не знаю и что Вы там с указателями творите - не понимаю...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.02.2018, 16:08   #3
Randewy
 
Регистрация: 19.01.2018
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Ха-ха три раза.
Ну и что?! На дискетку не помещается?
Забудьте про оптимизацию по размеру файла.
Например, обычный стандартый виндузовский калькулятор (вообще без картинок) имеет размер 1 Мб. И что? Это кому-то мешает?

p.s. а по сути вопроса мне сказать нечего, я C++ не знаю и что Вы там с указателями творите - не понимаю...
Да это, конечно, так. Калькулятор работает нормально, учит детей сложению-вычитанию. Но... руки чешутся сделать все поумнее, пограмотнее, что ли... Да и возможности программки расширятся в таком случае.
Randewy вне форума Ответить с цитированием
Старый 01.02.2018, 16:21   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Randewy Посмотреть сообщение
Но... руки чешутся сделать все поумнее, пограмотнее, что ли... Да и возможности программки расширятся в таком случае.
Это совсем другое дело! Тогда желаю Вам успехов!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.02.2018, 16:42   #5
gantzboss
Пользователь
 
Регистрация: 02.11.2017
Сообщений: 31
По умолчанию

Я не знаю С++
но по логике вы перед циклом сравниваете с i
разве в i не надо положить что то?
gantzboss вне форума Ответить с цитированием
Старый 01.02.2018, 17:13   #6
Randewy
 
Регистрация: 19.01.2018
Сообщений: 7
По умолчанию

Serge_Bliznykov - Спасибо!
gantzboss - Число создаваемых pictureBox 10, потому i считает от 0 до 9. Если i равно числу, введенному в textBox, то появляется столько же картинок. Проблема в том, что при уменьшении числа "лишние" картинки не исчезают! Допустим, ввели 7, появилось 7 картинок. Теперь вводим 4. На форме-то 7 картинок! И 3 ненужных должны исчезнуть, то есть их должно быть 4. Но этого не происходит. И вообще, никак не могу удалить эти картинки, ничем, хотя на этом форуме (и не только) все, кажется, перелопатил!
Randewy вне форума Ответить с цитированием
Старый 01.02.2018, 17:30   #7
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Цитата:
Сообщение от Randewy Посмотреть сообщение
И 3 ненужных должны исчезнуть
Но Вы же их нигде не удаляете, чего вдруг они исчезнут?

Вообще, по-моему, плохая идея - каждый раз создавать и удалять рисунки.
Если уж они складываются в массив, проще управлять их видимостью

Последний раз редактировалось Black Fregat; 01.02.2018 в 17:35.
Black Fregat вне форума Ответить с цитированием
Старый 01.02.2018, 17:35   #8
Randewy
 
Регистрация: 19.01.2018
Сообщений: 7
По умолчанию

Black Fregat
В этом-то вся проблема! Пробовал: delete, close? clear, dispose, remove...etc. То есть всем, что есть на этом форуме по удалению picturebox. Ничего не помогло! Вот я и прошу подсказать, как это сделать!
Randewy вне форума Ответить с цитированием
Старый 01.02.2018, 17:49   #9
Randewy
 
Регистрация: 19.01.2018
Сообщений: 7
По умолчанию

Black Fregat
Тоже пробовал! Картинки при Visible=true появляются. Но после первого своего появления их никак не удалить! Добавить можно (увеличить их число), а вот сделать вместо 7 - четыре ну никак!

Последний раз редактировалось Randewy; 01.02.2018 в 18:06.
Randewy вне форума Ответить с цитированием
Старый 01.02.2018, 18:04   #10
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Цитата:
Сообщение от Randewy Посмотреть сообщение
как это сделать
Если таки удалять - нужно делать remove из коллекции Controls родительской формы.

Цитата:
Сообщение от Randewy Посмотреть сообщение
Но после первого своего появления их никак не удалить!
Так они же скорее всего каждый раз, как сейчас, заново создаются? Создавайте их только один раз, при создании формы, и массив сделайте членом класса. А там, где они сейчас создаются, просто проходите по уже готовому массиву и проставляйте видимость.
Black Fregat вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление из массива Dennis777 Общие вопросы Delphi 3 14.01.2013 17:35
Удаление из массива pascal_luzer Паскаль, Turbo Pascal, PascalABC.NET 1 05.04.2012 12:23
удаление эл из массива Стас_с Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 11 06.08.2011 11:38
Удаление из массива Цветик Общие вопросы C/C++ 0 07.11.2010 20:34
Удаление из массива Цветик Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 14.10.2010 03:55