⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 di_main.pas

📁 亚惠快餐管理信息系统 包括亚惠快餐管理的各项功能
💻 PAS
📖 第 1 页 / 共 3 页
字号:
  if (Sender is TDBEdit) = False then
    Exit;
  //显示MEMO字段=============================
  if (Sender as TDBEdit).Field.DataType in [ftMemo] then
  begin
    DI_DfmDBMemoField := TDI_DfmDBMemoField.Create(Self, (Sender as
      TDBEdit).Field.FieldName, TDI_DfmMain(Self));
    DI_DfmDBMemoField.Show;
    DI_DfmMain_ActiveMemoNumber := DI_DfmMain_ActiveMemoNumber + 1;
  end;
  //显示图形字段=============================
  if (Sender as TDBEdit).Field.DataType in [ftBlob, ftGraphic] then
  begin
    DI_DfmDBBlobField := TDI_DfmDBBlobField.Create(Self, (Sender as
      TDBEdit).Field.FieldName, TDI_DfmMain(Self));
    DI_DfmDBBlobField.Show;
    DI_DfmMain_ActiveBlobNumber := DI_DfmMain_ActiveBlobNumber + 1;
  end;
  //创建字典共用部分=============================
  if ((Sender as TDBEdit).DataSource.DataSet.State in [dsEdit, dsInsert]) = False
    then
    Exit;
  IdentifyString := 'DBEdit';
  if DBGrid1.SelectedField.DataType in [ftUnknown, ftSmallint, ftInteger,
    ftWord, ftBoolean, ftFloat, ftCurrency, ftBCD, ftBytes, ftVarBytes,
    ftAutoInc,
    ftBlob, ftParadoxOle, ftDBaseOle, ftTypedBinary, ftCursor, ftFixedChar,
    ftLargeint, ftADT, ftArray, ftReference, ftDataSet, ftOraBlob, ftOraClob,
    ftVariant, ftInterface, ftIDispatch, ftGuid, ftTimeStamp, ftFMTBcd] then
    Exit;
  if (Sender as TDBEdit).Field.DataType in [ftFloat, ftBCD] then
    Exit;
  //创建金钱字典=================================
{  if (Sender as TDBEdit).Field.DataType in [ftBCD] then
  begin
    TemporaryTableNames:=TStringList.Create;
    DI_DfmDataModule1.AnotherDBADOConnection.GetTableNames(TemporaryTableNames,False);
    DictionaryTableName:='Dic_'+TDBEdit(Sender).Field.FieldName;
    if TemporaryTableNames.IndexOf(DictionaryTableName)=-1  then
    begin
      if MessageDlg('没有字典,是否创建?',mtConfirmation,mbOKCancel,0)=mrCancel then Exit;
      with DI_DfmDataModule1.DictioneryADOQuery do
      begin
        Close;
        Sql.Clear;
        Sql.Add('Create Table '+DictionaryTableName);
        Sql.Add('(ID varChar (10),DICTIONARY Money not null Primary Key)');
        try ExecSql;
         except
           ShowMessage('error');
           Exit;
        end;
      end;
    end;
    DI_DfmDBDictionery:=TDI_DfmDBDictionery.Create(Self,DictionaryTableName,DBGrid1,TDBEdit(Sender),IdentifyString);
    DI_DfmDBDictionery.ShowModal;
    DI_DfmDBDictionery.Free;
    TemporaryTableNames.Free;
  end;}
  //创建数字字典=================================
{  if (Sender as TDBEdit).Field.DataType in [ftFloat] then
  begin
    TemporaryTableNames:=TStringList.Create;
    DI_DfmDataModule1.AnotherDBADOConnection.GetTableNames(TemporaryTableNames,False);
    DictionaryTableName:='Dic_'+TDBEdit(Sender).Field.FieldName;
    if TemporaryTableNames.IndexOf(DictionaryTableName)=-1  then
    begin
      if MessageDlg('没有字典,是否创建?',mtConfirmation,mbOKCancel,0)=mrCancel then Exit;
      with DI_DfmDataModule1.DictioneryADOQuery do
      begin
        Close;
        Sql.Clear;
        Sql.Add('Create Table '+DictionaryTableName);
        Sql.Add('(ID varChar (10),DICTIONARY float not null Primary Key)');
        try ExecSql;
         except
           ShowMessage('error');
           Exit;
        end;
      end;
    end;
    DI_DfmDBDictionery:=TDI_DfmDBDictionery.Create(Self,DictionaryTableName,DBGrid1,TDBEdit(Sender),IdentifyString);
    DI_DfmDBDictionery.ShowModal;
    DI_DfmDBDictionery.Free;
    TemporaryTableNames.Free;
  end;}
  //创建字符字典=================================
  if (Sender as TDBEdit).Field.DataType in [ftString, ftWideString] then
  begin
    TemporaryTableNames := TStringList.Create;
    DI_DfmDataModule1.AnotherDBADOConnection.GetTableNames(TemporaryTableNames,
      False);
    DictionaryTableName := 'Dic_' + TDBEdit(Sender).Field.FieldName;
    if TemporaryTableNames.IndexOf(DictionaryTableName) = -1 then
    begin
      if MessageDlg('没有字典,是否创建?', mtConfirmation, mbOKCancel, 0) =
        mrCancel then
        Exit;
      with DI_DfmDataModule1.DictioneryADOQuery do
      begin
        Close;
        Sql.Clear;
        Sql.Add('Create Table ' + DictionaryTableName);
        Sql.Add('(ID varChar (10),DICTIONARY varChar(' +
          IntToStr(TDBEdit(Sender).Field.Size) + ') not null Primary Key)');
        try
          ExecSql;
        except
          ShowMessage('error');
          Exit;
        end;
      end;
    end;
    DI_DfmDBDictionery := TDI_DfmDBDictionery.Create(Self, DictionaryTableName,
      DBGrid1, TDBEdit(Sender), IdentifyString);
    DI_DfmDBDictionery.ShowModal;
    DI_DfmDBDictionery.Free;
    TemporaryTableNames.Free;
  end;
  //创建日期字典==================
  if (Sender as TDBEdit).Field.DataType in [ftDate, ftTime, ftDateTime] then
  begin
    DI_DfmDBCalendar := TDI_DfmDBCalendar.Create(Self, DBGrid1, TDBEdit(Sender),
      IdentifyString);
    DI_DfmDBCalendar.ShowModal;
    DI_DfmDBCalendar.Free;
  end;
end;

//DBGrid回车换行================================================================

procedure TDI_DfmMain.DBGrid1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if ((Key = VK_UP) or (Key = VK_DOWN)) then
  begin
    TDBRecordNumber(sender);
  end;
  if Key = VK_RETURN then
  begin
    if dbgrid1.SelectedIndex = dbgrid1.Columns.Count - 1 then
    begin
      dbgrid1.SelectedIndex := 0;
      if dbgrid1.DataSource.DataSet <> nil then
        with dbgrid1.DataSource.DataSet do
        begin
          Next;
          if EOF and CanModify then
            Append;
        end;
    end
    else
      dbgrid1.SelectedIndex := dbgrid1.SelectedIndex + 1;
  end;
end;

//DBEdit回车换行================================================================

procedure TDI_DfmMain.TDBEditKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if ((Sender is TDBEdit) and (Key = VK_RETURN)) then
  begin
    if TDBEdit(Sender).TabOrder = DI_DfmMain_ActiveComponentNumber - 1 then
    begin
      if TDBEdit(Sender).DataSource.DataSet <> nil then
        with TDBEdit(Sender).DataSource.DataSet do
        begin
          Next;
          if EOF and CanModify then
            Append;
        end;
      if ScrollBox1.Controls[2 * DI_DfmMain_ActiveComponentNumber -
        DI_DfmMain_TemporaryComponentNumber] is TDBEdit then
        (ScrollBox1.Controls[2 * DI_DfmMain_ActiveComponentNumber -
          DI_DfmMain_TemporaryComponentNumber] as TDBEdit).SetFocus;
    end
    else
      perform(WM_NEXTDLGCTL, 0, 0);
  end;
end;

//确定只有在库上才能创建表======================================================

procedure TDI_DfmMain.TreeView1ContextPopup(Sender: TObject;
  MousePos: TPoint; var Handled: Boolean);
begin

end;

//监控记录状态==================================================================

procedure TDI_DfmMain.TTableADOQueryScroll(DataSet: TDataSet);
begin
  //  StatusBar1.Panels[2].Text:='    现在位于第 '+IntToStr(DI_DfmDataModule1.TTableADOQuery.RecNo)+' 条';
end;

procedure TDI_DfmMain.TDBRecordNumber(Sender: TObject);
begin
  StatusBar1.Panels[2].Text := '    现在位于第 ' +
    IntToStr(DI_DfmDataModule1.TTableADOQuery.RecNo) + ' 条';
end;

//选择服务器并显示数据库=====================================

procedure TDI_DfmMain.SelectServerToolButtonClick(Sender: TObject);
var
  MyServerNameNode, MyDatabaseNameNode, MyTableTypeNode, MyTTableNameNode:
  TTreeNode;
  i, j, TableTypeCount, TableCount: integer;
  RunCursor: TCursor;
  MyNodeInformation: PNodeInformation;
  ti: TInifile;
  TableType: string;
begin
  Screen.Cursor := crHourGlass;
  DI_DfmMain_ServerName := FrmMain.ServerName;
  if DI_DfmMain_ServerName = '' then
  begin
    Screen.Cursor := crDefault;
    Exit;
  end;
  StatusBar1.Panels[0].Text := '当前登录的数据库服务器为' +
    DI_DfmMain_ServerName;
  DI_DfmMain_ActiveComponentNumber := 0;
  DI_DfmMain_ActiveLabelStrings := TStringList.Create;
  DI_DfmMain_ActiveEditStrings := TStringList.Create;
  //增加服务器节点
  New(MyNodeInformation);
  MyNodeInformation^.EnglishName := '服务器名称:' + DI_DfmMain_SerVerName;
  MyNodeInformation^.ChineseName := '服务器名称:' + DI_DfmMain_SerVerName;
  MyServerNameNode := TreeView1.Items.AddObject(nil,
    MyNodeInformation^.ChineseName, MyNodeInformation);
  MyServerNameNode.ImageIndex := 16;
  MyServerNameNode.SelectedIndex := 16;
  //增加数据库节点
  New(MyNodeInformation);
  MyNodeInformation^.EnglishName := FrmMain.DbName;
  MyNodeInformation^.ChineseName := FrmMain.DbCName;
  MyDatabaseNameNode := TreeView1.Items.AddChildObject(MyServerNameNode,
    MyNodeInformation^.ChineseName, MyNodeInformation);
  MyDatabaseNameNode.ImageIndex := 18;
  MyDatabaseNameNode.SelectedIndex := 18;
  //增加表节点
  ti := TIniFile.Create(ExtractFilePath(Application.ExeName) + '\System.ini');
  TableTypeCount := ti.ReadInteger('System', 'TableTypeCount', 0);
  for i := 1 to TableTypeCount do
  begin
    TableType := ti.ReadString('TableTypeList', 'TableType' + IntToStr(i), '');
    if ((TableType <> SelTableType) and (SelTableType <> '业务管理子系统')) then
      Continue;
    New(MyNodeInformation);
    MyNodeInformation^.ChineseName := TableType;
    MyNodeInformation^.EnglishName := TableType;
    MyTableTypeNode := TreeView1.Items.AddChildObject(MyDatabaseNameNode,
      MyNodeInformation^.ChineseName, MyNodeInformation);
    MyTableTypeNode.ImageIndex := 14;
    MyTableTypeNode.SelectedIndex := 14;
    TableCount := ti.ReadInteger(TableType, 'TableCount', 0);
    for j := 1 to TableCount do
    begin
      New(MyNodeInformation);
      MyNodeInformation^.ChineseName := ti.ReadString(TableType, 'Table' +
        IntToStr(j), '');
      MyNodeInformation^.EnglishName :=
        GetTableEName(MyNodeInformation^.ChineseName);
      MyTTableNameNode := TreeView1.Items.AddChildObject(MyTableTypeNode,
        MyNodeInformation^.ChineseName, MyNodeInformation);
      MyTTableNameNode.ImageIndex := 14;
      MyTTableNameNode.SelectedIndex := 14;
    end;
  end;
  ti.Free;
  if TreeView1.Items.Count >= 2 then
    TreeView1.Items[1].Selected := True;
  DBGrid1.DataSource := DI_DfmDataModule1.TTableDataSource;
  DBGrid2.DataSource := DI_DfmDataModule1.TTableDataSource;
  DBNavigator1.DataSource := DI_DfmDataModule1.TTableDataSource;
  Screen.Cursor := RunCursor;
  DBGrid1.Visible := False;
  DBGrid2.Visible := False;
  Splitter2.Visible := False;
  NoteBook1.PageIndex := 1;
  TreeView1.Selected := TreeView1.Items[0];
  TreeView1.FullExpand;
end;

//清空当前所有数据库============================================================

procedure TDI_DfmMain.CloseServerToolButtonClick(Sender: TObject);
var
  i: integer;
begin
  if TreeView1.Items.Count = 0 then
    Exit;
  if DI_DfmMain_ActiveMemoNumber <> 0 then
  begin
    ShowMessage('存在未关闭的Memo字段显示窗口,请先关闭该窗口!');
    Exit;
  end;
  if DI_DfmMain_ActiveBlobNumber <> 0 then
  begin
    ShowMessage('存在未关闭的Blob字段显示窗口,请先关闭该窗口!');
    Exit;
  end;
  DI_DfmDataModule1.TTableADOQuery.Close;
  DI_DfmDataModule1.MasterADOQuery.Close;
  DI_DfmDataModule1.ChineseTableNameADOQuery.Close;
  DI_DfmDataModule1.AnotherDBADOConnection.Close;
  DI_DfmDataModule1.MasterADOConnection.Close;
  TreeView1.Hide;
  for i := DI_DfmMain_ActiveComponentNumber - 1 downto 0 do
  begin
    DI_DfmMain_ActiveLabelStrings.Objects[i].Free;
    DI_DfmMain_ActiveEditStrings.Objects[i].Free;
  end;
  for i := TreeView1.Items.Count - 1 downto 0 do
    Dispose(TreeView1.Items[i].Data);
  DI_DfmMain_ActiveLabelStrings.Free;
  DI_DfmMain_ActiveEditStrings.Free;
  DBGrid1.Visible := False;
  DBGrid2.Visible := False;
  Splitter2.Visible := False;
  NoteBook1.PageIndex := 1;
  StatusBar1.Panels[0].Text := '';
  StatusBar1.Panels[1].Text := '';
  StatusBar1.Panels[2].Text := '';
  TreeView1.Items.Clear;
  TreeView1.Refresh;
  TreeView1.Show;
end;

//打开表========================================================================

procedure TDI_DfmMain.OpenTableToolButtonClick(Sender: TObject);
var
  MyLabel: TLabel;
  MyDBEdit: TDBEdit;
  i, j, k: integer;
  DTableIdentify: integer;
  TableName: string;
begin
  if TreeView1.Items.Count = 0 then
    Exit;
  if ((TreeView1.Selected = nil) or (TreeView1.Selected.Level <= 2)) then
    Exit;
  if DI_DfmMain_ActiveMemoNumber <> 0 then
  begin
    ShowMessage('存在未关闭的Memo字段显示窗口,请先关闭该窗口!');
    Exit;
  end;
  if DI_DfmMain_ActiveBlobNumber <> 0 then
  begin
    ShowMessage('存在未关闭的Blob字段显示窗口,请先关闭该窗口!');
    Exit;
  end;
  DBGrid1.Columns.Clear;
  DTableIdentify := 0;
  GetReadOnlyFieldNames(TreeView1.Selected.Text, ReadOnlyFieldNames);
  //调整以前创建的构件========================================
  if DI_DfmMain_ActiveComponentNumber <> 0 then
  begin
    for j := 1 to DI_DfmDataModule1.TTableADOQuery.FieldCount do
    begin
      TDBEdit(DI_DfmMain_ActiveEditStrings.Objects[DI_DfmMain_ActiveComponentNumber - j]).Visible := False;
      TDBEdit(DI_DfmMain_ActiveEditStrings.Objects[DI_DfmMain_ActiveComponentNumber - j]).DataField := '';
      TLabel(DI_DfmMain_ActiveLabelStrings.Objects[DI_DfmMain_ActiveComponentNumber - j]).visible := False;
    end;
  end;
  DI_DfmDataModule1.TTableADOQuery.Close;
  DI_DfmDataModule1.AnotherDBADOConnection.Close;
  DI_DfmDataModule1.AnotherDBADOConnection.ConnectionString :=
    'Provider=SQLOLEDB.1;Persist Security Info=False;User ID=' + FrmMain.Dbuser
    +
    ';Password=' + FrmMain.DBPass + ';Initial Catalog=' + FrmMain.DbName +
    ';Data Source=' + FrmMain.ServerName;
  //打开T表================================
  with DI_DfmDataModule1.TTableADOQuery do
  begin
    Close;
    Sql.Clear;
    TableName := PNodeInformation(TreeView1.Selected.Data)^.EnglishName;
    Sql.Add('Select * From ' +
      PNodeInformation(TreeView1.Selected.Data)^.EnglishName);
    try
      Open;
    except
      ShowMessage('无法打开表!');
      Exit;
    end;
  end;
  //调整DBGrid=====================================================
  for k := 0 to DI_DfmDataModule1.TTableADOQuery.FieldCount - 1 do
  begin
    DBGrid1.Columns.Add;
    DBGrid1.Columns[k].Field := DI_DfmDataModule1.TTableADOQuery.Fields[k];
    DBGrid1.Columns[k].Title.Alignment := taCenter;
  end;
  //动态创建构件===================================================
  DBGrid1.Visible := True;
  DBGrid2.Visible := True;
  Splitter2.Visible := True;
  SetDBGridFieldsDisplay(DBGrid2);
  NoteBook1.PageIndex := 0;
  for i := 0 to DI_DfmDataModule1.TTableADOQuery.FieldCount - 1 do
  begin
    MyLabel := TLabel.Create(ScrollBox1);
    with Mylabel do
    begin
      Parent := ScrollBox1;
      Name := 'Label' + '' + IntToStr(DI_DfmMain_ActiveComponentNumber + i) +

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -