38 / 24 / 4
Регистрация: 21.02.2009
Сообщений: 249
1

Перечисление обьектов image.упрощение кода

17.12.2010, 20:42. Показов 1427. Ответов 4
Метки нет (Все метки)

В общем такая ситуация есть событие при нажатии кнопки где расставляются 30 картинок по позициям.попытался упростить код и сделать чтоб вызывалась процедура в которой можно просто задать допустим с 1 по 5 нужно по такому х и у.но при преобразовании в процедуру выдает такую ошибку:
[BCC32 Error] Unit1.cpp(23): E2297 'this' can only be used within a member function
на эту строчку
C++
1
TImage *Image = dynamic_cast <TImage *> (this->FindComponent(name));
далее приложение того как было и как надо сделать:
было:
C++
1
2
3
4
5
6
7
8
9
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
void __fastcall TForm1::N1Click(TObject *Sender)
{
AnsiString name;
int s,e,x=25,y=344;
y=264;
    for (int j=6; j <= 10; j++) {
        name="Image"+AnsiString(j);
        TImage *Image = dynamic_cast <TImage *> (this->FindComponent(name));
        if (Image) {
            Image->Left=x;
            Image->Top=y;
            y=y+20;
        } else ShowMessage("tu 4e tvorish"); }
         y=264;
    for (int j=11; j <= 15; j++) {
        name="Image"+AnsiString(j);
        TImage *Image = dynamic_cast <TImage *> (this->FindComponent(name));
        if (Image) {
            Image->Left=x;
            Image->Top=y;
            y=y+20;
        } else ShowMessage("tu 4e tvorish");
    }
    y=264;x=32;
    for (int z = 1; z <= 5; z++) {
        name="Image"+AnsiString(z);
        TImage *Image = dynamic_cast <TImage *> (this->FindComponent(name));
        if (Image) {
            Image->Left=x;
            Image->Top=y;
            y=y+20;
        } else ShowMessage("tu 4e tvorish");
    }
x=490;y=20;
    for (int z = 16; z <= 20; z++) {
        name="Image"+AnsiString(z);
        TImage *Image = dynamic_cast <TImage *> (this->FindComponent(name));
        if (Image) {
            Image->Left=x;
            Image->Top=y;
            y=y+20;
        } else ShowMessage("tu 4e tvorish");
    }
x=497;y=20;
    for (int z = 21; z <= 25; z++) {
        name="Image"+AnsiString(z);
        TImage *Image = dynamic_cast <TImage *> (this->FindComponent(name));
        if (Image) {
            Image->Left=x;
            Image->Top=y;
            y=y+20;
        } else ShowMessage("tu 4e tvorish");
    }
x=497;y=20; s=26; e=30;
    for (int z = s; z <= e; z++) {
        name="Image"+AnsiString(z);
        TImage *Image = dynamic_cast <TImage *> (this->FindComponent(name));
        if (Image) {
            Image->Left=x;
            Image->Top=y;
            y=y+20;
        } else ShowMessage("tu 4e tvorish");
    }
}
вот как хочу и где выдает ошибку:
C++
1
2
3
4
5
6
7
8
9
10
11
12
void posimg (int x,int y,int s,int e){
AnsiString name;
int k=y;
for (int j=s; j <= e; j++) {
        name="Image"+AnsiString(j);
        TImage *Image = dynamic_cast <TImage *> (this->FindComponent(name));
        if (Image) {
            Image->Left=x;
            Image->Top=k;
            k=k+20;
        } else ShowMessage("tu 4e tvorish"); }
}
Добавлено через 3 минуты
з.ы. еще как сделать спойлер в теме?))а то не смог сообразить как
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.12.2010, 20:42
Ответы с готовыми решениями:

Упрощение кода
Уважаемые знатоки. Есть такая часть кода в программе. sel=List-&gt;Selected-&gt;AbsoluteIndex+1;...

Упрощение кода программ
Ув. программисты,все мы пишем программы и у всех у нас иногда появляются ненужные куски кода.Мне...

Упрощение кода
Имеется несколько функций, где идет проверка заданной строки и потом выдает значение. Но вот в чем...

Упрощение кода
Добрый Всем день. Есть на форме кнопка0 и надпись0 и т. д.Их много и кода идинакового в кнопках...

4
Эксперт С++
3950 / 1805 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
17.12.2010, 21:18 2
Цитата Сообщение от KoFeMaH Посмотреть сообщение
[BCC32 Error] Unit1.cpp(23): E2297 'this' can only be used within a member function
Выхода минимум два:
1. Явно указать форму:
C++
1
2
3
int i = 1;
String Name="Image" + IntToStr(i);
TImage *Image = dynamic_cast <TImage *> (Form1->FindComponent(Name));
2. Объявить функцию в public-области класса.
В заголовочном файле (*.h) объявите прототип в public-области:
C++
1
void PosImg (int x, int y, int s, int e);
А в файле кода наполните функцию содержанием:
C++
1
2
3
4
void TForm1::PosImg (int x, int y, int s, int e)
{
  // ваши действия
}
Спойлер делается с помощью такого кода:
[SPOILER="Спойлер"]Текст, который нужно скрыть[/SPOILER]
1
38 / 24 / 4
Регистрация: 21.02.2009
Сообщений: 249
18.12.2010, 03:44  [ТС] 3
так как прошлую мою тему назвали дубликатом этой пишу тут.как можно сделать общее событие онмаусап для нескольких image причем в событии будет менятся координата image т.е. мы будем брать координату на которой ее отпустили и сравнивать с диапозоном координат.если она туда попала то поставить ее на заранее заданную позицию.
П.с. с уважением к участникам форума=)
0
Эксперт С++
3950 / 1805 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
18.12.2010, 13:22 4
KoFeMaH, так как вы не захотели прочитать решения, которые предлагались вам в предыдущих темах, продублирую часть личного сообщения вам в эту тему:
Цитата Сообщение от MikeSoft
В ней тоже обсуждается вопрос "как повесить одну функцию-обработчик на несколько одинаковых объектов".
То, что вы здесь чуть-чуть изменили задание - не оправдание. Суть осталась той же.
Мы уже неоднократно предлагали вам решение: выделите идентичные объекты, перейдите к событиям и напишите один единственный обработчик, в котором вместо явного указания объекта используйте приведение к типу параметр Sender.
0
38 / 24 / 4
Регистрация: 21.02.2009
Сообщений: 249
18.12.2010, 13:47  [ТС] 5
оффтоп
ето еще до личного было) по времени гляньте
я сообразил уже как.почистите тут сообщения если можно.ну чтоб лишнего не было.т.е. только то что кому то может пригодится)))
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.12.2010, 13:47
Помогаю со студенческими работами здесь

Упрощение кода
Ребята задача стояла такая, есть див asd_glavn на его фоне 5 блоков , нужно было сделать так что...

Упрощение кода
Здравствуйте. Можно ли в данном случае обойтись одним циклом вместо двух? List&lt;double&gt;...

упрощение кода
.vk{ display: block; padding: 12px 10px 15px; height: 13px; margin: 0px; font-weight: bold;...

Упрощение кода
$search_mask = search_mask($mask, DEL_SEC, $prev_key); /* Поиск подстроки в строке 0 (Верхние...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru