ガントチャートを作成する際の選択肢

解決


りっぴー  2022-02-01 08:22:49  No: 150001  IP: 192.*.*.*

会議室スケジュール管理を行っているのですが、一覧画面でガントチャートで使用時間帯を確認したいとの要望が…
データとして、日付、部屋、開始時間、終了時間、会議タイトルの項目があります
stringgrid+panel を利用する方法は発見したのですが、おすすめのガントチャートコンポーネントや
この手法はどうでしょう?なのがあれば教えていただけませんでしょうか

編集 削除
igy  2022-02-01 11:33:53  No: 150002  IP: 192.*.*.*

> ガントチャートで使用時間帯を確認したい

ガントチャートとのことですが、
実際の要望は、
例えば、
SMILE V / eValue V スケジューラ
https://www.otsuka-shokai.co.jp/erpnavi/product/evaluev-scheduler/
での、
ガントチャート
https://www.otsuka-shokai.co.jp/erpnavi/product/evaluev-scheduler/img/img-evaluev-scheduler-function-09-big.png
ではなく、
施設予約
https://www.otsuka-shokai.co.jp/erpnavi/product/evaluev-scheduler/img/img-evaluev-scheduler-function-02-big.png
のような画面だったり、しますか?

編集 削除
りっぴー  2022-02-01 13:00:52  No: 150003  IP: 192.*.*.*

igyさん

返答ありがとうございます、施設予約のグループ日チャートのようなイメージなります

編集 削除
りっぴー  2022-02-02 00:31:51  No: 150004  IP: 192.*.*.*

申し訳ございません、環境の記載がぬけておりました
DelphiXE3 pro + windows7 pro
DBはSqlserver2014 express
になります

編集 削除
mam  URL  2022-02-06 09:03:24  No: 150023  IP: 192.*.*.*

かなり参考にならないかもですが、
Delphiにバンドルでインストールされているteechart(TChart)にも
uses VCLTee.GanttCh;
でTGanttSeries(ガントチャート)を使うことができるみたいです。

編集 削除
りっぴー  2022-02-08 05:29:16  No: 150029  IP: 192.*.*.*

mamさん
返信ありがとうございます
TChartのガントチャートの情報があまりなくて、使い方に戸惑っている状況です…

とりあえず現状ここまではできたのですが
https://imgur.com/I5Qjjux

SG   一番下のグリッド 
Q_main 真ん中グリッドのQuery
FPanelCount グローバル変数のパネルのカウント


procedure TF_yotei.setpanel;
var
  Panel:TPanel;
  i:Integer;
  Panels:TComponent;
begin
  for i := 1 to FPanelCount do
  begin
    Panels := Application.FindComponent('Panel'+IntToStr(i));
    if Panels <> nil then
       Panels.Free;
  end;

  FPanelCount := 0;
  Q_main.DisableControls;

  while not Q_main.Eof do
  begin
    Inc(FPanelCount);
    Panel := TPanel.Create(Application);
    with panel do
    begin
      //表示位置
      Left := パネルの左を設定
      Top  := パネルの上を設定
      Height := SG.DefaultRowHeight -1;
      Width := パネル長さ設定
      Name := 'Panel'+IntToStr(FPanelCount);
      Caption := 'テスト';
      Parent := SG;
      ParentBackground := false;
      Color := $0080FF80;
    end;
    Q_main.Next;
  end;

  Q_main.First;
  Invalidate;
  Q_main.EnableControls;
end;


Parent := SG;にしているために、stringgridをスクロールバーで
左右に移動させても、パネルは定位置で中のグリッドのみ移動してしまいます。
グリッドの移動にも対応させる方法何かございませんでしょうか?

編集 削除
igy  2022-02-08 09:15:56  No: 150032  IP: 192.*.*.*

> グリッドの移動にも対応させる方法何かございませんでしょうか?

GridのOnTopLeftChangedイベントにて、パネルの位置を再調整するのは、いかがですか?

編集 削除
りっぴー  2022-02-08 23:59:08  No: 150036  IP: 192.*.*.*

igyさん

ありがとうございます、OnTopLeftChangedイベントなる物があるとは気づきませんでした
もう1つ相談なのですが、横スクロールでグリッドを移動した際に、
現在表示されている一番左のセルが何番目のセルか把握する方法やヒントはありますでしょうか…
それがわかれば解決しそうなのです…

編集 削除
mam  2022-02-09 00:22:50  No: 150037  IP: 192.*.*.*

外していたら申し訳ないのですが、
TStringGridをTScrollBoxの中に入れてしまってスクロールをTScrollBoxに任せてしまえば、楽かもです。
TStringGridの幅又は高さが固定、又は計算で決定できる場合に限りますが。

編集 削除
りっぴー  2022-02-09 00:35:45  No: 150038  IP: 192.*.*.*

mamさん

返信ありがとうございます。
TScrollBoxを使う方法もあるのですね、今後の参考にします。

今回は表示されている列の左は、LeftColプロパティで取得できそうなので、
こちらで計算してみようと思います。

みなさまありがとうございました

編集 削除