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

📄 ufrmsetoil.pas

📁 a voice guide client ,it is the second part of voice guide center
💻 PAS
字号:
unit uFrmSetOil;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, dxDockControl, dxDockPanel, ComCtrls, TbListView,IniFiles,
  cxLookAndFeelPainters, StdCtrls, cxButtons,uFrmSetOilEdit;

type
  TFrmSetOil = class(TForm)
    dxDockSite1: TdxDockSite;
    dxDockPanel2: TdxDockPanel;
    dxLayoutDockSite1: TdxLayoutDockSite;
    btnAdd: TcxButton;
    btnDelete: TcxButton;
    btnModify: TcxButton;
    btnDefault: TcxButton;
    lvPrice: TTbListView;
    procedure lvPriceSelectItem(Sender: TObject; Item: TListItem;
      Selected: Boolean);
    procedure btnAddClick(Sender: TObject);
    procedure btnDeleteClick(Sender: TObject);
    procedure btnModifyClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure lvPriceCustomDrawItem(Sender: TCustomListView;
      Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
    procedure btnDefaultClick(Sender: TObject);
  private
    { Private declarations }
    iDefaultIndex :Integer;
  public
    { Public declarations }
    function FindColumn(const AIndex:Integer;const AStr:String):TListItem;
    procedure LoadFromIniFile();
    procedure SaveOilToIniFile();

  end;

var
  FrmSetOil: TFrmSetOil;

procedure ExeSetOil();

implementation

{$R *.dfm}

procedure TFrmSetOil.lvPriceSelectItem(Sender: TObject; Item: TListItem;
  Selected: Boolean);
begin
  btnDelete.Enabled  := Selected;
  btnModify.Enabled  := Selected;
  btnDefault.Enabled := Selected;
end;

procedure TFrmSetOil.btnAddClick(Sender: TObject);
var
  frmEdit:TFrmSetOilEdit;
  Item:TListItem;
  i:Integer;
begin
  frmEdit := TFrmSetOilEdit.Create(Self);
  frmEdit.cboOilType.Clear();
  for i := 0 to lvPrice.Items.Count -1 do
  begin
    frmEdit.cboOilType.Items.Add(lvPrice.Items[i].SubItems[0]);
  end;
  try
    frmEdit.ShowModal();
    if ((frmEdit.ModalResult = mrOk) and (frmEdit.Tag = 0)) then
    begin
      Item := lvPrice.Items.Add();
      Item.Caption := IntToStr(lvPrice.Items.Count + 1);
      Item.SubItems.Add(frmEdit.cboOilType.Text);
      Item.SubItems.Add(frmEdit.txtOilPrice.Text);
      Item.SubItems.Add(frmEdit.txtOilCost.Text);
    end;
  finally
    frmEdit.Free();
  end;
end;

procedure ExeSetOil();
var
  frmOilManger:TFrmSetOil;
begin
  frmOilManger := TFrmSetOil.Create(NIL);
  frmOilManger.Show();
end;

procedure TFrmSetOil.btnDeleteClick(Sender: TObject);
begin
  lvPrice.DeleteSelected;
end;

procedure TFrmSetOil.btnModifyClick(Sender: TObject);
var
  frmEdit:TFrmSetOilEdit;
  Item:TListItem;
begin
  frmEdit := TFrmSetOilEdit.Create(Self);
  if Assigned(lvPrice.Selected) then
  begin
    frmEdit.cboOilType.Text := lvPrice.Selected.SubItems[0];
  end
  else
    Exit;
  frmEdit.cboOilType.Enabled := False;
  frmEdit.ShowModal();
  if frmEdit.ModalResult = mrOk then
  begin
    Item := FindColumn(0,Trim(frmEdit.cboOilType.Text));
    Item.Caption := IntToStr(lvPrice.Items.Count + 1);
    Item.SubItems.Strings[1] := frmEdit.txtOilPrice.Text;
    Item.SubItems.Strings[2] := frmEdit.txtOilCost.Text;
  end;
end;

function TFrmSetOil.FindColumn(const AIndex: Integer;
  const AStr: String): TListItem;
var
  i:Integer;
begin
  Result := NIL;
  for i := 0  to lvPrice.Items.Count -1 do
  begin
    if (lvPrice.Items[i].SubItems[AIndex] = AStr) then
    begin
      Result := lvPrice.Items[i];
      Exit;
    end;
  end;
end;

procedure TFrmSetOil.LoadFromIniFile();
var
  IniFile: TIniFile;
  sAppPath: string;
  sIniFileName: string;
  i,iCount:Integer;
  sName:String;
  iPrice,iConsume:Double;
  Item:TListItem;
begin
  sIniFileName:= ChangeFileExt(Application.ExeName, '.ini');
  sAppPath:= ExtractFilePath(Application.ExeName);
  IniFile:= TIniFile.Create(sIniFileName);
  try
    iCount := IniFile.ReadInteger('Oil','Count',0);
    iDefaultIndex := IniFile.ReadInteger('Oil','Default',0);
    lvPrice.Items.Clear();    
    for i := 1 to iCount do
    begin
      sName  := IniFile.ReadString('Oil',Format('Oil%d_Name',[i]),'');
      iPrice := IniFile.ReadFloat('Oil',Format('Oil%d_Price',[i]),0.0);
      iConsume := IniFile.ReadFloat('Oil',Format('Oil%d_Consume',[i]),0.0);
      if ((sName <> '') and (iPrice<>0.0)) then
      begin
        Item := lvPrice.Items.Add();
        Item.Caption := IntToStr(i) ;
        Item.SubItems.Add(sName);
        Item.SubItems.Add(FloatToStr(iPrice));
        Item.SubItems.Add(FloatToStr(iConsume));
      end;
    end;

  finally
    iniFile.Free();
  end;
end;

procedure TFrmSetOil.SaveOilToIniFile();
var
  IniFile: TIniFile;
  sAppPath: string;
  sIniFileName: string;
  i,iCount:Integer;
  sName:String;
  iPrice,iConsume:Double;
  Item:TListItem;
begin
  sIniFileName:= ChangeFileExt(Application.ExeName, '.ini');
  sAppPath:= ExtractFilePath(Application.ExeName);
  IniFile:= TIniFile.Create(sIniFileName);
  iCount := lvPrice.Items.Count;
  IniFile.WriteInteger('Oil','Count',iCount);
  IniFile.WriteInteger('Oil','Default',iDefaultIndex);
  try
    for i := 0 to iCount -1 do
    begin
      IniFile.WriteString('Oil',Format('Oil%d_Name',[i + 1]),lvPrice.Items[i].SubItems[0]);
      IniFile.WriteFloat('Oil',Format('Oil%d_Price',[i + 1]),StrToFloat(lvPrice.Items[i].SubItems[1]));
      IniFile.WriteFloat('Oil',Format('Oil%d_Consume',[i + 1]),StrToFloat(lvPrice.Items[i].SubItems[2]));
    end;
  finally
    iniFile.Free();
  end;
end;

procedure TFrmSetOil.FormCreate(Sender: TObject);
begin
  LoadFromIniFile();
end;

procedure TFrmSetOil.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  SaveOilToIniFile();
end;

procedure TFrmSetOil.lvPriceCustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
  if Item.Index = iDefaultIndex - 1 then
  begin
    Sender.Canvas.Brush.Color := clInactiveCaptionText;
    Sender.Canvas.Font.Style  := [fsBold];
  end
  else
  begin
    Sender.Canvas.Brush.Color := clWhite;
    Sender.Canvas.Font.Style  := [];
  end;
end;

procedure TFrmSetOil.btnDefaultClick(Sender: TObject);
begin
  iDefaultIndex := lvPrice.Selected.Index + 1;
  lvPrice.Refresh();
end;

end.

⌨️ 快捷键说明

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