会議室スケジュール管理を行っているのですが、一覧画面でガントチャートで使用時間帯を確認したいとの要望が…
データとして、日付、部屋、開始時間、終了時間、会議タイトルの項目があります
stringgrid+panel を利用する方法は発見したのですが、おすすめのガントチャートコンポーネントや
この手法はどうでしょう?なのがあれば教えていただけませんでしょうか
> ガントチャートで使用時間帯を確認したい
ガントチャートとのことですが、
実際の要望は、
例えば、
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
のような画面だったり、しますか?
igyさん
返答ありがとうございます、施設予約のグループ日チャートのようなイメージなります
申し訳ございません、環境の記載がぬけておりました
DelphiXE3 pro + windows7 pro
DBはSqlserver2014 express
になります
かなり参考にならないかもですが、
Delphiにバンドルでインストールされているteechart(TChart)にも
uses VCLTee.GanttCh;
でTGanttSeries(ガントチャート)を使うことができるみたいです。
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をスクロールバーで
左右に移動させても、パネルは定位置で中のグリッドのみ移動してしまいます。
グリッドの移動にも対応させる方法何かございませんでしょうか?
> グリッドの移動にも対応させる方法何かございませんでしょうか?
GridのOnTopLeftChangedイベントにて、パネルの位置を再調整するのは、いかがですか?
igyさん
ありがとうございます、OnTopLeftChangedイベントなる物があるとは気づきませんでした
もう1つ相談なのですが、横スクロールでグリッドを移動した際に、
現在表示されている一番左のセルが何番目のセルか把握する方法やヒントはありますでしょうか…
それがわかれば解決しそうなのです…
外していたら申し訳ないのですが、
TStringGridをTScrollBoxの中に入れてしまってスクロールをTScrollBoxに任せてしまえば、楽かもです。
TStringGridの幅又は高さが固定、又は計算で決定できる場合に限りますが。
mamさん
返信ありがとうございます。
TScrollBoxを使う方法もあるのですね、今後の参考にします。
今回は表示されている列の左は、LeftColプロパティで取得できそうなので、
こちらで計算してみようと思います。
みなさまありがとうございました
ツイート | ![]() |