Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Shape'ы, Обращение к Shape как к массиву? 
:(
    Опции темы
kisoff
Дата 24.10.2005, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 19.9.2005

Репутация: нет
Всего: нет



Проблема: есть на форме, допустим, 20 объектов Shape. Нужно по-очереди закрашивать Shape'ы. Можно ли организовать закраску в цикле?

smile
PM MAIL   Вверх
BreakPointMAN
Дата 24.10.2005, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 15.9.2004
Где: Saratov

Репутация: 6
Всего: 24



20 объектов типа Shape? А они как создаются - во время работы программы, динамически то есть, или во время проектирования? Если динамически, то можно сделать массив указателей на объекты типа Shape, потом по индексу к ним обращаться. Впрочем, даже если во время проектирования они создаются, все равно можно массив сделать... А можно искать компонент по имени на форме, потом к нему обращаться - функция такая есть.


--------------------
"Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце")
PM WWW ICQ   Вверх
Artemon
Дата 25.10.2005, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

Репутация: 7
Всего: 20



Цитата

функция такая есть.


Нет такой ф-ии, есть массив всех объектов формы.


--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
Vyacheslav
Дата 25.10.2005, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 47
Всего: 59



Цитата(Artemon @ 25.10.2005, 10:07)
Нет такой ф-ии, есть массив всех объектов формы.

smile
Код

TComponent* __fastcall TComponent::FindComponent(const AnsiString AName);
extern PACKAGE TComponent* __fastcall FindGlobalComponent (constAnsiString Name);



--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
Artemon
Дата 25.10.2005, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

Репутация: 7
Всего: 20



Ошибся чуточку...........


--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
ksili
Дата 27.3.2006, 05:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: 1
Всего: 17



Странно, но когда я пишу
Код

TComponent *cur_shape;

cur_shape = frForm->frPreview1->Components->FindComponent("Shape1");

то возникает ошибка 'Too few parameters in call to '__fastcall TComponent::GetComponent(int)'
Откуда int, откуда GetComponent? не пойму

Это сообщение отредактировал(а) ksili - 27.3.2006, 05:02


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
_hunter
Дата 27.3.2006, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 24
Всего: 98



Components это не класс, а массив классов. отсюда и косяк


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Ctrl_Alt_Del
Дата 27.3.2006, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 11.3.2006
Где: Ставрополь

Репутация: 2
Всего: 2



Код
for(int i=0; i<20; ++i) ((TShape*)FindComponent("Shape"+IntToStr(i+1)))->Brush->Color=clRed;

PM MAIL ICQ   Вверх
kisoff
Дата 29.3.2006, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 19.9.2005

Репутация: нет
Всего: нет



Спасибо за ответы я разобрался!

smile
PM MAIL   Вверх
Edd
Дата 12.4.2006, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 23.3.2006

Репутация: нет
Всего: 1



Как создать массив Shape-ов, не лепив их в ручную (а также Edit-ов и других обьектов)?
Надо создать так, что-бы по нажатию на Shape он закрасился или что-нибудь другое сделал(главное чтобы на него можно было-бы кликнуть)
PM MAIL   Вверх
BreakPointMAN
Дата 12.4.2006, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 15.9.2004
Где: Saratov

Репутация: 6
Всего: 24



Цитата(Edd @ 12.4.2006, 14:56 Найти цитируемый пост)
Как создать массив Shape-ов, не лепив их в ручную (а также Edit-ов и других обьектов)?

В цикле.
Цитата(Edd @ 12.4.2006, 14:56 Найти цитируемый пост)
Надо создать так, что-бы по нажатию на Shape он
закрасился или что-нибудь другое сделал(главное чтобы на него можно было-бы кликнуть)

События OnMouseXXX помогут, пишешь единый обработчик для всех своих Shape'ов, в цикле назначаешь его всем своим Shape'ам. Если для разных Shape'ов нужно выполнять разные специфические действия, по Sender'у можно узнать, для какого именно объекта произошло событие.



--------------------
"Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце")
PM WWW ICQ   Вверх
Edd
Дата 13.4.2006, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 23.3.2006

Репутация: нет
Всего: 1



Я хотелбы пример, как для создания, так и на Click. smile smile smile
А то пока не понемаю. smile smile smile
PM MAIL   Вверх
Ctrl_Alt_Del
Дата 13.4.2006, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 11.3.2006
Где: Ставрополь

Репутация: 2
Всего: 2



В *.h объявляешь массив Shape'в и функцию-обработчик события OnMouseDown
Код

TShape *Shapes[N];
void __fastcall MyMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y);


В *.cpp собственно создание и обработка
Код

void __fastcall TForm1::MyMouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
     ShowMessage("I'm a clicked shape");
}

void __fastcall TForm1::FormCreate(TObject *Sender)
{
for(int i=0; i<N; ++i)
{
     Shapes[i]=new TShape(this);
     Shapes[i]->Width=10;
     Shapes[i]->Height=10;
     Shapes[i]->Left=(i+1)*10;
     Shapes[i]->Top=10;
     Shapes[i]->Parent=this;
     Shapes[i]->OnMouseDown=MyMouseDown;
}
}

PM MAIL ICQ   Вверх
Edd
Дата 14.4.2006, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 23.3.2006

Репутация: нет
Всего: 1



Всё хорошо, массив Shape создаёт, но вот процедура MyMouseDown не хочет запускаться.
Выдаёт ошыбку:

[C++ Error] Unit1.cpp(22): E2316 '_fastcall TForm1::MyMouseDown(TObject *,TMouseButton,TShiftState,int,int)' is not a member of 'TForm1'


Убираю "TForm1::" c MyMouseDown, ругается на
Код

Shapes[i]->OnMouseDown=MyMouseDown;


Помогите решить проблему пожалуйста! smile
(Может эту проблему отнести в новую тему???)

Это сообщение отредактировал(а) Edd - 14.4.2006, 19:48
PM MAIL   Вверх
Ctrl_Alt_Del
Дата 14.4.2006, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 11.3.2006
Где: Ставрополь

Репутация: 2
Всего: 2



Edd, наверное объявление забыл в *.h. положить
Код

void __fastcall MyMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y);

PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0582 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.