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

📄 commset.~pas

📁 Delphi6 开发的串口数据发送
💻 ~PAS
字号:
unit CommSet;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, ExtCtrls, Buttons;

type
  TFComSet = class(TForm)
    GroupBox1: TGroupBox;
    ComList: TStringGrid;
    GroupBox2: TGroupBox;
    Label1: TLabel;
    ERecv: TEdit;
    Label2: TLabel;
    Esend: TEdit;
    Bsave: TBitBtn;
    Bevel1: TBevel;
    BClose: TBitBtn;
    Badd: TBitBtn;
    BdelCurrRow: TBitBtn;
    BDelAll: TBitBtn;
    procedure BCloseClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure BaddClick(Sender: TObject);
    procedure BsaveClick(Sender: TObject);
    procedure ComListClick(Sender: TObject);
    procedure BdelCurrRowClick(Sender: TObject);
    procedure BDelAllClick(Sender: TObject);
  private
    CurrRow : integer;
    procedure DeleteRow(index:integer);//删除制定的行
    procedure SaveCommand();
    procedure AddCommand(Recv,Send : string);
    procedure InitCommandList();
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FComSet: TFComSet;

implementation

uses Unit1;

{$R *.dfm}

procedure TFComSet.DeleteRow(index:integer);//删除制定的行
var
    i:integer;
begin
    if (index>0) and (ComList.RowCount>2) then
    begin
        if index=ComList.RowCount-1 then
        begin
            ComList.Rows[index].Clear;
            ComList.RowCount:=ComList.RowCount-1;
        end
        else
        begin
            ComList.Rows[index].Clear;
            for i:=index to  ComList.RowCount-1 do
            begin
                ComList.Cells[0,i]:=ComList.Cells[0,i+1];
                ComList.Cells[1,i]:=ComList.Cells[1,i+1];
            end;
            ComList.RowCount:=ComList.RowCount-1;
        end;
    end
    else
        if (index=1) and (ComList.RowCount=2) then
        begin
            ComList.Rows[1].Clear;
            //ComList.cells[0,1]:='第1:';
        end;
end;

procedure TFComSet.SaveCommand();
var
    count,i : integer;
begin
    if ComList.Cells[0,1] <> '' then
    begin
        count := ComList.RowCount;
        i := 1;
        for i := 1 to count - 1 do
        begin
            Form1.WriteIni('命令交互列表','接受'+inttostr(i),ComList.Cells[0,i]);
            Form1.WriteIni('命令交互列表','发送'+inttostr(i),ComList.Cells[1,i]);
        end;
        Form1.WriteIni('命令交互列表','数量',inttostr(ComList.RowCount));
    end;
end;


procedure TFComSet.AddCommand(Recv,Send : string);
var
    r,s : string;
    i , long ,count: integer;
begin
    if (Recv <> '') and (Send <> '') then
    begin
        long := Length(recv);
        for i := 1 to long do
        begin
            if Recv[i] <> ' ' then
                r := r + Recv[i];
        end;
        long := Length(Send);
        for i := 1 to long do
        begin
            if Send[i] <> ' ' then
                s := s + Send[i];
        end;
        if (ComList.Cells[0,1]<>'') and (ComList.Cells[1,1]<>'') then
            ComList.RowCount := ComList.RowCount + 1;
        count := ComList.RowCount-1;
        ComList.Cells[0,count] := r;
        ComList.Cells[1,count] := s;
        ERecv.Text := '';
        ESend.Text := '';
        Erecv.SetFocus;
    end
    else
        MessageBox(FComSet.Handle,'接受或发送命令填写不完整!','错误',MB_OK+MB_ICONWARNING);
end;

procedure TFComSet.InitCommandList();
var
    count,i : integer;
begin
    count := 0;
    ComList.Cells[0,0] := '接受到的命令';
    ComList.Cells[1,0] := '发送的命令';
    count := StrToInt(Form1.ReadFromIni('命令交互列表','数量','0'));
    if count > 0 then
    begin
        i := 1;
        //ComList.RowCount := 0;
        ComList.RowCount := count ;
        while i <= count do
        begin
            ComList.Cells[0,i] := Form1.ReadFromIni('命令交互列表','接受'+inttostr(i),' ');
            ComList.Cells[1,i] := Form1.ReadFromIni('命令交互列表','发送'+inttostr(i),' ');
            i := i + 1;
        end;
    end;

end;

procedure TFComSet.BCloseClick(Sender: TObject);
begin
    close;
end;

procedure TFComSet.FormShow(Sender: TObject);
begin
    Form1.Hide();
    InitCommandList();
    CurrRow := 1;
end;

procedure TFComSet.FormClose(Sender: TObject; var Action: TCloseAction);
begin
    Form1.Show();
end;

procedure TFComSet.BaddClick(Sender: TObject);
begin
    AddCommand(Erecv.Text,ESend.Text);
end;

procedure TFComSet.BsaveClick(Sender: TObject);
begin
    SaveCommand();
    MessageBox(FComset.Handle,'保存完成!','确认',MB_OK);
end;

procedure TFComSet.ComListClick(Sender: TObject);
begin
    CurrRow := ComList.Row;
end;

procedure TFComSet.BdelCurrRowClick(Sender: TObject);
begin
    if MessageBox(FComSet.Handle,Pchar('确实要删除 行:  '+IntToStr(CurrRow)),'删除确认',MB_YESNO+MB_ICONQUESTION) = IDYES THEN
        DeleteRow(CurrRow);

end;

procedure TFComSet.BDelAllClick(Sender: TObject);
begin
    if MessageBox(FComSet.Handle,Pchar('确实要删除所有行吗? ','删除确认',MB_YESNO+MB_ICONQUESTION) = IDYES THEN
    begin
        ComList.RowCount := 2;
        ComList.Rows[1].Clear;
    end;
end;

end.

⌨️ 快捷键说明

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