Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
403 / 19 / 5
Регистрация: 17.01.2017
Сообщений: 572

Как вывести параметры объекта в Memo?

28.07.2018, 11:31. Показов 2525. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
При щелчке мыши на кнопке создается объект и прорисовывается. Потом я этот объект добавляю в массив. В качестве массива я использую список, TObjectList. Как получить параметры объекта x0 и y0 и вывести их в Memo. Разумеется мне нужно их как-то извлечь из TObjectList?
Вот часть кода.
Delphi
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
 .....
TRect = class 
  private
   x0, y0: Integer;
   width, height: Integer;
   color : TColor;
   dragok : Boolean;
   Map_X, Map_Y: Integer;
  public
    constructor Create(_x0, _y0, _MapX, _MapY, w1, h1: Integer; _Color:TColor; _dragok:Boolean);
    Procedure Draw(Im:TImage; Bm:TBitmap;x:Integer;y,MapX,MapY:Integer); //Прорисовка
  end;
.....
var
ImPic : TBitmap;
  PicList: TObjectList;
  rect : TRect;
.....
constructor TRect.Create(_x0, _y0, _MapX, _MapY, w1, h1: Integer;
  _Color: TColor; _dragok: Boolean);
begin
  x0 := _x0;
  y0 := _y0;
  width := w1;
  height := h1;
  color := _Color;
  dragok := _dragok;
  Map_X := _MapX;
  Map_Y := _MapY;
end;
 
procedure TRect.Draw(Im:TImage; Bm: TBitmap; x, y, MapX, MapY: Integer);
begin
  Map_X := MapX;
  Map_Y := MapY;
  Im.Canvas.Draw(x,y,Bm);
end
.....
procedure TForm1.Button1Click(Sender: TObject);
var i,j,x,y:Integer;
begin
x := Random(100);
y := Random(100);
 rect := TRect.Create(x,y,0,0,50,50,clBlue,false);
 rect.Draw(Image1,ImPic,x,y,0,0);
 PicList.Add(rect);
 Memo1.Lines.Clear;
 for i := 0 to PicList.Count-1 do
 begin
//Не работает
   Memo1.Lines.Add('x='+IntToStr(PicList.Items[i].x0));
 end;
end;
Обычно в других языках программирования если я добавляю объект в массив, то его параметры достаточно вызвать через точку.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.07.2018, 11:31
Ответы с готовыми решениями:

Как из memo вывести в listbox все слова, которые начинаются на ту же букву, что и последнее слово из memo?
и при этом сохранить порядок слов которые были в memo

Как вывести в Memo результат от процедуры
Вот задача Реализовать рекурсивный алгоритм, в результате выполнения которого на экран выводится текст истории о попе и его собаке ...

Как вывести все ячейки StringGrid в Memo?
Есть необходимость импотра данных из StringGrid в Memo или Rich Edit, помогите плиззз, думал что типа этого должно быть for i:=0 to...

24
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,686
Записей в блоге: 21
29.07.2018, 16:07
Студворк — интернет-сервис помощи студентам
что это за волшебство?
выбрать файл и открыть другой файл с этим же именем, только лежащий где попало???
Delphi
1
    ImPic.LoadFromFile(ExtractFileName(OpenPictureDialog1.FileName));
FormDestroy тоже что-то не вижу. А кто разрушать ваши созданные объекты будет за вас?

ну и в третьих
impic - это ссылка. все переменные объектов - это ссылки
можете представлять ее себе как адрес квартиры, которую вы сдаете.
вы сначала даете этот адрес первому жильцу, тот приходит смотрит, все ок. обойки, ламинат, то сё
потом вы делаете там ремонт, вешаете розовые сопли, на стены живопись 15 века и камин в угол. (loadFromFile)
даете этот же адрес второму жильцу.
отгадайте, что вечером увидит первый ?
а второй?
адрес-то один.
если вы хотите, чтобы у каждого был свой, создавайте новый битмап для каждого объекта
но тогда и переменная ImPic нафиг не нужна
тогда создавайте битмап в TPic.Create и передавайте ему не ссылку а просто имя файла. тут и загрузите все это
1
403 / 19 / 5
Регистрация: 17.01.2017
Сообщений: 572
29.07.2018, 18:02  [ТС]
Теперь все работает как надо.
Delphi
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
TPic = class 
  private
   p:TPoint;
   width, height: Integer;
   color : TColor;
   dragok : Boolean;
   ImPic : TBitmap;
   str : String;
  public
    constructor Create(APt:TPoint; _str:String; _Color:TColor; _dragok:Boolean);
  end;
.....
constructor TPic.Create(APt:TPoint; _str:String; _Color: TColor; _dragok: Boolean);
begin
  ImPic := TBitmap.Create;
  ImPic.LoadFromFile(_str);
  p:=APt;
  str := _str;
  width := ImPic.Width;
  height := ImPic.Height;
  color := _Color;
  dragok := _dragok;
end;
......
procedure TForm1.FormDestroy(Sender: TObject);
begin
  Freeandnil(PicList);
end;
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,686
Записей в блоге: 21
29.07.2018, 18:07
отлично, но нет, не все
если вы в конструкторе делаете TBitmap.Create;
то нужно написать деструктор
Delphi
1
2
3
4
5
6
7
destructor Destroy; override;
...
destructor TPic.Destroy; 
begin
  impic.free;
  inherited Destroy;
end;
0
403 / 19 / 5
Регистрация: 17.01.2017
Сообщений: 572
29.07.2018, 19:20  [ТС]
Все добавила, я так понимаю, что теперь этот деструктор нужно вызвать при закрытии формы?
Delphi
1
2
3
4
5
procedure TForm1.FormDestroy(Sender: TObject);
begin
  Freeandnil(PicList);
  PicList.Free;
end;
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,686
Записей в блоге: 21
29.07.2018, 19:39
Freeandnil(PicList);
PicList.Free;
это почти одно и то же
только
Freeandnil(PicList) === begin PicList.free; Piclist:=NIL; end;

так что нужно оставить только FreeAndNil

а чтобы добавленные в список объекты у вас тоже удалялись
достаточно
List.Create(True)
при разрушении списка все объекты тоже будут разрушены
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.07.2018, 19:39

Как вывести текст в Label вместо Memo?
begin sum:=0; for m:=0 to form3.mmo5.Lines.Count-1 do begin sum:=sum+strtoint(form3.mmo5.Lines); end; ...

Как в Memo вывести буквы разными цветами?
Хочу в TMemo (TEdit) вывести строку, где, например все гласные буквы будут зелёным цветом. Знаю, как раскрасить целую строку. А вот...

Как вывести с memo в stringgrid (без повторения значений)?
Имеется компонент memo в нем n-ое количество значений, так же на форме имеется компонент Stringgrid...Необходимо текст(TString) с...

Как вывести в memo символ из расширенной таблицы ASCII
Вечер добрый, есть такой вопрос: нужно вывести в memo этот символ ■ , его ascii код 254. Функция chr(254) выводит букву "ю". ...

Как из ini-файла вывести значение типа integer в memo?
Записываю значение типа String: ini.WriteString('Section1', 'C', 'String'); Вытаскиваю его в Memo: Memo1.Lines.Strings:=...


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

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru