Приложение А (1230876), страница 4
Текст из файла (страница 4)
CB2.ItemIndex:=-1;
end;
end;
procedure TForm1.RB2Click(Sender: TObject);
begin
if RB2.Checked then
begin
Button1.Enabled:=true;
CB1.Enabled:=true;
CB2.Enabled:=true;
Label2.Enabled:=true;
Label3.Enabled:=true;
Memo1.Clear;
Memo2.Clear;
Memo3.Clear;
CB1.ItemIndex:=-1;
CB2.ItemIndex:=-1;
Memo3.ReadOnly:=false;
Memo2.ReadOnly:=false;
end;
end;
end.
Листинг кода программы, отвечающего за построение сетевого графика:
unit Unit12;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, TeEngine, ExtCtrls, TeeProcs, Chart, Series, GanttCh,
ArrowCha, Grids, DBGrids;
type
TForm12 = class(TForm)
Button1: TButton;
Chart1: TChart;
CB1: TComboBox;
Label1: TLabel;
CB2: TComboBox;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const mes: array [1..12] of string = ('01','02','03','04','05','06','07','08','09','10','11','12');
day: array [1..12] of integer = (31,29,31,30,31,30,31,31,30,31,30,31);
var
Form12: TForm12;
i,j:integer;
Series: array [1..100] of TGanttSeries;
COl: array [1..100] of TColor;
implementation
uses unit2,unit5;
{$R *.dfm}
procedure TForm12.Button1Click(Sender: TObject);
var TIME1,TIME2:TTime; // TIME1,TIME2-для
DATE1,DATE2:TDate;
FIO1,FIO2:string;
NumRec,ZV,y:integer;
SHIFR: array [1..100] of string;
DATI1,DATI2,Result:TDateTime;
Hour,min,sec:Word;
begin
y:=1;
DM.DS_GANT.Close;
DM.DS_GANT.SQLs.SelectSQL.Clear;
DM.DS_GANT.SelectSQL.Text:='select TIME_,DATE_,SOTR_,RABOTA.SHIFR_,FIO_,ID_FIO,DATI_,ZATR_TIME,OBJECTS.SHIFR_,ID_OBJ';
DM.DS_GANT.SelectSQL.Add(' FROM RABOTA,FIO,OBJECTS where (SOTR_ = ID_FIO) and (DATE_ BETWEEN ''01.'+IntToStr(CB1.ItemIndex+1)+'.'+CB2.Items.Strings[CB2.ItemIndex]+''' and '''+IntToStr(day[CB1.ItemIndex+1])+'.'+IntToStr(CB1.ItemIndex+1)+'.'+CB2.Items.Strings[CB2.ItemIndex]+''')');
Dm.DS_GANT.SelectSQL.Add(' and (ID_OBJ = RABOTA.SHIFR_) order by SOTR_,DATE_,TIME_,OBJECTS.SHIFR_');
DM.DS_GANT.Open;
DM.DS_GANT.Last;
NumRec:=DM.DS_GANT.RecordCount;
Dm.DS_GANT.First;
CHart1.ClearChart;
if (CB1.ItemIndex<>-1) and (CB2.ItemIndex<>-1) then
begin
for i:=1 to 100 do
begin
Series[i]:=TGanttSeries.Create(Chart1);
end;
while not DM.DS_GANT.EOF do
begin
i:=DM.DS_GANT.FBN('SOTR_').AsInteger;
j:=DM.DS_GANT.FBN('ID_OBJ').AsInteger;
DATI1:=DM.DS_GANT.FBN('DATI_').AsDateTime;
DATE1:=DM.DS_GANT.FBN('DATE_').AsDateTime;
TIME1:=DM.DS_GANT.FBN('TIME_').AsDateTime;
FIO1:=DM.DS_GANT.FBN('FIO_').AsString;
Shifr[j]:=DM.DS_GANT.FBN('SHIFR_1').AsString;
ZV:=DM.DS_GANT.FBN('ZATR_TIME').AsInteger;
DM.DS_GANT.Next;
DATE2:=DM.DS_GANT.FBN('DATE_').AsDateTime;
FIO2:=DM.DS_GANT.FBN('FIO_').AsString;
if (FIO1=FIO2) and
(DATE1=DATE2) and
(y<>NumRec)
then
begin
DATI2:=DM.DS_GANT.FBN('DATI_').AsDateTime;
Series[j].AddGanttColor(DATI1,DATI2,i,FIO1,Col[j]);
Series[j].Title:=Shifr[j];
Series[j].ColorEachPoint:=false;
Series[j].color:=col[j];
Chart1.AddSeries(Series[j]);
//Series[j].Marks.Visible:=true;
//Series[j].Marks.Style:=smsSeriesTitle;
//Series[j].Marks.Clip:=true;
end
else
begin
DM.DS_GANT.Prior;
DATI2:=DM.DS_GANT.FBN('DATI_').AsDateTime;
TIME2:=TIME1+StrToTime('0'+IntToStr(ZV)+':00:00');
ReplaceTime(DATI2,TIME2);
Series[j].AddGanttColor(DATI1,DATI2,i,FIO1,Col[j]);
Series[j].Title:=Shifr[j];
Series[j].ColorEachPoint:=false;
Series[j].color:=col[j];
Chart1.AddSeries(Series[j]);
//Series[j].Marks.Visible:=true;
//Series[j].Marks.Style:=smsSeriesTitle;
//Series[j].Marks.Clip:=true;
DM.DS_GANT.Next;
end;
Inc(y);
end;
Chart1.View3D:=false;
end
else
MessageDlg('Не выбран месяц или год!',mtError,[mbOk],0);
end;
procedure TForm12.FormActivate(Sender: TObject);
begin
for i:=1 to 100 do
begin
Col[i]:=RGB(random(255),random(255),random(255));
end;
end;
end.
156













