我的 system 主要有兩個 form~ menu 和 job sheet~ menu 到 jobsheet 的時候,十分之慢~ jobsheet 回到 menu 時也是~ 請大家幫忙
unit Menu; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls; type
TForm4 = class(TForm)
Button1: TButton;
ListBox1: TListBox;
Memo1: TMemo;
Label1: TLabel;
procedure ListBox1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Button1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
procedure keypress(Sender: TObject; var Key: Char);
procedure doubleclick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure PrepareCreate(Name : String);
private
{ Private declarations }
public
{ Public declarations }
end; var
Form4: TForm4;
UserName : String; implementation
uses jobsheet, invoiceSheet, Loginfrm;
{$R *.dfm} procedure TForm4.Button1Click(Sender: TObject);
begin
Form5.logout;
application.Terminate;
{
// MessageBox(Form4.Handle, 'Bye', 'Warning', MB_IConWARNING); // UserName := '';
if (form5 <> nil)
then
begin
Form5.logout;
form5.NameTxt.text := '';
end; form5.Visible := true;
close;
}
end; procedure TForm4.Button2Click(Sender: TObject);
begin
if Form8 = nil then
begin
Form8 := tForm8.Create(self);
end;
Form8.ShowModal();
end; procedure TForm4.Button3Click(Sender: TObject);
begin
Form4.Visible := false;
Form9.ShowModal();
end; procedure TForm4.FormCreate(Sender: TObject);
begin
Memo1.TabStop := False;
Memo1.Text := 'C-TRADE COMPUTER SYSTEM CO.'; ListBox1.Items.Clear;
// ListBox1.Items.Add('Login system'); // menuList := TStringList.Create;
ListBox1.Items.add('----------');
ListBox1.Items.add(' JOB ORDER FORM');
ListBox1.Items.add('------');
ListBox1.Items.add(' INVOICE FORM');
ListBox1.Items.add('');
ListBox1.Items.add('');
ListBox1.Items.add('');
ListBox1.Items.add('');
ListBox1.Items.add('');
ListBox1.Items.add('');
ListBox1.Items.add(' GENERAL REPORTING');
ListBox1.Items.add('----------------');
ListBox1.Items.add('--------------');
ListBox1.Items.add(' File Reorganization');
ListBox1.Items.add('Log Out System');
ListBox1.Selected[1] := true;
end; procedure TForm4.doubleclick(Sender: TObject);
var
sel : integer;
begin
if (ListBox1.Selected[1] = true) then
begin if Form8 = nil then
begin
//form8
Form8 := tForm8.Create(self); end
else
begin
Form8.precreate;
end;
try
self.Visible := false;
Form8.ShowModal();
except
showMessage('System Can not Open JobOrder now');
end;
end;
end; procedure TForm4.PrepareCreate(Name: String);
begin
UserName := Name;
Label1.Caption := UserName;
end; procedure TForm4.keypress(Sender: TObject; var Key: Char);
begin
doubleclick(self);
end; procedure TForm4.FormShow(Sender: TObject);
begin
Listbox1.SetFocus;
end; procedure TForm4.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Button1Click(sender);
end; procedure TForm4.Button1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (key = VK_ESCAPE) then
Button1Click(sender);
end; procedure TForm4.ListBox1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (key = VK_ESCAPE) then
Button1Click(sender);
if (key = VK_RETURN) then
doubleclick(sender);
end; end. unit jobsheet; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, DBTables, Grids, DBGrids, ExtCtrls, DBCtrls, Mask,
ADODB, Buttons, ppVar, ppCtrls, ppPrnabl, ppClass,
ppBands, ppDB, ppCache, ppEndUsr, ppDBPipe, ppComm, ppRelatv, ppProd, ppReport,
RpCon, RpConDS, RpBase, RpSystem, RpDefine, RpRave; type
TForm8 = class(TForm)
Button4: TButton;
ADOConnection1: TADOConnection;
BitBtn1: TBitBtn;
Button8: TButton;
DBGrid1: TDBGrid;
DataSource1: TDataSource;
ADOQuery1: TADOQuery;
ADOTable1: TADOTable;
DataSource2: TDataSource;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
DBEdit2: TDBEdit;
DBEdit1: TDBEdit;
ADOQuery1BOOKDATE: TDateTimeField;
ADOQuery1CLIENT: TWideStringField;
ADOQuery1STAFF: TWideStringField;
ADOQuery1DESCRIPT1: TWideStringField;
ADOQuery1DESCRIPT2: TWideStringField;
ADOQuery1DESCRIPT3: TWideStringField;
ADOQuery1EXPECTDATE: TDateTimeField;
ADOQuery1AM_PM: TWideStringField;
ADOQuery1M_HANDLER: TWideStringField;
ADOQuery1SUBHANDLER: TWideStringField;
ADOQuery1STATUS: TWideStringField;
ADOQuery1REMARKS: TWideStringField;
ADOQuery1LastMod: TWideStringField;
Button2: TButton;
GroupBox3: TGroupBox;
DataSource3: TDataSource;
ADOQuery2: TADOQuery;
ADOQuery3: TADOQuery;
ADOTable2: TADOTable;
ComboBox2: TComboBox;
statusCombo : TComboBox;
GroupBox4: TGroupBox;
GroupBox5: TGroupBox;
GroupBox2: TGroupBox;
ADOQuery4: TADOQuery;
Button3: TButton;
RvProject1: TRvProject;
RvSystem1: TRvSystem;
RvDataSetConnection1: TRvDataSetConnection;
ADODataSet1: TADODataSet;
Button5: TButton;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure DBGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure DBGrid1DblClick(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
// procedure ADOQuery1AfterEdit(DataSet: TDataSet); procedure statusComboSelect(Sender: TObject);
procedure DBGrid1TitleClick(Column: TColumn);
procedure DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure ADOQuery1CalcFields(DataSet: TDataSet);
procedure Button1Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure OnSelect(Sender: TObject);
// procedure FixDBGridColumnsWidth(const DBGrid: TDBGrid);
procedure FormCreate(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure refresh(DataSet: TDataSet);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure setFilter();
procedure precreate();
procedure orderby(); private
{ Private declarations }
public
{ Public declarations }
end; var
Form8: TForm8;
ListItem : TStrings;
dtprint : tdataset; implementation
uses Menu, joborder, Loginfrm, selectprint, rave,test; {$R *.dfm} procedure TForm8.Button2Click(Sender: TObject);
begin
dbgrid1.DataSource.DataSet.Edit;
dbgrid1.DataSource.DataSet.Post; Form4.Visible := true;
close;
end; procedure TForm8.Button5Click(Sender: TObject); begin
dbgrid1.DataSource.DataSet.EDIT;
dbgrid1.DataSource.DataSet.Post;
try
form2.ShowModal;
except
end;
end; procedure TForm8.Button4Click(Sender: TObject);
var
dt : tdataset;
begin
dbgrid1.DataSource.DataSet.Edit;
dbgrid1.DataSource.DataSet.Post; dt := DataSource2.DataSet;
if (dt.FieldByName('STATUS').AsString <> '') then
begin
if messagedlg('Are you sure to delete?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
DataSource2.DataSet.Delete; if DataSource2.DataSet is tadoquery then begin
tadoquery(DataSource2.DataSet).UpdateBatch;
end
end
end
else
begin
showMessage('No record');
end end;
procedure TForm8.refresh(DataSet: TDataSet);
begin
DataSet.Refresh;
ADOTable1.Refresh;
end; procedure TForm8.Button7Click(Sender: TObject);
begin adoQuery1.Close;
adoQuery1.SQL.Clear; try
adoQuery1.Open;
finally
adoQuery1.close;
adoQuery1.free;
end; end; procedure TForm8.FormCreate(Sender: TObject); begin
ShortDateFormat := dateFor;
adoConnection1.Close;
adoConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' form5.mapPath form5.dbname ';Persist Security Info=False';
try
adoConnection1.Open;
except
showMessage('找不到資料');
application.Terminate;
end; DBGrid1.DataSource.DataSet.Active := true;
ADOTable1.Active:= true;
setFilter; end; procedure TForm8.OnSelect(Sender: TObject);
var sql : String;
sqlVar : String;
Status : String; //status of the filter
HName : String; // Handler of the filter begin
// showMessage(comboBox2.text);
if (comboBox2.itemIndex = 0) then
begin
adoQuery1.Close;
adoQuery1.SQL.Clear;
sql := 'Select * from joborder1';
if (statuscombo.itemindex >0) then
begin
Status := statuscombo.text; if (statuscombo.ItemIndex = 1) then
begin
sql := sql ' where STATUS = ''OS'' or STATUS = ''WR''';
end
else
begin
sql := sql ' where STATUS = ''' Status ''' ';
end;
//showmessage(sqlVar);
end;
adoQuery1.SQL.Add(sql);
adoQuery1.Open;
end; if (comboBox2.ItemIndex <> 0) then
begin
HName := comboBox2.Text;
adoQuery1.Close;
adoQuery1.SQL.Clear;
sql := 'Select * from joborder1';
sqlVar := 'where M_HANDLER = ''' HName ''' '; if (statuscombo.itemindex =1) then
begin
sqlVar := sqlVar ' and (STATUS = ''OS'' or Status = ''WR'')';
end;
if (statuscombo.itemindex >1) then
begin
Status := statuscombo.text;
// showmessage(Status);
sqlVar := sqlVar ' and STATUS = ''' Status ''' '; end;
//showmessage(sqlVar);
adoQuery1.SQL.Add(sql);
adoQuery1.SQL.add(sqlVar);
adoQuery1.Open;
end;
orderby;
end; procedure TForm8.Button8Click(Sender: TObject);
var
dt : tdataset;
begin
dbgrid1.DataSource.DataSet.Edit;
dbgrid1.DataSource.DataSet.Post; dt := DataSource2.DataSet;
if (dt.FieldByName('STATUS').AsString <> '') then // if (DBGrid1.SelectedField.AsString <> '') then
begin
form1.editPrepare;
try
Form1.ShowModal;
except
showMessage('can not add detail now');
end
end
else
begin
showMessage('No record');
end;
end; procedure TForm8.Button1Click(Sender: TObject);
begin if DBGrid1.DataSource.DataSet is TCustomADODataSet then
with TCustomADODataSet(DBGrid1.DataSource.DataSet) do
begin
sort := 'EXPECTDATE' ' DESC';
Sort := 'M_Handler' ' ASC'; end; {
adoQuery1.Close;
adoQuery1.SQL.Add('order by M_handler');
showmessage(sql);
try
adoQuery1.Open;
except
end;
}
//showmessage(form5.mapPath); rvproject1.Close;
rvproject1.ProjectFile := form5.mapPath 'Project1.rav';
rvproject1.Execute;
end; procedure TForm8.setFilter;
begin // reset the comboboxs combobox2.Items.Clear;
statusCombo.Items.Clear;
// set the handler filter
Combobox2.Text := 'Please select the handler';
adoquery4.Active := false;
adoquery4.SQL.Clear;
adoquery4.SQL.Add('Select * from Staff;');
adoquery4.Open; comboBox2.items.Add('All Handler');
while not adoQuery4.eof do
begin
combobox2.items.add(adoQuery4['StaffID']);
adoQuery4.next;
end; // set the status filter
statusCombo.text := 'status';
adoquery4.Active := false;
adoquery4.SQL.Clear;
adoquery4.SQL.Add('Select * from Status;');
adoquery4.Open;
statuscombo.Items.add('All Status');
statuscombo.items.add('OS/WR');
while not adoQuery4.eof do
begin
statuscombo.items.add(adoQuery4['StatusID']);
adoQuery4.next;
end; adoquery4.Active := false; combobox2.ItemIndex :=0;
statuscombo.ItemIndex := 1;
end; procedure TForm8.ADOQuery1CalcFields(DataSet: TDataSet);
begin
with DataSource2.dataset do
begin
fieldbyname('Description').value:=fieldbyName('DESCRIPT1').value fieldbyName('DESCRIPT2').value;
end; end; procedure TForm8.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
pt: TGridcoord;
begin
pt:= DBGrid1.MouseCoord(x, y); if pt.y=0 then
DBGrid1.Cursor:=crHandPoint
else
DBGrid1.Cursor:=crDefault;
end; procedure TForm8.DBGrid1TitleClick(Column: TColumn);
{$J }
const PreviousColumnIndex : integer = -1;
{$J-}
begin
if DBGrid1.DataSource.DataSet is TCustomADODataSet then
with TCustomADODataSet(DBGrid1.DataSource.DataSet) do
begin
try
DBGrid1.Columns[PreviousColumnIndex].title.Font.Style :=
DBGrid1.Columns[PreviousColumnIndex].title.Font.Style - [fsBold];
except
end; Column.title.Font.Style :=
Column.title.Font.Style [fsBold];
PreviousColumnIndex := Column.Index; if (Pos(Column.Field.FieldName, Sort) = 1)
and (Pos(' DESC', Sort)= 0) then
Sort := Column.Field.FieldName ' DESC'
else
Sort := Column.Field.FieldName ' ASC';
end;
end;
procedure TForm8.statusComboSelect(Sender: TObject);
var
sql : String;
sqlVar : String;
Status : String; //status of the filter
HName : String; // Handler of the filter
begin //showMessage(statusCombo.text);
if (statusCombo.itemIndex = 0) then
begin
adoQuery1.Close;
adoQuery1.SQL.Clear;
sql := 'Select * from joborder1 ';
if (comboBox2.itemindex >0) then
begin
HName := comboBox2.text;
sql := sql ' where M_HANDLER = ''' HName ''' ';
end;
adoQuery1.SQL.Add(sql);
adoQuery1.Open;
end;
if (statusCombo.itemIndex = 1) then
begin
adoQuery1.Close;
adoQuery1.SQL.Clear;
sql := 'Select * from joborder1 where (Status = ''OS'' or Status = ''WR'')';
if (comboBox2.itemindex >0) then
begin
HName := comboBox2.text;
// showmessage(Status);
sql := sql ' and M_HANDLER = ''' HName ''' ';
//showmessage(sqlVar);
end;
adoQuery1.SQL.Add(sql);
adoQuery1.Open;
end;
if (statuscombo.ItemIndex > 1) then
begin
Status := statusCombo.Text;
adoQuery1.Close;
adoQuery1.SQL.Clear;
sql := 'Select * from joborder1';
sqlVar := 'where Status = ''' Status ''' ';
if (comboBox2.itemindex >0) then
begin
HName := comboBox2.text;
sqlVar := sqlVar ' and M_HANDLER = ''' HName ''' ';
end;
//showmessage(sqlVar);
adoQuery1.SQL.Add(sql);
adoQuery1.SQL.add(sqlVar);
adoQuery1.Open;
end;
orderby;
end; procedure TForm8.precreate;
begin
adoQuery1.Close;
adoQuery1.SQL.Clear;
adoQuery1.SQL.add('select * from joborder1 where STATUS = ''OS'' or STATUS = ''WR''');
adoQuery1.Open;
DBGrid1.DataSource.DataSet.Active := true;
ADOTable1.Active:= true;
setFilter;
orderby();
end;
procedure TForm8.Button3Click(Sender: TObject);
begin
dbgrid1.DataSource.DataSet.Edit;
dbgrid1.DataSource.DataSet.Post; OnSelect(Sender);
end;
procedure TForm8.BitBtn1Click(Sender: TObject);
begin
dbgrid1.DataSource.DataSet.Edit;
dbgrid1.DataSource.DataSet.Post; Form1.addPrepare;
try
Form1.ShowModal;
finally
end;
end;
procedure FixDBGridColumnsWidth(const DBGrid: TDBGrid);
var
i : integer;
TotWidth : integer;
VarWidth : integer;
ResizableColumnCount : integer;
AColumn : TColumn;
begin
//total width of all columns before resize
TotWidth := 0;
//how to divide any extra space in the grid
VarWidth := 0;
//how many columns need to be auto-resized
ResizableColumnCount := 0; for i := 0 to -1 DBGrid.Columns.Count do
begin
TotWidth := TotWidth DBGrid.Columns[i].Width;
if DBGrid.Columns[i].Field.Tag <> 0 then
Inc(ResizableColumnCount);
end; //add 1px for the column separator line
if dgColLines in DBGrid.Options then
TotWidth := TotWidth DBGrid.Columns.Count; //add indicator column width
if dgIndicator in DBGrid.Options then
TotWidth := TotWidth IndicatorWidth; //width vale "left"
VarWidth := DBGrid.ClientWidth - TotWidth; //Equally distribute VarWidth
//to all auto-resizable columns
if ResizableColumnCount > 0 then
VarWidth := varWidth div ResizableColumnCount; for i := 0 to -1 DBGrid.Columns.Count do
begin
AColumn := DBGrid.Columns[i];
if AColumn.Field.Tag <> 0 then
begin
AColumn.Width := AColumn.Width VarWidth;
if AColumn.Width < AColumn.Field.Tag then
AColumn.Width := AColumn.Field.Tag;
end;
end;
end; (*FixDBGridColumnsWidth*) procedure TForm8.FormResize(Sender: TObject);
begin
//FixDBGridColumnsWidth(DBGrid1); end; procedure TForm8.DBGrid1DblClick(Sender: TObject);
begin
Button8Click(Sender);
end; procedure TForm8.DBGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (key = VK_F11) then
Button8Click(self);
if (key = VK_F10) then
BitBtn1Click(self);
if (key = VK_ESCAPE ) then
Button2Click(sender); //if (Shift = [ssCtrl]) and (key = VK_Delete) then
// Button4Click(sender); if (key = VK_F12) then
begin
dbgrid1.DataSource.DataSet.Edit;
dbgrid1.DataSource.DataSet.Post;
end;
if (key = VK_F1) then
begin end; end; procedure TForm8.orderby;
begin
if DBGrid1.DataSource.DataSet is TCustomADODataSet then
with TCustomADODataSet(DBGrid1.DataSource.DataSet) do
begin
sort := 'EXPECTDATE' ' DESC';
end;
end;
procedure TForm8.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Button2Click(self);
end; end.