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

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

Код:
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 (не знаю как правильно задать вопрос), короче как их расставить на нужные места.
И как от родителя к чайлду нарисовать связи (полосы как на картинке).
Ответить с цитированием