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

📄 serverviewunit.pas

📁 三层的通用架构
💻 PAS
字号:
unit ServerViewUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, ExtCtrls, Menus;

type
  TServerViewForm = class(TForm)
    Panel1: TPanel;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    Button4: TButton;
    PopupMenu1: TPopupMenu;
    A1: TMenuItem;
    N1: TMenuItem;
    I1: TMenuItem;
    Memo1: TMemo;
    Memo2: TMemo;
    procedure Panel1Resize(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure A1Click(Sender: TObject);
    procedure I1Click(Sender: TObject);
  private
    { Private declarations }
    FileName1, FileName2: string;
  public
    { Public declarations }
  end;

var
  ServerViewForm: TServerViewForm;
  AutoSaveLog: Boolean = False;

implementation

uses
  RDMUnit, ShareUnit, MainUnit;

{$R *.dfm}

procedure TServerViewForm.Panel1Resize(Sender: TObject);
begin
  Button1.Left := (TPanel(Sender).Width - (Button1.Width + Button2.Width + Button3.Width + Button4.Width)) div 5;
  Button2.Left := Button1.Left * 2 + Button1.Width;
  Button3.Left := Button1.Left * 3 + Button1.Width + Button2.Width;
  Button4.Left := Button1.Left * 4 + Button1.Width + Button2.Width + Button3.Width;
end;

procedure TServerViewForm.FormShow(Sender: TObject);
begin
  PageControl1.ActivePage := TabSheet1;
//  if RDM < 2 then
//    Application.MessageBox('当前没有远程客户连接该服务器!', '提示', MB_OK or MB_ICONINFORMATION);
end;

procedure TServerViewForm.Button1Click(Sender: TObject);
var
  aMemo: TMemo;
begin
  aMemo := nil;
  if PageControl1.ActivePage = TabSheet1 then
    aMemo := Memo1;
  if PageControl1.ActivePage = TabSheet2 then
    aMemo := Memo2;
  if aMemo <> nil then
    aMemo.Clear;
end;

procedure TServerViewForm.Button2Click(Sender: TObject);
var
  LogFile: TextFile;
  TheFileName, DateTimeString: string;
  aWinControl: TWinControl;
begin
  TheFileName := '';
  if PageControl1.ActivePage = TabSheet1 then
  begin
    if FileName1 = '' then
      FileName1 := Copy(Application.ExeName, 1, Length(Application.ExeName) - Length(ExtractFileExt(Application.ExeName))) + '.LOG';
    TheFileName := FileName1;
  end;
  if PageControl1.ActivePage = TabSheet2 then
    TheFileName := FileName2;
  if TheFileName = '' then Exit;
  with SaveDialog1 do
  begin
    InitialDir := ExtractFilePath(TheFileName);
    FileName := ExtractFileName(TheFileName);
    FilterIndex := 2;
    if (FileName = '') or (Pos(UpperCase(ExtractFileExt(FileName)) + '/', '.LOG/') > 0) then
      FilterIndex := 1;
    if Execute and (not FileExists(FileName) or (FileExists(FileName) and (Application.MessageBox(PChar('真的要覆盖文件 ' + FileName + ' 吗?'), '确认', MB_YESNO or MB_ICONINFORMATION) = IDYES))) then
    begin
      if PageControl1.ActivePage = TabSheet1 then
        FileName1 := FileName;
      if PageControl1.ActivePage = TabSheet2 then
        FileName2 := FileName;
      aWinControl := ShowHintString('正在保存记录至: ' + FileName + ' ...');
      DateTimeString := GetCurrentDateTime;
      AssignFile(LogFile, FileName);
      if FileExists(FileName) and (PageControl1.ActivePage = TabSheet1) then
        Append(LogFile)
      else
        Rewrite(LogFile);
      try
        if PageControl1.ActivePage = TabSheet1 then
        begin
          Writeln(LogFile, '----------------------------------------');
          Writeln(LogFile, '[' + DateTimeString + ']保存以下记录:');
          Writeln(LogFile, '----------------------------------------');
          Writeln(LogFile, '');
        end;
        Writeln(LogFile, Memo1.Lines.Text);
        if PageControl1.ActivePage = TabSheet1 then
        begin
          Writeln(LogFile, '');
          Memo1.Lines.Clear;
        end;
      finally
        CloseFile(LogFile);
      end;
      aWinControl.Free;
    end;
  end;
end;

procedure TServerViewForm.FormCreate(Sender: TObject);
begin
  FileName1 := '';
  FileName2 := '';
end;

procedure TServerViewForm.Button3Click(Sender: TObject);
var
  LogFile: TextFile;
  TempStr, ErrorString: string;
  aWinControl: TWinControl;
begin
  if FileName2 = '' then
    FileName2 := Copy(Application.ExeName, 1, Length(Application.ExeName) - Length(ExtractFileExt(Application.ExeName))) + '.LOG';
  with OpenDialog1 do
  begin
    PageControl1.ActivePage := TabSheet2;
    InitialDir := ExtractFilePath(FileName2);
    FileName := ExtractFileName(FileName2);
    FilterIndex := 2;
    if (FileName = '') or (Pos(UpperCase(ExtractFileExt(FileName)) + '/', '.LOG/') > 0) then
      FilterIndex := 1;
    if Execute then
    begin
      FileName2 := FileName;
      if FileExists(FileName) then
      begin
        aWinControl := ShowHintString('正在从文件 ' + FileName + ' 读取记录 ...');
        AssignFile(LogFile, FileName);
        try
          Reset(LogFile);
          Memo2.Clear;
          while not Eof(LogFile) do
          begin
            Readln(LogFile, TempStr);
            try
              ErrorString := '';
              Memo2.Lines.Add(TempStr);
            except
              on E:Exception do
              begin
                ErrorString := E.Message;
                Break;
              end;
            end;
          end;
        finally
          CloseFile(LogFile);
        end;
        aWinControl.Free;
        if ErrorString <> '' then
          Application.MessageBox(PChar(ErrorString), '警告', MB_OK or MB_ICONSTOP);
      end;
    end;
  end;
end;

procedure TServerViewForm.Button4Click(Sender: TObject);
begin
  Close;
end;

procedure TServerViewForm.A1Click(Sender: TObject);
begin
  AutoSaveLog := TMenuItem(Sender).Checked;
end;

procedure TServerViewForm.I1Click(Sender: TObject);
begin
  TheMainForm.ConnectionsView;
end;

end.

⌨️ 快捷键说明

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