unit Unit_XZDCMS;interfaceuses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Buttons, StdCtrls, ExtCtrls, Db, DBClient, ShellApi;type
  TForm_XZDCMS = class(TForm)
    RadioGroup1: TRadioGroup;
    cbUser: TComboBox;
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    SpeedButton1: TSpeedButton;
    cdsTemp: TClientDataSet;
    SaveDialog1: TSaveDialog;
    sbOK: TSpeedButton;
    sbCancel: TSpeedButton;
    procedure FormShow(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure sbOKClick(Sender: TObject);
    procedure sbCancelClick(Sender: TObject);
    procedure RadioGroup1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    LogFileName: string;
  end;var
  Form_XZDCMS: TForm_XZDCMS;implementation
uses SystemDM, unit_pub, Unit_XZDCB;
{$R *.DFM}procedure TForm_XZDCMS.FormShow(Sender: TObject);
var
  strCurDir: string;
  strFileName: string;
begin
  with cdsTemp do
  begin
    Close;
    CommandText := 'SELECT DISTINCT OWNER FROM ALL_TABLES';
    Open;
    while not Eof do
    begin
      cbUser.Items.Add(Fields[0].AsString);
      Next;
    end;
    Close;
    CommandText := ' SELECT  USERNAME FROM  USER_USERS';
    Open;
    cbUser.ItemIndex := cbUser.Items.IndexOf(Fields[0].AsString);
  end;
  strCurDir := ExtractFilePath(Paramstr(0));
  strFileName := strCurDir + 'EXP' + DateTimeToStr(Date);
  SaveDialog1.FileName := strFileName;
  edit1.Text := strFileName;end;procedure TForm_XZDCMS.SpeedButton1Click(Sender: TObject);
begin
  with SaveDialog1 do
    if Execute then
    begin
      edit1.Text := FileName;
    end;
end;procedure TForm_XZDCMS.sbOKClick(Sender: TObject);
var
  strCom: string;
  user: variant;
  sCommandLine: string;
  bCreateProcess: boolean;
  lpStartupInfo: TStartupInfo;
  lpProcessInformation: TProcessInformation;begin
 // LogFileName := GetTmpFileName();
  LogFileName := ChangeFileExt(edit1.Text, '.log');
  user := DmSystem.SocketConnection.AppServer.GetUserAndPass;
  case RadioGroup1.ItemIndex of
    0:
      begin
        sCommandLine := 'EXP ' + user[0] + '/' + user[1] + '@LZRL FULL=Y CONSISTENT=Y FILE=' + Edit1.Text + ' LOG=' + LogFileName;
      //  ShellExecute(Self.Handle, nil, 'EXP', Pchar(strCom), nil, sw_shownormal);
      end;
    1:
      begin
        sCommandLine := 'EXP ' + user[0] + '/' + user[1] + '@LZRL OWNER=' + cbUser.Text + ' CONSISTENT=Y FILE=' + Edit1.Text + ' LOG=' + LogFileName;
      end;
    2:
      begin
        TForm_XZDCB.Create(self);
        try
          Form_XZDCB.UserName := cbUser.Text;
          Form_XZDCB.ShowModal;
          if Form_XZDCB.ModalResult = mrOK then
          begin
            sCommandLine := 'EXP ' + user[0] + '/' + user[1] + '@LZRL TABLES=(' + Form_XZDCB.Tables + ') CONSISTENT=Y FILE=' + Edit1.Text + ' LOG=' + LogFileName;
          end;
        finally
          Form_XZDCB.Free;
        end;
      end;
  end;
  lpStartupInfo.dwFlags := STARTF_USESHOWWINDOW;
  lpStartupInfo.wShowWindow := SW_SHOWNORMAL;
  bCreateProcess := CreateProcess(nil,
    PChar(sCommandLine), nil, nil, True,
    HIGH_PRIORITY_CLASS, nil,
    nil, lpStartupInfo, lpProcessInformation);
  if bCreateProcess then
    WaitForSingleObject(lpProcessInformation.hProcess, INFINITE);  ModalResult := mrOK;
end;procedure TForm_XZDCMS.sbCancelClick(Sender: TObject);
begin
  ModalResult := mrCancel;
end;procedure TForm_XZDCMS.RadioGroup1Click(Sender: TObject);
begin
  if RadioGroup1.ItemIndex = 0 then
  begin
    Label1.Enabled := False;
    cbUser.Enabled := False;
  end
  else
  begin
    Label1.Enabled := True;
    cbUser.Enabled := True;
   //DmSystem.SocketConnection.AppServer.
  end;
end;end.