d2010编译d6程序时报“left side cannot be assigned to”? 各位:用d6编程正常的程序在d2010编译时报了很多left side cannot be assigned to,如何解决? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 看看程序中“xx := yy”的部分,问题多半就在那里 程序unit DlgImpedence;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ComCtrls, FunPanel, Buttons, PI_Analyze_WaveShow, IniFiles;type TImpefrm = class(TForm) pcSetting: TPageControl; TabSheet1: TTabSheet; TabSheet2: TTabSheet; TabSheet3: TTabSheet; Label39: TLabel; Panel11: TPanel; Label76: TLabel; edtZzd: TEdit; Label77: TLabel; Label79: TLabel; edtZGene: TEdit; Label78: TLabel; Label80: TLabel; Label83: TLabel; edtADelta: TEdit; edtZAngle2: TEdit; Label81: TLabel; Label82: TLabel; Label84: TLabel; edtGrid2: TEdit; Label85: TLabel; Label43: TLabel; edtRdz: TEdit; Label55: TLabel; edtRpy: TEdit; Label63: TLabel; Label66: TLabel; Label67: TLabel; Label68: TLabel; edtGrid1: TEdit; edtXpy: TEdit; Label65: TLabel; Label64: TLabel; Label58: TLabel; edtZAngle1: TEdit; edtXdz: TEdit; Label57: TLabel; Label56: TLabel; Label62: TLabel; Label69: TLabel; edtPs1: TEdit; Label70: TLabel; Label71: TLabel; edtKR: TEdit; Label72: TLabel; edtKX: TEdit; Label91: TLabel; edtXst: TEdit; Label98: TLabel; Label99: TLabel; edtGrid3: TEdit; Label100: TLabel; Label97: TLabel; edtXd: TEdit; Label92: TLabel; Label93: TLabel; edtXdd: TEdit; Label96: TLabel; Label95: TLabel; edtAngle3: TEdit; Label94: TLabel; Button1: TButton; Button2: TButton; TabSheet4: TTabSheet; TabSheet5: TTabSheet; Label17: TLabel; Label16: TLabel; edtDMin: TEdit; edtZMin: TEdit; Label14: TLabel; Label15: TLabel; Label13: TLabel; Label4: TLabel; edtGrid4: TEdit; edtKzd: TEdit; Label5: TLabel; Label7: TLabel; edtAMax: TEdit; Label8: TLabel; Label9: TLabel; edtVoltage: TEdit; Label11: TLabel; Label12: TLabel; edtCurrent: TEdit; Label10: TLabel; Label18: TLabel; edtAMin: TEdit; Label19: TLabel; Label20: TLabel; Label21: TLabel; edtGrid5: TEdit; edtASense: TEdit; Label22: TLabel; Label23: TLabel; Panel5: TPanel; Label2: TLabel; Panel1: TPanel; Label1: TLabel; Panel2: TPanel; Label3: TLabel; Panel3: TPanel; procedure edtRdzChange(Sender: TObject); procedure edtRdzKeyPress(Sender: TObject; var Key: Char); procedure edtZzdChange(Sender: TObject); procedure edtXstChange(Sender: TObject); procedure edtGrid4Change(Sender: TObject); procedure edtGrid5Change(Sender: TObject); procedure pcSettingChange(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormCreate(Sender: TObject); procedure edtAMaxKeyPress(Sender: TObject; var Key: Char); private { Private declarations } FFunPanel: array[0..2] of TFunPanel; function GetFunPanel(index: integer): TFunPanel; procedure SetFunPanel(index: integer; const v: TFunPanel); public { Public declarations } property FunPanel[index: integer]: TFunPanel read GetFunPanel write SetFunPanel; end;var Impefrm: TImpefrm;implementationuses SelectDialog, EngUtils, TrackDialog;{$R *.dfm}{ TImpefrm }procedure TImpefrm.edtRdzChange(Sender: TObject);var fTmp: double;begin if FunPanel[0]=nil then Exit; try fTmp := StrToFloat(TEdit(Sender).Text); with FunPanel[0].ZRectangle do begin case TEdit(Sender).Tag of 1: Rdz := fTmp; 2: Xdz := fTmp; 3: Rpy := fTmp; 4: Xpy := fTmp; 5: ZAngle := fTmp; 6: ZGrid := fTmp; end; FunPanel[0].Invalidate; end; except end;end;procedure TImpefrm.edtRdzKeyPress(Sender: TObject; var Key: Char);begin if not (Key in ['0'..'9', '.', Char(VK_BACK)]) then Key := #0;end;procedure TImpefrm.edtZzdChange(Sender: TObject);var fTmp: double;begin if FunPanel[0]=nil then Exit; try fTmp := StrToFloat(TEdit(Sender).Text); with FunPanel[0].ZRound do begin case TEdit(Sender).Tag of 1: Zzd := fTmp; 2: ZAngle := fTmp; 3: ZGene := fTmp; 4: ZGrid := fTmp; 5: ADelta := fTmp; end; FunPanel[0].Invalidate; end; except end;end;procedure TImpefrm.edtXstChange(Sender: TObject);var fTmp: double;begin if FunPanel[0]=nil then Exit; try fTmp := StrToFloat(TEdit(Sender).Text); with FunPanel[0].ZAsyn do begin case TEdit(Sender).Tag of 1: Xst := fTmp; 2: Xd := fTmp; 3: Xdd := fTmp; 4: ZAngle := fTmp; 5: ZGrid := fTmp; end; FunPanel[0].Invalidate; end; except end;end;function TImpefrm.GetFunPanel(index: integer): TFunPanel;begin Result := FFunPanel[index];end;procedure TImpefrm.SetFunPanel(index: integer; const v: TFunPanel);begin if v<>nil then FFunPanel[index] := v;end;procedure TImpefrm.edtGrid4Change(Sender: TObject);var fTmp: Double;begin if FunPanel[1]=nil then Exit; try fTmp := StrToFloat(TEdit(Sender).Text); if fTmp < 0.00001 then Exit; with FunPanel[1].Diff do begin case TEdit(Sender).Tag of 1: DMin := fTmp; 2: ZMin := fTmp; 3: Kzd := fTmp; 4: IGrid := fTmp; end; FunPanel[1].Invalidate; end; except end;end;procedure TImpefrm.edtGrid5Change(Sender: TObject);var fTmp: Double;begin if FunPanel[2]=nil then Exit; try fTmp := StrToFloat(TEdit(Sender).Text); if Abs(fTmp) < 0.00001 then Exit; with FunPanel[2].Dire do begin case TEdit(Sender).Tag of 1: AMax := fTmp; 2: AMin := fTmp; 3: ASense := fTmp; 4: AGrid := fTmp; end; FunPanel[2].Invalidate; end; except end;end;procedure TImpefrm.pcSettingChange(Sender: TObject);begin case pcSetting.ActivePageIndex of 0: FunPanel[0].FunStyle := fsRectangle; 1: FunPanel[0].FunStyle := fsRound; 2: FunPanel[0].FunStyle := fsAsyn; end;end;procedure TImpefrm.FormClose(Sender: TObject; var Action: TCloseAction);var sTmp: string;begin with TInifile.Create(ExtractFilePath(ParamStr(0))+IniName) do try begin sTmp := 'Im_Rectangle'; WriteString(sTmp, 'KX', edtKX.Text); WriteString(sTmp, 'KR', edtKR.Text); WriteString(sTmp, 'Ps1', edtPs1.Text); sTmp := 'Im_Dire'; WriteString(sTmp, 'Voltage', edtVoltage.Text); WriteString(sTmp, 'Current', edtCurrent.Text); sTmp := 'Im_Rectangle'; WriteString(sTmp, 'ZGrid', edtGrid1.Text); WriteString(sTmp, 'Rdz', edtRdz.Text); WriteString(sTmp, 'Xdz', edtXdz.Text); WriteString(sTmp, 'Rpy', edtRpy.Text ); WriteString(sTmp, 'Xpy', edtXpy.Text); WriteString(sTmp, 'ZAngle', edtZAngle1.Text); sTmp := 'Im_Round'; WriteString(sTmp, 'ZGrid', edtGrid2.Text); WriteString(sTmp, 'Zzd', edtZzd.Text); WriteString(sTmp, 'ZGene', edtZGene.Text); WriteString(sTmp, 'ZAngle', edtZAngle2.Text ); WriteString(sTmp, 'ADelta', edtADelta.Text); sTmp := 'Im_Asyn'; WriteString(sTmp, 'ZGrid', edtGrid3.Text); WriteString(sTmp, 'Xst', edtXst.Text); WriteString(sTmp, 'Xd', edtXd.Text); WriteString(sTmp, 'Xdd', edtXdd.Text ); WriteString(sTmp, 'ZAngle', edtAngle3.Text); sTmp := 'Im_Diff'; WriteString(sTmp, 'IGrid', edtGrid4.Text); WriteString(sTmp, 'DMin', edtDMin.Text); WriteString(sTmp, 'ZMin', edtZMin.Text); WriteString(sTmp, 'Kzd', edtKzd.Text); sTmp := 'Im_Dire'; WriteString(sTmp, 'AGrid', edtGrid5.Text); WriteString(sTmp, 'AMax', edtAMax.Text); WriteString(sTmp, 'AMin', edtAMin.Text); WriteString(sTmp, 'ASense', edtASense.Text ); end; finally Free; end;end;procedure TImpefrm.FormCreate(Sender: TObject);var sTmp: string;begin with TInifile.Create(ExtractFilePath(ParamStr(0))+IniName) do try begin sTmp := 'Im_Rectangle'; edtKX.Text := ReadString(sTmp, 'KX', '0'); edtKR.Text := ReadString(sTmp, 'KR', '0'); edtPs1.Text := ReadString(sTmp, 'Ps1', '90'); sTmp := 'Im_Dire'; edtVoltage.Text := ReadString(sTmp, 'Voltage', '1'); edtCurrent.Text := ReadString(sTmp, 'Current', '1'); end; finally Free; end;end;procedure TImpefrm.edtAMaxKeyPress(Sender: TObject; var Key: Char);begin if not (Key in ['0'..'9', '.', '-', Char(VK_BACK)]) then Key := #0;end;end. unit FunPanel;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, ExtCtrls, Math, Clipbrd;const Margin = 2;type TTrackStyle = (tsDot, tsLine); TFunStyle = (fsVector, fsRectangle, fsRound, fsAsyn, fsDiff, fsDirect); TZRound = record ZGrid, Zzd, ZGene, ZAngle, ADelta: double; end; TZRectangle = record ZGrid, Rdz, Xdz, Rpy, Xpy, ZAngle: double; end; TZAsyn = record ZGrid, Xst, Xd, Xdd, ZAngle: double; end; TDiff = record DMin, ZMin, Kzd, IGrid: double; end; TDire = record AMax, AMin, ASense, AGrid: double; end; TVect = Record vName: string[20]; Color: TColor; bShow: Boolean; val, ang: pDouble; rate, // 比例系数,用来调整矢量的长度 MaxReal: double; // 设置矢量基准时使用 end; TImTrack = record mShow: Boolean; mColor: TColor; end; TFunPanel = class(TCustomPanel) private FCounter: integer; FZBool1: Boolean; FZBool2: Boolean; FTrackStyle: TTrackStyle; FZRound: TZRound; FZRectangle: TZRectangle; FZAsyn: TZAsyn; FDiff: TDiff; FDire: TDire; FFunStyle: TFunStyle; FMGrid, FBorderWidth: integer; FBKColor, FDotColor, // 轨迹点色 FBarColor, // 栅格色 FAxisColor, // 特性线色 FCoordinateColor, // 坐标轴色 FTrackColor: TColor; // 轨迹色 FCenterOffset: TPoint; // 圆心偏移量 procedure SetZRound(v: TZRound); procedure SetZRectangle(v: TZRectangle); procedure SetZAsyn(v: TZAsyn); procedure SetFunStyle(v: TFunStyle); procedure SetDiff(v: TDiff); procedure SetDire(v: TDire); procedure SetMGrid(v: integer); procedure SetBorderWidth(v: integer); procedure SetBKColor(v: TColor); procedure SetDotColor(v: TColor); procedure SetBarColor(v: TColor); procedure SetAxisColor(v: TColor); procedure SetCoordinateColor(v: TColor); procedure SetTrackColor(v: TColor); procedure SetTrackStyle(v: TTrackStyle); procedure SetZBool1(b: Boolean); procedure SetZBool2(b: Boolean); procedure SetCounter(v: integer); protected wGrid, hGrid: integer; // 横向、纵向栅格数目 CtrlPressed: Boolean; wGridMax, hGridMax: integer; procedure CalGrid; procedure Paint; override; procedure WMSize(var Message: TWMSize); message WM_SIZE; procedure OnMouseWheel(var Msg: TMessage); message WM_MOUSEWHEEL; procedure OnLDblClk(var msg: TMessage); message WM_LBUTTONDBLCLK;// procedure OnLMouseDown(var msg: TMessage); message WM_LBUTTONDOWN;// procedure OnLMouseUp(var msg: TWmLButtonup); message WM_LBUTTONUP; procedure OnMActive(var msg : TMessage); message WM_MOUSEACTIVATE; procedure OnArrow(var msg : TMessage); message $bd00; procedure OnKeyDown(var msg : TMessage); message WM_KEYDOWN; procedure OnKeyUp(var msg : TMessage); message WM_KEYUP; function GetAngle(AReal,AImage:Real): Real; function GetGrid: double; // 获得当前模式下的每格阻抗数 function GetCenter: TPoint; // 获得圆心坐标 procedure DrawZRound; procedure DrawZRectangel; procedure DrawZAsyn; procedure DrawZCoordinate(iType: integer = 0); // 坐标轴 procedure DrawImpedence(i: integer); procedure DrawVectors; // 矢量图 procedure DrawDiff; procedure DrawDirect; procedure DrawVector(Real_Part, Imag_Part, Ang, fRate: double; buf: string; c: TColor); // 单个矢量 procedure AdjustTrack(OldCenter, NewCenter: TPoint; OldMGrid, NewMGrid: integer); public iFixed, // 矢量基准索引, 0-无索引 iCurrent, // 曲线点索引 MaxRadioInteger:integer; // MaxRadioReal: double; Vectors: array of TVect; // 矢量曲线信息数组 D_Points: array of TPoint; I_Points: array[0..5] of array of TPoint; E_Points: array of TPoint; ImTracks: array[0..5] of TImTrack; Z_Name: string; DZ_Cur, ZD_Cur: double; DAng_Cur: double; // 方向角 BAng_Cur: Boolean; // 是否在区内标志 Z_Real, Z_Imag, Z_Ang: array[0..5] of double; bDrawTrack: Boolean; // 是否绘制轨迹点 constructor Create (AOwner: TComponent); override; destructor Destroy; override; procedure FreeVectors; procedure ClearDatas; procedure DrawZTrack; procedure DrawDTrack(fd, fz: Double); procedure DrawETrack(Ang: double); procedure CopyClientRect; // 拷贝区域 procedure ClearCounter; procedure MoveCircleCenter(v: integer); property ZBool1: Boolean read FZBool1 write SetZBool1; property ZBool2: Boolean read FZBool2 write SetZBool2; property Counter: integer read FCounter write SetCounter; published property Font; property Caption; property Align; property PopupMenu; property OnDblClick; property BevelOuter; property BevelInner; property BevelWidth; property ZRound: TZRound read FZRound write SetZRound; property ZRectangle: TZRectangle read FZRectangle write SetZRectangle; property ZAsyn: TZAsyn read FZAsyn write SetZAsyn; property Diff: TDiff read FDiff write SetDiff; property Dire: TDire read FDire write SetDire; property FunStyle: TFunStyle read FFunStyle write SetFunStyle; property MGrid: integer read FMGrid write SetMGrid; property BorderWidth: integer read FBorderWidth write SetBorderWidth; property BKColor: TColor read FBKColor write SetBKColor; property DotColor: TColor read FDotColor write SetDotColor; property BarColor: TColor read FBarColor write SetBarColor; property AxisColor: TColor read FAxisColor write SetAxisColor; property CoordinateColor: TColor read FCoordinateColor write SetCoordinateColor; property TrackColor: TColor read FTrackColor write SetTrackColor; property TrackStyle: TTrackStyle read FTrackStyle write SetTrackStyle; end;procedure Register;implementationuses Fun_Display;procedure Register;begin RegisterComponents('WaveAnalyze', [TFunPanel]);end;。。出错部分: with FunPanel[0].ZRound do begin case TEdit(Sender).Tag of 1: Zzd := fTmp; 2: ZAngle := fTmp; 3: ZGene := fTmp; 4: ZGrid := fTmp; 5: ADelta := fTmp;以及后面类似部分 delphi7开发ActiveX问题,请高手来看下 请各位兄弟姐妹提个醒!我现在的这点墨水能否在宁波有得生存的空间? 两个小问题 俺们乡下人有一事相求 还有3000多分。。。大家有人要进来报个到! webBrowser控件新打开窗口的问题 怎么才能让我点一下桌面或其它程序就可以让菜单消失?? 请教各位,如何使RichEdit背景透明? 关于COMBOBOX的问题,请各位帮忙,谢谢!!!!!! ftao请来拿分 关于cxGrid不能编辑的问题 在Delphi2007上用ip2007的Twwdbgrid来显示单元格的更新问题
unit DlgImpedence;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ComCtrls, FunPanel, Buttons, PI_Analyze_WaveShow,
IniFiles;type
TImpefrm = class(TForm)
pcSetting: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
TabSheet3: TTabSheet;
Label39: TLabel;
Panel11: TPanel;
Label76: TLabel;
edtZzd: TEdit;
Label77: TLabel;
Label79: TLabel;
edtZGene: TEdit;
Label78: TLabel;
Label80: TLabel;
Label83: TLabel;
edtADelta: TEdit;
edtZAngle2: TEdit;
Label81: TLabel;
Label82: TLabel;
Label84: TLabel;
edtGrid2: TEdit;
Label85: TLabel;
Label43: TLabel;
edtRdz: TEdit;
Label55: TLabel;
edtRpy: TEdit;
Label63: TLabel;
Label66: TLabel;
Label67: TLabel;
Label68: TLabel;
edtGrid1: TEdit;
edtXpy: TEdit;
Label65: TLabel;
Label64: TLabel;
Label58: TLabel;
edtZAngle1: TEdit;
edtXdz: TEdit;
Label57: TLabel;
Label56: TLabel;
Label62: TLabel;
Label69: TLabel;
edtPs1: TEdit;
Label70: TLabel;
Label71: TLabel;
edtKR: TEdit;
Label72: TLabel;
edtKX: TEdit;
Label91: TLabel;
edtXst: TEdit;
Label98: TLabel;
Label99: TLabel;
edtGrid3: TEdit;
Label100: TLabel;
Label97: TLabel;
edtXd: TEdit;
Label92: TLabel;
Label93: TLabel;
edtXdd: TEdit;
Label96: TLabel;
Label95: TLabel;
edtAngle3: TEdit;
Label94: TLabel;
Button1: TButton;
Button2: TButton;
TabSheet4: TTabSheet;
TabSheet5: TTabSheet;
Label17: TLabel;
Label16: TLabel;
edtDMin: TEdit;
edtZMin: TEdit;
Label14: TLabel;
Label15: TLabel;
Label13: TLabel;
Label4: TLabel;
edtGrid4: TEdit;
edtKzd: TEdit;
Label5: TLabel;
Label7: TLabel;
edtAMax: TEdit;
Label8: TLabel;
Label9: TLabel;
edtVoltage: TEdit;
Label11: TLabel;
Label12: TLabel;
edtCurrent: TEdit;
Label10: TLabel;
Label18: TLabel;
edtAMin: TEdit;
Label19: TLabel;
Label20: TLabel;
Label21: TLabel;
edtGrid5: TEdit;
edtASense: TEdit;
Label22: TLabel;
Label23: TLabel;
Panel5: TPanel;
Label2: TLabel;
Panel1: TPanel;
Label1: TLabel;
Panel2: TPanel;
Label3: TLabel;
Panel3: TPanel;
procedure edtRdzChange(Sender: TObject);
procedure edtRdzKeyPress(Sender: TObject; var Key: Char);
procedure edtZzdChange(Sender: TObject);
procedure edtXstChange(Sender: TObject);
procedure edtGrid4Change(Sender: TObject);
procedure edtGrid5Change(Sender: TObject);
procedure pcSettingChange(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure edtAMaxKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
FFunPanel: array[0..2] of TFunPanel;
function GetFunPanel(index: integer): TFunPanel;
procedure SetFunPanel(index: integer; const v: TFunPanel);
public
{ Public declarations }
property FunPanel[index: integer]: TFunPanel read GetFunPanel write SetFunPanel;
end;var
Impefrm: TImpefrm;implementationuses SelectDialog, EngUtils, TrackDialog;{$R *.dfm}{ TImpefrm }procedure TImpefrm.edtRdzChange(Sender: TObject);
var fTmp: double;
begin
if FunPanel[0]=nil then Exit;
try
fTmp := StrToFloat(TEdit(Sender).Text);
with FunPanel[0].ZRectangle do
begin
case TEdit(Sender).Tag of
1: Rdz := fTmp;
2: Xdz := fTmp;
3: Rpy := fTmp;
4: Xpy := fTmp;
5: ZAngle := fTmp;
6: ZGrid := fTmp;
end;
FunPanel[0].Invalidate;
end;
except
end;
end;procedure TImpefrm.edtRdzKeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in ['0'..'9', '.', Char(VK_BACK)]) then
Key := #0;
end;procedure TImpefrm.edtZzdChange(Sender: TObject);
var fTmp: double;
begin
if FunPanel[0]=nil then Exit;
try
fTmp := StrToFloat(TEdit(Sender).Text);
with FunPanel[0].ZRound do
begin
case TEdit(Sender).Tag of
1: Zzd := fTmp;
2: ZAngle := fTmp;
3: ZGene := fTmp;
4: ZGrid := fTmp;
5: ADelta := fTmp;
end;
FunPanel[0].Invalidate;
end;
except
end;
end;procedure TImpefrm.edtXstChange(Sender: TObject);
var fTmp: double;
begin
if FunPanel[0]=nil then Exit;
try
fTmp := StrToFloat(TEdit(Sender).Text);
with FunPanel[0].ZAsyn do
begin
case TEdit(Sender).Tag of
1: Xst := fTmp;
2: Xd := fTmp;
3: Xdd := fTmp;
4: ZAngle := fTmp;
5: ZGrid := fTmp;
end;
FunPanel[0].Invalidate;
end;
except
end;
end;function TImpefrm.GetFunPanel(index: integer): TFunPanel;
begin
Result := FFunPanel[index];
end;procedure TImpefrm.SetFunPanel(index: integer; const v: TFunPanel);
begin
if v<>nil then
FFunPanel[index] := v;
end;procedure TImpefrm.edtGrid4Change(Sender: TObject);
var fTmp: Double;
begin
if FunPanel[1]=nil then Exit;
try
fTmp := StrToFloat(TEdit(Sender).Text);
if fTmp < 0.00001 then Exit;
with FunPanel[1].Diff do
begin
case TEdit(Sender).Tag of
1: DMin := fTmp;
2: ZMin := fTmp;
3: Kzd := fTmp;
4: IGrid := fTmp;
end;
FunPanel[1].Invalidate;
end;
except
end;
end;procedure TImpefrm.edtGrid5Change(Sender: TObject);
var fTmp: Double;
begin
if FunPanel[2]=nil then Exit;
try
fTmp := StrToFloat(TEdit(Sender).Text);
if Abs(fTmp) < 0.00001 then Exit;
with FunPanel[2].Dire do
begin
case TEdit(Sender).Tag of
1: AMax := fTmp;
2: AMin := fTmp;
3: ASense := fTmp;
4: AGrid := fTmp;
end;
FunPanel[2].Invalidate;
end;
except
end;
end;procedure TImpefrm.pcSettingChange(Sender: TObject);
begin
case pcSetting.ActivePageIndex of
0: FunPanel[0].FunStyle := fsRectangle;
1: FunPanel[0].FunStyle := fsRound;
2: FunPanel[0].FunStyle := fsAsyn;
end;
end;procedure TImpefrm.FormClose(Sender: TObject; var Action: TCloseAction);
var sTmp: string;
begin
with TInifile.Create(ExtractFilePath(ParamStr(0))+IniName) do
try
begin
sTmp := 'Im_Rectangle';
WriteString(sTmp, 'KX', edtKX.Text);
WriteString(sTmp, 'KR', edtKR.Text);
WriteString(sTmp, 'Ps1', edtPs1.Text);
sTmp := 'Im_Dire';
WriteString(sTmp, 'Voltage', edtVoltage.Text);
WriteString(sTmp, 'Current', edtCurrent.Text); sTmp := 'Im_Rectangle';
WriteString(sTmp, 'ZGrid', edtGrid1.Text);
WriteString(sTmp, 'Rdz', edtRdz.Text);
WriteString(sTmp, 'Xdz', edtXdz.Text);
WriteString(sTmp, 'Rpy', edtRpy.Text );
WriteString(sTmp, 'Xpy', edtXpy.Text);
WriteString(sTmp, 'ZAngle', edtZAngle1.Text); sTmp := 'Im_Round';
WriteString(sTmp, 'ZGrid', edtGrid2.Text);
WriteString(sTmp, 'Zzd', edtZzd.Text);
WriteString(sTmp, 'ZGene', edtZGene.Text);
WriteString(sTmp, 'ZAngle', edtZAngle2.Text );
WriteString(sTmp, 'ADelta', edtADelta.Text); sTmp := 'Im_Asyn';
WriteString(sTmp, 'ZGrid', edtGrid3.Text);
WriteString(sTmp, 'Xst', edtXst.Text);
WriteString(sTmp, 'Xd', edtXd.Text);
WriteString(sTmp, 'Xdd', edtXdd.Text );
WriteString(sTmp, 'ZAngle', edtAngle3.Text); sTmp := 'Im_Diff';
WriteString(sTmp, 'IGrid', edtGrid4.Text);
WriteString(sTmp, 'DMin', edtDMin.Text);
WriteString(sTmp, 'ZMin', edtZMin.Text);
WriteString(sTmp, 'Kzd', edtKzd.Text);
sTmp := 'Im_Dire';
WriteString(sTmp, 'AGrid', edtGrid5.Text);
WriteString(sTmp, 'AMax', edtAMax.Text);
WriteString(sTmp, 'AMin', edtAMin.Text);
WriteString(sTmp, 'ASense', edtASense.Text );
end;
finally
Free;
end;
end;procedure TImpefrm.FormCreate(Sender: TObject);
var sTmp: string;
begin
with TInifile.Create(ExtractFilePath(ParamStr(0))+IniName) do
try
begin
sTmp := 'Im_Rectangle';
edtKX.Text := ReadString(sTmp, 'KX', '0');
edtKR.Text := ReadString(sTmp, 'KR', '0');
edtPs1.Text := ReadString(sTmp, 'Ps1', '90');
sTmp := 'Im_Dire';
edtVoltage.Text := ReadString(sTmp, 'Voltage', '1');
edtCurrent.Text := ReadString(sTmp, 'Current', '1');
end;
finally
Free;
end;
end;procedure TImpefrm.edtAMaxKeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in ['0'..'9', '.', '-', Char(VK_BACK)]) then
Key := #0;
end;end.
Windows, Messages, SysUtils, Classes, Graphics, Controls, ExtCtrls,
Math, Clipbrd;const Margin = 2;type
TTrackStyle = (tsDot, tsLine);
TFunStyle = (fsVector, fsRectangle, fsRound, fsAsyn, fsDiff, fsDirect); TZRound = record
ZGrid, Zzd, ZGene, ZAngle, ADelta: double;
end; TZRectangle = record
ZGrid, Rdz, Xdz, Rpy, Xpy, ZAngle: double;
end; TZAsyn = record
ZGrid, Xst, Xd, Xdd, ZAngle: double;
end; TDiff = record
DMin, ZMin, Kzd, IGrid: double;
end; TDire = record
AMax, AMin, ASense, AGrid: double;
end; TVect = Record
vName: string[20];
Color: TColor;
bShow: Boolean;
val,
ang: pDouble;
rate, // 比例系数,用来调整矢量的长度
MaxReal: double; // 设置矢量基准时使用
end; TImTrack = record
mShow: Boolean;
mColor: TColor;
end; TFunPanel = class(TCustomPanel)
private
FCounter: integer;
FZBool1: Boolean;
FZBool2: Boolean;
FTrackStyle: TTrackStyle;
FZRound: TZRound;
FZRectangle: TZRectangle;
FZAsyn: TZAsyn;
FDiff: TDiff;
FDire: TDire;
FFunStyle: TFunStyle;
FMGrid,
FBorderWidth: integer;
FBKColor,
FDotColor, // 轨迹点色
FBarColor, // 栅格色
FAxisColor, // 特性线色
FCoordinateColor, // 坐标轴色
FTrackColor: TColor; // 轨迹色
FCenterOffset: TPoint; // 圆心偏移量 procedure SetZRound(v: TZRound);
procedure SetZRectangle(v: TZRectangle);
procedure SetZAsyn(v: TZAsyn);
procedure SetFunStyle(v: TFunStyle);
procedure SetDiff(v: TDiff);
procedure SetDire(v: TDire);
procedure SetMGrid(v: integer);
procedure SetBorderWidth(v: integer);
procedure SetBKColor(v: TColor);
procedure SetDotColor(v: TColor);
procedure SetBarColor(v: TColor);
procedure SetAxisColor(v: TColor);
procedure SetCoordinateColor(v: TColor);
procedure SetTrackColor(v: TColor);
procedure SetTrackStyle(v: TTrackStyle);
procedure SetZBool1(b: Boolean);
procedure SetZBool2(b: Boolean);
procedure SetCounter(v: integer);
protected
wGrid, hGrid: integer; // 横向、纵向栅格数目
CtrlPressed: Boolean;
wGridMax, hGridMax: integer;
procedure CalGrid;
procedure Paint; override;
procedure WMSize(var Message: TWMSize); message WM_SIZE;
procedure OnMouseWheel(var Msg: TMessage); message WM_MOUSEWHEEL;
procedure OnLDblClk(var msg: TMessage); message WM_LBUTTONDBLCLK;
// procedure OnLMouseDown(var msg: TMessage); message WM_LBUTTONDOWN;
// procedure OnLMouseUp(var msg: TWmLButtonup); message WM_LBUTTONUP;
procedure OnMActive(var msg : TMessage); message WM_MOUSEACTIVATE;
procedure OnArrow(var msg : TMessage); message $bd00;
procedure OnKeyDown(var msg : TMessage); message WM_KEYDOWN;
procedure OnKeyUp(var msg : TMessage); message WM_KEYUP;
function GetAngle(AReal,AImage:Real): Real;
function GetGrid: double; // 获得当前模式下的每格阻抗数
function GetCenter: TPoint; // 获得圆心坐标
procedure DrawZRound;
procedure DrawZRectangel;
procedure DrawZAsyn;
procedure DrawZCoordinate(iType: integer = 0); // 坐标轴
procedure DrawImpedence(i: integer);
procedure DrawVectors; // 矢量图
procedure DrawDiff;
procedure DrawDirect;
procedure DrawVector(Real_Part, Imag_Part, Ang, fRate: double;
buf: string; c: TColor); // 单个矢量
procedure AdjustTrack(OldCenter, NewCenter: TPoint;
OldMGrid, NewMGrid: integer);
public
iFixed, // 矢量基准索引, 0-无索引
iCurrent, // 曲线点索引
MaxRadioInteger:integer; //
MaxRadioReal: double;
Vectors: array of TVect; // 矢量曲线信息数组
D_Points: array of TPoint;
I_Points: array[0..5] of array of TPoint;
E_Points: array of TPoint;
ImTracks: array[0..5] of TImTrack;
Z_Name: string;
DZ_Cur, ZD_Cur: double;
DAng_Cur: double; // 方向角
BAng_Cur: Boolean; // 是否在区内标志
Z_Real, Z_Imag, Z_Ang: array[0..5] of double;
bDrawTrack: Boolean; // 是否绘制轨迹点
constructor Create (AOwner: TComponent); override;
destructor Destroy; override;
procedure FreeVectors;
procedure ClearDatas;
procedure DrawZTrack;
procedure DrawDTrack(fd, fz: Double);
procedure DrawETrack(Ang: double);
procedure CopyClientRect; // 拷贝区域
procedure ClearCounter;
procedure MoveCircleCenter(v: integer);
property ZBool1: Boolean read FZBool1 write SetZBool1;
property ZBool2: Boolean read FZBool2 write SetZBool2;
property Counter: integer read FCounter write SetCounter;
published
property Font;
property Caption;
property Align;
property PopupMenu;
property OnDblClick;
property BevelOuter;
property BevelInner;
property BevelWidth; property ZRound: TZRound read FZRound write SetZRound;
property ZRectangle: TZRectangle read FZRectangle write SetZRectangle;
property ZAsyn: TZAsyn read FZAsyn write SetZAsyn;
property Diff: TDiff read FDiff write SetDiff;
property Dire: TDire read FDire write SetDire;
property FunStyle: TFunStyle read FFunStyle write SetFunStyle;
property MGrid: integer read FMGrid write SetMGrid;
property BorderWidth: integer read FBorderWidth write SetBorderWidth;
property BKColor: TColor read FBKColor write SetBKColor;
property DotColor: TColor read FDotColor write SetDotColor;
property BarColor: TColor read FBarColor write SetBarColor;
property AxisColor: TColor read FAxisColor write SetAxisColor;
property CoordinateColor: TColor read FCoordinateColor write SetCoordinateColor;
property TrackColor: TColor read FTrackColor write SetTrackColor;
property TrackStyle: TTrackStyle read FTrackStyle write SetTrackStyle;
end;procedure Register;implementationuses Fun_Display;procedure Register;
begin
RegisterComponents('WaveAnalyze', [TFunPanel]);
end;
。。出错部分:
with FunPanel[0].ZRound do
begin
case TEdit(Sender).Tag of
1: Zzd := fTmp;
2: ZAngle := fTmp;
3: ZGene := fTmp;
4: ZGrid := fTmp;
5: ADelta := fTmp;
以及后面类似部分