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

📄 u_form1.~pas

📁 很好地delphi书籍源码
💻 ~PAS
字号:
unit U_Form1;

interface

uses
  SysUtils, Windows, Messages, Classes, Graphics, Controls,
  Forms, Dialogs, Grids, StdCtrls, OleCtrls, Menus,
  ExtCtrls, TeEngine, Series, TeeProcs, Chart, ComCtrls;

type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    File1: TMenuItem;
    Open1: TMenuItem;
    Save1: TMenuItem;
    SaveAs1: TMenuItem;
    N1: TMenuItem;
    Exit1: TMenuItem;
    Help1: TMenuItem;
    About1: TMenuItem;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    Chart1: TChart;
    Panel1: TPanel;
    UpdateButton: TButton;
    ExitButton: TButton;
    Splitter1: TSplitter;
    StringGrid1: TStringGrid;
    Series1: TBarSeries;
    Series2: TBarSeries;
    Series3: TBarSeries;
    Series4: TBarSeries;
    StatusBar1: TStatusBar;
    procedure FormCreate(Sender: TObject);
    procedure UpdateButtonClick(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure Open1Click(Sender: TObject);
    procedure Save1Click(Sender: TObject);
    procedure SaveAs1Click(Sender: TObject);
    procedure About1Click(Sender: TObject);
    procedure ExitButtonClick(Sender: TObject);
  private
    PointNum,CurveNum:byte;
    Modified: Boolean;
    CurrentFile: string;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
var
  I, J: Integer;
begin
  PointNum:=11;
  CurveNum:=5;
  with StringGrid1 do
  begin
    Cells [0, 0]:='轮次\枪手';
    ColCount:=PointNum ;
    RowCount:=CurveNum;
    {fills the fixed column and row,
    and the chart series names}
    for I := 1 to PointNum do
      Cells [I, 0] := Format ('第%d人', [I]);
    for J := 1 to CurveNum-1 do
    begin
      Cells [0, J] := Format ('第%d轮', [J]);
      Chart1.Series [J-1].Title := Format ('第%d轮', [J]);
    end;
    {fills the grid with random values}
    Randomize;
    for I := 1 to PointNum do
      for J := 1 to CurveNum do
        Cells [I, J] :=IntToStr(Random(100));
  end; // with
  UpdateButtonClick (self);
  Modified:=false;
  StatusBar1.SimplePanel:=true;
  StatusBar1.SimpleText:='还没有调入有效的资料! ';
end;

procedure TForm1.UpdateButtonClick(Sender: TObject);
var
  I, J: Integer;
begin
  for I := 1 to CurveNum-1 do
  begin
    Chart1.Series [I-1].Clear;
    for J :=1  to PointNum-1 do
    begin
      Chart1.Series [I-1].Add(
        StrToInt (StringGrid1.Cells [J, I]),
        Format('第%d人',[J]), Chart1.Series [I-1].SeriesColor);
    end;
  end;
  Modified := True;
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
  Code: Word;
begin
  if Modified then
  begin
    Code := MessageDlg (
      '数据已经改变, 需要保存吗?',mtConfirmation, mbYesNoCancel, 0);
    if Code = idYes then
      Save1Click (self);
    if Code = idCancel then
      CanClose := False
    else
      CanClose := True;
  end
  else
    CanClose := True;
end;

procedure TForm1.Open1Click(Sender: TObject);
var
  LoadStream: TFileStream;
  I, J, Value: Integer;
begin
  if OpenDialog1.Execute then
  begin
    CurrentFile := OpenDialog1.Filename;
    Caption := '图表 [' + CurrentFile + ']';
    {load from the current file}
    LoadStream := TFileStream.Create (
      CurrentFile, fmOpenRead);
    try
      {read the value of each grid element}
      for I := 1 to 5 do
        for J := 1 to 4 do
        begin
          LoadStream.Read (Value, sizeof (Integer));
          StringGrid1.Cells [I, J] := IntToStr(Value);
        end;
      LoadStream.Read (Value, sizeof (Integer));
    finally
      LoadStream.Free;
    end;
    UpdateButtonClick (self);
    Modified := False;
  end;
  StatusBar1.SimpleText:='当前文件:'+CurrentFile;
end;

procedure TForm1.Save1Click(Sender: TObject);
var
  SaveStream: TFileStream;
  I, J, Value: Integer;
begin
  if Modified then
    if CurrentFile = '' then
      {call save as}
      SaveAs1Click (self)
    else
    begin
      {save to the current file}
      SaveStream := TFileStream.Create (
        CurrentFile, fmOpenWrite or fmCreate);
      try
        {write the value of each grid element}
        for I := 1 to PointNum-1 do
          for J := 1 to CurveNum-1 do
          begin
            Value := StrToIntDef (Trim (
              StringGrid1.Cells [I, J]), 0);
            SaveStream.Write (Value, sizeof (Integer));
          end;
        SaveStream.Write (Value, sizeof (Integer));
        Modified := False;
      finally
        SaveStream.Free;
      end;
    end;
end;

procedure TForm1.SaveAs1Click(Sender: TObject);
begin
  if SaveDialog1.Execute then
  begin
    CurrentFile := SaveDialog1.Filename;
    Caption := 'Graph 4 [' + CurrentFile + ']';
    {call save}
    Modified := True;
    Save1Click (self);
  end;
end;

procedure TForm1.About1Click(Sender: TObject);
begin
  MessageDlg ('图表结合文件流操作的演示程序',
   mtInformation, [mbOk], 0);
end;


procedure TForm1.ExitButtonClick(Sender: TObject);
begin
  Close;
end;

end.

⌨️ 快捷键说明

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