Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
 Аватар для Виктор27
13 / 13 / 6
Регистрация: 21.11.2013
Сообщений: 365

Описание свойства, использующего поле

19.08.2015, 07:48. Показов 802. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят здравствуйте. Учусь на заочке, все на самостоятельном обучении. Дали задание, а разобраться не получается. Вернее что-то накидал, а как дальше не знаю. Прошу Вас помочь.

Задание: Для управления скоростью перемещения добавьте классу Point_Go закрытое поле speed и опишите свойство Speed, которое определяет величину перемещения в методах Left, Right, Up, Down. Например в Left: x-=speed.
Значение speed определяет величину перемещения объекта за один шаг.

Для управления направлением перемещения добавьте классу Point_Go поле direction, определяющее направление перемещения (1-влево, 2-вправо, 3-вверх, 4-вниз), и опишите свойство Dir для изменения значения свойства.

Для перемещения объекта по поверхности формы напишите метод Go_On(System::Windows::Forms::PictureBox ^Pbx), управляющий выбором направления перемещения по значению поля direction (используйте оператор swich)

Разместите на форме компонент Timer с интервалом 200 и в обработчике событий таймера вызовите метод Go_On - объект должен начать движение влево со скоростью 5 пикселей на интервал. Значения координат должны выводиться в текстовом поле. B->Go_On(this->pictureBox1);
this->textBox1->Text = B->ToString()

Пожалуйста...
Вложения
Тип файла: rar Super_Point - копия.rar (6.94 Мб, 0 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.08.2015, 07:48
Ответы с готовыми решениями:

Описание свойства контролла
Вопрос таков кто писал контроллы при написании свойства, что нужно написать чтобы выдать описание в подсказке свойства при готовом...

Странное описание свойства Form.KeyPreview
Наверное многие из уважаемых участников форума видели это разъяснение свойства KeyPreview, помещенное внизу окна свойства, а именно: ...

Как создать описание для свойства?
приветы всем. есть у меня юзерконтрол и в нем несколько свойств. когда вставляю этот юзерконтрол в форму хотелось бы чтобы у свойств...

10
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9674 / 4826 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
19.08.2015, 13:11
Свойство описывается с помощью ключевого слова property
Например
Цитата Сообщение от Виктор27 Посмотреть сообщение
добавьте классу Point_Go закрытое поле speed и опишите свойство Speed
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public ref class Point_Go
{
private:
    Double speed;
public:
    property Double Speed {
        Double get() {
            return speed;
        }
        void set(Double value) {
            speed = value;
        }
    }
}
1
 Аватар для Виктор27
13 / 13 / 6
Регистрация: 21.11.2013
Сообщений: 365
21.08.2015, 12:56  [ТС]
tezaurismosis, А как совместить методы Left, Right, Up, Down со свойством Speed?
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
21.08.2015, 13:03
Виктор27, что значит совместить?
0
 Аватар для Виктор27
13 / 13 / 6
Регистрация: 21.11.2013
Сообщений: 365
31.08.2015, 17:37  [ТС]
tezaurismosis, Подскажите пожалуйста как дальше, что то я запутался.
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9674 / 4826 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
31.08.2015, 19:17
Виктор27, что конкретно вам непонятно?
Ваш предыдущий вопрос про "совместить", я тоже не понял, честно говоря. Там в описании написано, что изменять методами
Цитата Сообщение от Виктор27 Посмотреть сообщение
Например в Left: x-=speed.
Вам понадобятся поля x и y для этих целей.
0
 Аватар для Виктор27
13 / 13 / 6
Регистрация: 21.11.2013
Сообщений: 365
31.08.2015, 19:39  [ТС]
Вот что у меня получается:
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
#include "stdafx.h"
#include "Form1.h"
 
using namespace Super_Point;
 
[STAThreadAttribute]
int main(array<System::String ^> ^args)
{
    Application::Run(gcnew Form1());
    return 0;
}
------------------------------------------------------------------------------------------
 
#include "StdAfx.h"
#include "Point_Go.h"
using namespace System;
 
Point_Go::Point_Go(void)                              // Конструктор по умолчанию
{
     x=y=1;
     speed = 5;
     direction = 1;
}
 
Point_Go:: Point_Go(int xx, int yy)
{
   x=xx;
   y=yy;
}
 
String ^ Point_Go::ToString()
 {
     return String::Format("({0},{1})",x,y);
 }
 
String ^ Point_Go::ToString2()
 {
     return String::Format("{0}",speed);
 }
 
void Point_Go:: Set(int xx ,int yy, System::Windows::Forms::PictureBox ^Pbx)
{
   x=xx;
   y=yy;
}
void Point_Go:: Draw(System::Windows::Forms::PictureBox ^Pbx)            // Присвоение координат картинке
    {
        Pbx->Left = x;
        Pbx->Top  = y;
    }
 
--------------------------------------------------------------------------------------------------------------------------------
 
#pragma once
using namespace System;
 
ref class Point_Go     // Ссылочный класс (класс .NET)
{
    int x,y;
public:
    Point_Go(void);
    virtual String ^ ToString()  override;
    virtual String ^ ToString2()  override;
    Point_Go(int, int);
    void Set(int,int, System::Windows::Forms::PictureBox ^Pbx);
    void Draw(System::Windows::Forms::PictureBox ^Pbx);
 
    void Set2(int sspeed, System::Windows::Forms::PictureBox ^Pbx)
    {
        speed=sspeed;
    }
   
property int X
{
    int get()
    {
       return x;
    }
    void set(int X)
    {
       x=X;
    }
}
property int Y
{
    int get()
    {
       return y;
    }
    void set(int Y)
    {
       y=Y;
    }
}
   
int direction;
//void Go_On(System::Windows::Forms::PictureBox ^Pbx)
//{
//  switch (direction)
//  {
//  case 37:
//      direction = Left(Pbx);
//      break;
//  case 50:
//      void Right();
//  default:
//      break;
//  }
//}
 
 
property int Speed
 {
     int get ()
     {
         return speed;
     }
     void set(int x)
     {
         speed = x;
     }
 }
 
int Left(System::Windows::Forms::PictureBox ^Pbx)
    {
        return x -= speed;
    }
void Right(System::Windows::Forms::PictureBox ^Pbx)
    {
        x += speed;
        Draw(Pbx);
    }
void Up(System::Windows::Forms::PictureBox ^Pbx)
    {
        y += speed;
    }
void Down(System::Windows::Forms::PictureBox ^Pbx)
    {
        y -= speed;
    }
 
private:
    int speed;                // Закрытое поле (speed) 
};
 
---------------------------------------------------------------------------------------------------------------
 
#pragma endregion
    private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e)         // Загрузка формы 
             {
                 this->textBox1->Text = B->ToString();
                 this->textBox2->Text = B->ToString2();
                 this->textBox3->Text = B->ToString2();
                 B->Draw(this->pictureBox1);
             }
    private: System::Void timer1_Tick(System::Object^  sender, System::EventArgs^  e)
             {
                 B->Right(this->pictureBox1);
                 //B->Go_On(this->pictureBox1);
                 this->textBox1->Text = B->ToString();
             }
    private: System::Void Form1_KeyDown(System::Object^  sender, System::Windows::Forms::KeyEventArgs^  e)
             {
                 int xx;
                 if (e->KeyValue == 37)
                 {
                     B->Speed = xx;
                     B->Left(this->pictureBox1);
                     B->Set2(xx, this->pictureBox1);
                     this->textBox2->Text = B->ToString2();
                     B->Left(this->pictureBox1);
                 }
 
                 if (e->KeyValue == 29)
                     B->Right(this->pictureBox1);
                 //B->Go_On(this->pictureBox1);
             }
 
 
    private: System::Void listBox1_SelectedIndexChanged(System::Object^  sender, System::EventArgs^  e)
         {
             if (this->listBox1->SelectedIndex == 0);
                 //B->Go_On(this->pictureBox1);
             
         }
Добавлено через 1 минуту
Белеберда какая-то(((
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9674 / 4826 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
31.08.2015, 19:55
  • Цитата Сообщение от Виктор27 Посмотреть сообщение
    C++
    63
    
    virtual String ^ ToString2()  override;
    У типа System::Object нет такого метода, а значит и переопределять нечего. Уберите слово override. А вот для ToString() оно к месту.
  • Цитата Сообщение от Виктор27 Посмотреть сообщение
    C++
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    
    property int X
    {
        int get()
        {
           return x;
        }
        void set(int X)
        {
           x=X;
        }
    }
    Из этого гремучего сплетения имён вряд ли что-то хорошее выйдет. Я не зря в примере использовал имя "value" - так принято.
    C++
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    property int X {
        int get() {
           return x;
        }
     
        void set(int value) {
           x = value;
        }
    }
    Тоже самое с Y
  • Цитата Сообщение от Виктор27 Посмотреть сообщение
    C++
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    
    int Left(System::Windows::Forms::PictureBox ^Pbx)
        {
            return x -= speed;
        }
    void Right(System::Windows::Forms::PictureBox ^Pbx)
        {
            x += speed;
            Draw(Pbx);
        }
    void Up(System::Windows::Forms::PictureBox ^Pbx)
        {
            y += speed;
        }
    void Down(System::Windows::Forms::PictureBox ^Pbx)
        {
            y -= speed;
        }
    Здравые идеи разбросаны по методам. Не нужно ничего возвращать и в каждом методе нужно менять положение PictureBox
    C++
    1
    2
    3
    4
    
    void Right(System::Windows::Forms::PictureBox ^Pbx) {
        x += speed;
        Draw(Pbx);
    }
    и так для всех (Left, Up, Down), меняйте только знаки перемещения.
0
 Аватар для Виктор27
13 / 13 / 6
Регистрация: 21.11.2013
Сообщений: 365
31.08.2015, 20:10  [ТС]
Ясно, я это исправлю. А как дальше? Как написать управление направлением? Как написать перемещение объекта? Помогите.
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9674 / 4826 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
31.08.2015, 20:20
Цитата Сообщение от Виктор27 Посмотреть сообщение
Как написать перемещение объекта?
Вы написали его - метод Draw должен менять положение PictureBox.
Про метод Go_On ясно написано
Цитата Сообщение от Виктор27 Посмотреть сообщение
напишите метод Go_On(System::Windows::Forms::PictureBox ^Pbx), управляющий выбором направления перемещения по значению поля direction (используйте оператор swich)
поле direction у вас есть. Пишите конструкцию switch и вызывайте Left или Rigth или Up или Down.
1
 Аватар для Виктор27
13 / 13 / 6
Регистрация: 21.11.2013
Сообщений: 365
01.09.2015, 12:24  [ТС]
tezaurismosis, Спасибо что уделили время. Только у меня все равно ничего не вышло((((
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.09.2015, 12:24
Помогаю со студенческими работами здесь

MaxScript в 3D max'e (добавить описание в свойства объекта)
Добрый день всем программерам! Все наверное видели MaxScript и наверное создавали скрипты:) Так вот у меня проблема , я не знаю как...

Как включить описание объектов окна свойства
После нехитрых манипуляций с VS пропали подсказки-описания объектов, выбираемых в окне свойства. Как их вернуть обратно!??

Как вернуть окно с описание выделенного свойства элемента?
При выделении свойства в конструкторе, должно появляться описание этого свойства(см. вложение). Полазил в настройках, не нашел. Как его...

Импорт значений в поле свойства типа СПИСОК
Здравствуйте. Подскажите. Есть свойства типа СПИСОК множественный выбор. Для того, чтобы импортировать в поле несколько значений как в...

Выражение нажатие кнопки введенное в поле свойства события вызывает ошибку
Добрый день форумчане. Я первый раз пользуюсь форумами, заранее прошу извинения может что не так скажу или сделаю. Проблема вот в чём: есть...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru