123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- unit tpPricePartSettingFrm;
- interface
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, ExtCtrls, StdCtrls, ComCtrls;
- const
- sPegIgnoreHint = '各桩号间可能存在重叠,可通过该项设置多少m重叠忽略不计' + #13#10 +
- '如果要求重叠桩号划分为1个标段,可设置为0。';
- type
- TPricePartInfo = class
- private
- FPartPrice: Double;
- FMinLength: Integer;
- FMinStep: Integer;
- public
- constructor Create;
- property PartPrice: Double read FPartPrice write FPartPrice;
- property MinLength: Integer read FMinLength write FMinLength;
- property MinStep: Integer read FMinStep write FMinStep;
- end;
- TtpPricePartSettingForm = class(TForm)
- lePartTotalPrice: TLabeledEdit;
- lblFormat: TLabel;
- btnOk: TButton;
- btnCancel: TButton;
- leMinLength: TLabeledEdit;
- udMinLength: TUpDown;
- leMinStep: TLabeledEdit;
- udMinStep: TUpDown;
- procedure btnOkClick(Sender: TObject);
- procedure lePartTotalPriceChange(Sender: TObject);
- procedure lePartTotalPriceKeyPress(Sender: TObject; var Key: Char);
- private
- function GetPartPrice: Double;
- function GetMinLength: Integer;
- function GetMinStep: Integer;
- public
- constructor Create(AInfo: TPricePartInfo);
- destructor Destroy; override;
- property PartPrice: Double read GetPartPrice;
- property MinLength: Integer read GetMinLength;
- property MinStep: Integer read GetMinStep;
- end;
- function PricePartSetting(AInfo: TPricePartInfo): Boolean;
- implementation
- uses
- UtilMethods;
- function PricePartSetting(AInfo: TPricePartInfo): Boolean;
- var
- SettingForm: TtpPricePartSettingForm;
- begin
- SettingForm := TtpPricePartSettingForm.Create(AInfo);
- try
- Result := SettingForm.ShowModal = mrOk;
- if Result then
- begin
- AInfo.PartPrice := SettingForm.PartPrice;
- AInfo.MinLength := SettingForm.MinLength;
- AInfo.MinStep := SettingForm.MinStep;
- end;
- finally
- SettingForm.Free;
- end;
- end;
- {$R *.dfm}
- { TtpPricePartSettingForm }
- constructor TtpPricePartSettingForm.Create(AInfo: TPricePartInfo);
- begin
- inherited Create(nil);
- if AInfo.PartPrice > 0 then
- lePartTotalPrice.Text := FloatToStr(AInfo.PartPrice)
- else
- lePartTotalPrice.Text := '';
- udMinLength.Position := AInfo.MinLength;
- udMinStep.Position := AInfo.MinStep;
- SetWindowLong(lePartTotalPrice.Handle, GWL_STYLE, GetWindowLong(lePartTotalPrice.Handle, GWL_STYLE) or ES_RIGHT);
- SetWindowLong(leMinLength.Handle, GWL_STYLE, GetWindowLong(leMinLength.Handle, GWL_STYLE) or ES_RIGHT);
- SetWindowLong(leMinStep.Handle, GWL_STYLE, GetWindowLong(leMinStep.Handle, GWL_STYLE) or ES_RIGHT);
- end;
- destructor TtpPricePartSettingForm.Destroy;
- begin
- inherited;
- end;
- function TtpPricePartSettingForm.GetPartPrice: Double;
- begin
- Result := StrToFloatDef(lePartTotalPrice.Text, 0);
- end;
- procedure TtpPricePartSettingForm.btnOkClick(Sender: TObject);
- begin
- if PartPrice <= 0 then
- TipMessage('单标段目标金额应大于0。')
- else
- ModalResult := mrOk;
- end;
- procedure TtpPricePartSettingForm.lePartTotalPriceChange(Sender: TObject);
- begin
- lblFormat.Visible := PartPrice > 0;
- lblFormat.Caption := FormatFloat('##,###,###,###.##', PartPrice);
- end;
- procedure TtpPricePartSettingForm.lePartTotalPriceKeyPress(Sender: TObject;
- var Key: Char);
- begin
- if not (Key in ['0'..'9', '.', #8, #13]) then
- Key := #0;
- end;
- function TtpPricePartSettingForm.GetMinLength: Integer;
- begin
- Result := udMinLength.Position;
- end;
- function TtpPricePartSettingForm.GetMinStep: Integer;
- begin
- Result := udMinStep.Position;
- end;
- { TPricePartInfo }
- constructor TPricePartInfo.Create;
- begin
- FPartPrice := 0;
- FMinLength := 5;
- FMinStep := 100;
- end;
- end.
|