Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 24.10.2014, 19:17
Yo_Asakyra Yo_Asakyra вне форума
Прохожий
 
Регистрация: 18.12.2011
Сообщения: 11
Репутация: 10
Вопрос Вложенные TCollection. Немного TLine

Здравствуйте, впервые использую коллекции и возникло небольшое недопонимание.
Пишу простенький графический 2D редактор.
Суть: Можно рисовать точки(вершины) и соединять их линиями(ребрами). Точки можно перемещать, а линии - удалять. Динамически создаются кадры, где возможны описанные действия. Все это дело нужно уметь сохранять и загружать, в связи с чем и начал копать в сторону коллекций.
Использую FireMonkey.
Для вершин взял TSelectionPoint. С ним в принципе проблем нет.
Для линий начал было использовать TLine, но застрял на том, что у TLine явно задаётся только начальная точка в виде Pointf(X, Y), а конечной нет. Пытался играть с Height Weight и градусами поворта, но безуспешно. Как протянуть TLine из одной точки в другую?
Рисуется всё это дело на Image который создаётся для каждого кадра.

А теперь собственно проблема:
Как организовать всё это через коллекции? У меня получилась такая иерархия, но чтото мне подсказывает, что я ошибаюсь.

Код:
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
{TPoint Section} 
  
 TPointItem = class(TCollectionItem)
 private
   fPoint: TSelectionPoint;
 protected
   { protected declarations }
 public
   { public declarations }
   constructor Create(Collection: TCollection); override;
   destructor Destroy; override;
   property Point: TSelectionPoint read fPoint write fPoint;
end;
 
 TPointsCollection = class(TCollection)
 private
   function GetItem(Index: Integer): TPointItem;
   procedure SetItem(Index: Integer; Value: TPointItem);
 public
   property Items[Index: Integer]: TPointItem read GetItem write SetItem; default;
   constructor Create(ItemClass: TCollectionItemClass);
   function Add: TPointItem;
 end;
 
  
 {TLine Section}
  
 TLineItem = class(TCollectionItem)
 private
   fLine: TLine;
 protected
   { protected declarations }
 public
   { public declarations }
   constructor Create(Collection: TCollection); override;
   destructor Destroy; override;
   property Point: TLine read fLine write fLine;
end;
 
 
 TLinesCollection = class(TCollection)
 private
   function GetItem(Index: Integer): TLineItem;
   procedure SetItem(Index: Integer; Value: TLineItem);
 public
   property Items[Index: Integer]: TLineItem read GetItem write SetItem; default;
   constructor Create(ItemClass: TCollectionItemClass);
   function Add: TLineItem;
 end;
 
 
 {TFrame Section}
  
 TFrameItem = class(TCollectionItem)
 private
   fBG: TImage;
   fPoints: TPointsCollection;
   fLines: TLinesCollection;
 protected
   { protected declarations }
 public
   { public declarations }
   constructor Create(Collection: TCollection); override;
   destructor Destroy; override;
   procedure Show;
   procedure Hide;
   procedure Clear;
 end;
  
 TFramesCollection = class(TCollection)
 private
   function GetItem(Index: Integer): TFrameItem;
   procedure SetItem(Index: Integer; Value: TFrameItem);
 public
   property Items[Index: Integer]: TFrameItem read GetItem write SetItem; default;
   constructor Create(ItemClass: TCollectionItemClass);
   function Add: TFrameItem;
 end;
 
 TFramesCon = class(TComponent)
 private
   fFrames: TFramesCollection;
   fOwner: TComponent;
   fActiveFrame: Integer;
 public
   destructor Destroy; override;
   property Frames: TFramesCollection read fFrames write fFrames;
   constructor Create(AOwner: TComponent);
   function Add: TFrameItem; 
 end;
Ответить с цитированием
 


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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:29.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025