Показать сообщение отдельно
  #3  
Старый 13.11.2018, 18:28
duke2003 duke2003 вне форума
Прохожий
 
Регистрация: 14.04.2014
Сообщения: 13
Версия Delphi: Delphi 2007
Репутация: 10
По умолчанию

здравствуйте! про диаграмму Ганта почитаю.
а пока начал делать с помощью TImage. Картинки хранятся в базе SQL.
Таблица со столбцами - ID, Parent_ID, Image, Levels.
сделал пока пробный вариант:

Код:
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
private
    _Massiv_Image: array of TImage;
    _Param_Level: Integer;
    _NumberLeft: Integer;
    procedure CreateImage(_Number_Image, _Level: Integer; _Image: TStream);
 
procedure TfMain.FormShow(Sender: TObject);
var
  _Stream: TStream;
  _Param_Number_Image: Integer;
begin
  _Param_Level := -1;
 
  qImage.Close;
  qImage.Open;
 
  SetLength(_Massiv_Image, qImage.RecordCount);
  _Stream := TStream.Create;
  _Param_Number_Image := 1;
  while not qImage.Eof do
  begin
    _Stream := qImage.CreateBlobStream(qImageImage, bmRead);
 
    CreateImage(_Param_Number_Image, qImageLevel_Image.AsInteger, _Stream);
 
    _Param_Number_Image := _Param_Number_Image + 1;
    qImage.Next;
  end;
 
  _Stream.Free;
end;
 
procedure TfMain.CreateImage(_Number_Image, _Level: Integer; _Image: TStream);
begin
  _Massiv_Image[_Level] := TImage.Create(ScrollBox);
 
  _Massiv_Image[_Level].Parent := ScrollBox;
  _Massiv_Image[_Level].Picture.Graphic := TJPEGImage.Create;
  _Massiv_Image[_Level].Picture.Graphic.LoadFromStream(_Image);
  _Massiv_Image[_Level].Height := 100;
  _Massiv_Image[_Level].Width := 100;
 
  if _Level = _Param_Level then
    _NumberLeft := _NumberLeft + 1
  else
    _NumberLeft := 0;
 
  _Massiv_Image[_Level].Left := (_NumberLeft * 100 + _NumberLeft * 10) + 10;
  // Round((fMain.Width / (2 * _Count)) - (_Massiv_Image[_Number_Image].Width / 2));
  _Massiv_Image[_Level].Top := (_Level * 100 + _Level * 10) + 10;
  _Massiv_Image[_Level].Stretch := True;
 
  _Param_Level := _Level;
end;

в этом примере получилось вот так:
602 .jpg
а должно в данном случае получиться:
603.jpg
и варианты различны, есть такие в которых итог должен быть такой:
604.jpg

и вот вопросы:
в правильном ли я направлении двигаюсь?
возможны ли универсальные варианты по расположению TImage (не знаю как правильно задать вопрос), короче как их расставить на нужные места.
И как от родителя к чайлду нарисовать связи (полосы как на картинке).
Ответить с цитированием