uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, VIPUB, SG, StdCtrls, Buttons, ComCtrls,
G_SetupDlg, T_SetupDlg, E_SetupDlg, F_SetupDlg, Knob;type
TSG_Form = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Wave_Pic: TImage;
WaveNum_SB: TScrollBar;
Start_btn: TSpeedButton;
ReDraw_timer: TTimer;
WavePure_ChB: TCheckBox;
Sub20DB_ChB: TCheckBox;
FilterOpt_CB: TComboBox;
Panel4: TPanel;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
SpeedButton5: TSpeedButton;
SpeedButton6: TSpeedButton;
SpeedButton7: TSpeedButton;
SpeedButton8: TSpeedButton;
TrigerType_CB: TComboBox;
Label2: TLabel;
SpeedButton10: TSpeedButton;
Frequency_Edit: TEdit;
Amplitude_Edit: TEdit;
YOffset_Edit: TEdit;
SetupWavePara_Btn: TSpeedButton;
Label1: TLabel;
Label3: TLabel;
Label4: TLabel;
SingleWave_RB: TCheckBox;
Knob1: TKnob;
Image1: TImage;
Knob2: TKnob;
Image2: TImage;
UpDown1: TUpDown;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure WaveNum_SBChange(Sender: TObject);
procedure Start_btnClick(Sender: TObject);
procedure ReDraw_timerTimer(Sender: TObject);
procedure BClick(Sender: TObject);
procedure Sub20DB_ChBClick(Sender: TObject);
procedure FilterOpt_CBChange(Sender: TObject);
procedure SetupWavePara_BtnClick(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure TrigerType_CBChange(Sender: TObject);
procedure Frequency_EditExit(Sender: TObject);
procedure Frequency_EditKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Amplitude_EditExit(Sender: TObject);
procedure YOffset_EditExit(Sender: TObject);
procedure SingleWave_RBClick(Sender: TObject);
procedure UpDown1Click(Sender: TObject; Button: TUDBtnType);
procedure Knob1Change(Sender: TObject);
procedure Knob2Change(Sender: TObject);
procedure Knob2MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Knob1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
procedure SGCreate(Pn: TPanel);
public
{ Public declarations }
end;var
SG_Form: TSG_Form;implementation{$R *.dfm}procedure TSG_Form.SGCreate(Pn: TPanel);
begin
InitSG;
Frequency_Edit.Text := FloatToStr(SGFrequency);
Amplitude_Edit.Text := FloatToStr(SGAmplitude);
YOffset_Edit.Text := FloatToStr(SGYOffset);
WaveNum_SB.Position := SGWaveNum;
DrawWave(Wave_Pic);
end;procedure TSG_Form.FormCreate(Sender: TObject);
begin
SGCreate(panel1);
end;procedure TSG_Form.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caHide;
DeviceStates[SGID].Showed := False;
end;procedure TSG_Form.WaveNum_SBChange(Sender: TObject);
begin
SGWaveNum := WaveNum_SB.Position;
if SGSendWave then
begin
DownLoad;
DrawWave(Wave_Pic);
end
else
DrawWave(Wave_Pic);
WaveNum_SB.Hint := IntToStr(SGWaveNum) + '个周期波形';
end;procedure TSG_Form.Start_btnClick(Sender: TObject);
begin
SGSetRelayByte := SGSetRelayByte and $f3;
if not SGSendWave then
begin
SGSetConByte := SGSetConByte and $ef;
SetCON(SGSetConByte, 0);
SGSetRelayByte := SGSetRelayByte or $08;
SGSendWave := True;
SetRelay(SGSetRelayByte, 0);
DownLoad;
DrawWave(Wave_Pic);
Start_Btn.Caption := '关闭';
end
else
begin
SGSetConByte := SGSetConByte or $10;
SetCON(SGSetConByte, 0);
SGSetRelayByte := SGSetRelayByte or $04;
SGSendWave := False;
SetRelay(SGSetRelayByte, 0);
Start_Btn.Caption := '输出';
end;
end;procedure TSG_Form.ReDraw_timerTimer(Sender: TObject);
begin
DrawWave(Wave_Pic);
end;procedure TSG_Form.BClick(Sender: TObject);
begin
SGWavePure := WavePure_ChB.Checked;
if SGSendWave then
begin
DownLoad;
DrawWave(Wave_Pic);
end
else
DrawWave(Wave_Pic);
end;procedure TSG_Form.Sub20DB_ChBClick(Sender: TObject);
begin
SGSetRelayByte := SGSetRelayByte and $cf;
if Sub20DB_ChB.Checked then
SGSetRelayByte := SGSetRelayByte or $20
else
SGSetRelayByte := SGSetRelayByte or $10;
SetRelay(SGSetRelayByte, 0);
end;procedure TSG_Form.FilterOpt_CBChange(Sender: TObject);
begin
SGFilter := FilterOpt_CB.ItemIndex;
if SGFilter = 1 then SGFilter := 2
else if SGFilter = 2 then SGFilter := 1;
SetFir(SGFilter, 0);
if SGFilter < 4 then
begin
SGSetRelayByte := SGSetRelayByte and $fc; // 1111 1100
SGSetRelayByte := SGSetRelayByte or $01;
SetRelay(SGSetRelayByte,0);
end
else
begin
SGSetRelayByte := SGSetRelayByte and $fc; // 1111 1100
SGSetRelayByte := SGSetRelayByte or $02;
SetRelay(SGSetRelayByte,0);
end;
end;
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, VIPUB, SG, StdCtrls, Buttons, ComCtrls,
G_SetupDlg, T_SetupDlg, E_SetupDlg, F_SetupDlg, Knob;type
TSG_Form = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Wave_Pic: TImage;
WaveNum_SB: TScrollBar;
Start_btn: TSpeedButton;
ReDraw_timer: TTimer;
WavePure_ChB: TCheckBox;
Sub20DB_ChB: TCheckBox;
FilterOpt_CB: TComboBox;
Panel4: TPanel;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
SpeedButton5: TSpeedButton;
SpeedButton6: TSpeedButton;
SpeedButton7: TSpeedButton;
SpeedButton8: TSpeedButton;
TrigerType_CB: TComboBox;
Label2: TLabel;
SpeedButton10: TSpeedButton;
Frequency_Edit: TEdit;
Amplitude_Edit: TEdit;
YOffset_Edit: TEdit;
SetupWavePara_Btn: TSpeedButton;
Label1: TLabel;
Label3: TLabel;
Label4: TLabel;
SingleWave_RB: TCheckBox;
Knob1: TKnob;
Image1: TImage;
Knob2: TKnob;
Image2: TImage;
UpDown1: TUpDown;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure WaveNum_SBChange(Sender: TObject);
procedure Start_btnClick(Sender: TObject);
procedure ReDraw_timerTimer(Sender: TObject);
procedure BClick(Sender: TObject);
procedure Sub20DB_ChBClick(Sender: TObject);
procedure FilterOpt_CBChange(Sender: TObject);
procedure SetupWavePara_BtnClick(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure TrigerType_CBChange(Sender: TObject);
procedure Frequency_EditExit(Sender: TObject);
procedure Frequency_EditKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Amplitude_EditExit(Sender: TObject);
procedure YOffset_EditExit(Sender: TObject);
procedure SingleWave_RBClick(Sender: TObject);
procedure UpDown1Click(Sender: TObject; Button: TUDBtnType);
procedure Knob1Change(Sender: TObject);
procedure Knob2Change(Sender: TObject);
procedure Knob2MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Knob1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
procedure SGCreate(Pn: TPanel);
public
{ Public declarations }
end;var
SG_Form: TSG_Form;implementation{$R *.dfm}procedure TSG_Form.SGCreate(Pn: TPanel);
begin
InitSG;
Frequency_Edit.Text := FloatToStr(SGFrequency);
Amplitude_Edit.Text := FloatToStr(SGAmplitude);
YOffset_Edit.Text := FloatToStr(SGYOffset);
WaveNum_SB.Position := SGWaveNum;
DrawWave(Wave_Pic);
end;procedure TSG_Form.FormCreate(Sender: TObject);
begin
SGCreate(panel1);
end;procedure TSG_Form.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caHide;
DeviceStates[SGID].Showed := False;
end;procedure TSG_Form.WaveNum_SBChange(Sender: TObject);
begin
SGWaveNum := WaveNum_SB.Position;
if SGSendWave then
begin
DownLoad;
DrawWave(Wave_Pic);
end
else
DrawWave(Wave_Pic);
WaveNum_SB.Hint := IntToStr(SGWaveNum) + '个周期波形';
end;procedure TSG_Form.Start_btnClick(Sender: TObject);
begin
SGSetRelayByte := SGSetRelayByte and $f3;
if not SGSendWave then
begin
SGSetConByte := SGSetConByte and $ef;
SetCON(SGSetConByte, 0);
SGSetRelayByte := SGSetRelayByte or $08;
SGSendWave := True;
SetRelay(SGSetRelayByte, 0);
DownLoad;
DrawWave(Wave_Pic);
Start_Btn.Caption := '关闭';
end
else
begin
SGSetConByte := SGSetConByte or $10;
SetCON(SGSetConByte, 0);
SGSetRelayByte := SGSetRelayByte or $04;
SGSendWave := False;
SetRelay(SGSetRelayByte, 0);
Start_Btn.Caption := '输出';
end;
end;procedure TSG_Form.ReDraw_timerTimer(Sender: TObject);
begin
DrawWave(Wave_Pic);
end;procedure TSG_Form.BClick(Sender: TObject);
begin
SGWavePure := WavePure_ChB.Checked;
if SGSendWave then
begin
DownLoad;
DrawWave(Wave_Pic);
end
else
DrawWave(Wave_Pic);
end;procedure TSG_Form.Sub20DB_ChBClick(Sender: TObject);
begin
SGSetRelayByte := SGSetRelayByte and $cf;
if Sub20DB_ChB.Checked then
SGSetRelayByte := SGSetRelayByte or $20
else
SGSetRelayByte := SGSetRelayByte or $10;
SetRelay(SGSetRelayByte, 0);
end;procedure TSG_Form.FilterOpt_CBChange(Sender: TObject);
begin
SGFilter := FilterOpt_CB.ItemIndex;
if SGFilter = 1 then SGFilter := 2
else if SGFilter = 2 then SGFilter := 1;
SetFir(SGFilter, 0);
if SGFilter < 4 then
begin
SGSetRelayByte := SGSetRelayByte and $fc; // 1111 1100
SGSetRelayByte := SGSetRelayByte or $01;
SetRelay(SGSetRelayByte,0);
end
else
begin
SGSetRelayByte := SGSetRelayByte and $fc; // 1111 1100
SGSetRelayByte := SGSetRelayByte or $02;
SetRelay(SGSetRelayByte,0);
end;
end;
完毕
那你要先考虑使用mfc还是使用.net的winform了,选好后,你这些东西就是控件搬搬
mfc稍微烦一点