創建一個簡單的Help窗體

本文介绍了一个使用Delphi实现的车辆计价单选择功能,通过弹出辅助窗口进行车辆信息的选择,并将选中信息回填到主窗口。涉及数据集操作、参数传递及界面交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//bteVechileName->Properties->OnButtonClick事件

procedure TfrmMTOBill.bteVechileNamePropertiesButtonClick(Sender: TObject;
  AButtonIndex: Integer);

var

   frmHelp: TfrmVehiclePriceHelp;
   s1: string;
begin
   if not (BOBroker.Processor.State in [psInsert, psEdit]) then
     Exit;
   //
   frmHelp := TfrmVehiclePriceHelp.Create(Application);
   try
     with frmHelp do
     begin
       PlaceName := Self.MasterDataSet.FieldByName('City').AsString;  //傳入參數:運抵城市的名稱
       CMB := Self.MasterDataSet.FieldByName('CMB' + s1).AsFloat;     //傳入參數:要運送的體積數
//       SourceProcessor := AProcessor;
//       EditKind := AEditKind;
//       LoadFormData;
//       OpenFormData;
       ShowModal;
       if ModalResult = mrOk then
       begin
         //dsVehicle是在編輯的數據集
         if not (dsVehicle.State in [dsInsert, dsEdit]) then
           dsVehicle.Edit;
         dsVehicle.FieldByName('VehicleID').AsVariant := VehicleID;
         dsVehicle.FieldByName('aVehicleName').AsString := VehicleName;
         dsVehicle.FieldByName('CalFlag').AsInteger := CalFlag;
         dsVehicle.FieldByName('Price').AsFloat := Price;
         dsVehicle.FieldByName('Qty').AsFloat := Qty;  //多少車
         dsVehicle.FieldByName('Amount').AsFloat := Amount;
       end;
     end;
   finally
     FreeAndNil(frmHelp);
   end;
end;

//Help窗體的FormShow事件

procedure TfrmVehiclePriceHelp.FormShow(Sender: TObject);
var
   vPlaceID: Variant;
begin
   inherited;
   //設定當前的Connection, 這個很關鍵

   CN.Connection := AppManager.Connection.Connection;

   //根據城市名稱找出ID
   vPlaceID := TSqlProc.GetFieldValue('select top 1 ID from pub_Place where PlaceName=''' + PlaceName + '''');
   if vPlaceID = '' then
     vPlaceID := null;
   //
   dsHelp.Close;
   dsHelp.Params.ParamByName('pPlaceID').AsString := GuidToStr(vPlaceID);
   dsHelp.Params.ParamByName('pCMB').AsFloat := FCMB;
   dsHelp.Open;
   //
   if gdHelp.CanFocus then
     gdHelp.SetFocus
end;

//按下選中按鈕

procedure TfrmVehiclePriceHelp.aOkExecute(Sender: TObject);
begin
   if dsHelp.IsEmpty then
   begin
     ShowMyMsg('系統提示', '無記錄可以選中!');
     Abort;
   end;
   //
   FVehicleID := dsHelp.FieldByName('VehicleID').AsVariant;  //選中車型ID
   FVehicle := dsHelp.FieldByName('VehicleName').AsString;  //選中車型名稱
   FCalFlag := dsHelp.FieldByName('CalFlag').AsInteger;       //按車計或按立方計
   FPrice := dsHelp.FieldByName('Price').AsFloat;                   //單價
   FQty := dsHelp.FieldByName('Qty').AsFloat;                       //多少車
   FAmount := dsHelp.FieldByName('Amount').AsFloat;          //運費
   Close;
   Self.ModalResult := mrOk;
end;

 

 

 

具體的做法可以參達成計價單中的車輛選擇做法.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值