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

📄 matguageinfo.pas

📁 文件包含程序源原文件
💻 PAS
📖 第 1 页 / 共 2 页
字号:
  FOnMakeItemCaption := True;
  try
    for i := 0 to FQueryList.Count-1 do begin
      lcP  := FQueryList.Items[i];
      Item := LstViewGuage.Items.Add;
      for j := 0 to FColCnt-1 do Item.Subitems.Add('');
      lcP^.ITEM := Item;
      Item.Data := lcP;
      MakeItemCaption(Item);
    end;
  finally
    FOnMakeItemCaption := False;
    LstViewGuage.Items.EndUpdate;
    if LstViewGuage.Items.Count > 0 then LstViewGuage.TopItem.Selected := True;
    stsBarCnt.Panels[0].Text := '符合条件的记录有:'+ IntToStr(LstViewGuage.Items.Count)+' 条';
    Screen.Cursor := crDefault;
  end;
end;

function  TfrmMatGuageInfo.SetListColumn(sListView: TGradLineListView): Integer;
var
  Column: TListColumn;
begin
  sListView.Columns.Clear;
  FColCnt := 0;

  Column         := sListView.Columns.Add;
  Column.Width   := sListView.Font.Size * 14;
  Column.Caption := GetMultiLingalMsg(90028, 'Material Code');
  Inc(FColCnt);
  //--
  Column         := sListView.Columns.Add;
  Column.Width   := sListView.Font.Size * 16;
  Column.Caption := GetMultiLingalMsg(90029, 'Material Name');
  Inc(FColCnt);
  //--
  Column         := sListView.Columns.Add;
  Column.Width   := sListView.Font.Size * 8;
  Column.Caption := GetMultiLingalMsg(90030, 'Guage ID');
  Inc(FColCnt);
  //--
  Column         := sListView.Columns.Add;
  Column.Width   := sListView.Font.Size * 14;
  Column.Caption := GetMultiLingalMsg(90031, 'Guage Name');
  Inc(FColCnt);
  //--
  Column         := sListView.Columns.Add;
  Column.Width   := sListView.Font.Size * 9;
  Column.Caption := GetMultiLingalMsg(90201, 'Safety');
  Inc(FColCnt);
  //--
  Column         := sListView.Columns.Add;
  Column.Width   := sListView.Font.Size * 9;
  Column.Caption := GetMultiLingalMsg(90273, 'Weight/PCS');
  Inc(FColCnt);
end;

procedure TfrmMatGuageInfo.MakeItemCaption(Item: TListItem);
  //-- Init int value and '' to 0 value
  function IntToStrNull(INum: Integer): string;
  begin
    if INum = 0 then Result := ''
    else Result := IntToStr(INum);
  end;
var lcP: PGuageInfo;
begin
  if Item = nil then Exit;
  if Item.Data = nil then Exit;
  lcP := Item.Data;

  Item.Caption      := dm_inventory.GetMaterialCode(lcp^.mat_rec_id);
  Item.SubItems[00] := dm_inventory.GetMaterialName(lcp^.mat_rec_id);
  Item.SubItems[01] := intToStr(lcp^.guage_id);
  Item.SubItems[02] := lcP^.guage_name;
  Item.SubItems[03] := InttoStr(lcP^.safety);
  Item.SubItems[04] := FormatFloat('#,##0.00',lcP^.weight_pcs);
end;

Procedure TfrmMatGuageInfo.SetNull;
begin
  FSelectedItem := nil;
  edtMatID.Text     := '';
  edtMatName.Text   := '';
  edtGuageID.Value  := 1;
  edtGuageName.Text := '';
  edtSafety.Value   := 0;
  edtMax.Value      := 0;
  edtFixed.Value    := 0;
  edtBuyDays.Value  := 0;
  edtWeightpcs.Value := 0;
end;

procedure TfrmMatGuageInfo.Set_currItem(Item: TListItem);
var
  lcp: PGuageInfo;
begin
  if (Item = nil) or ((item = nil) and (Item.Data <> nil)) then
  begin
    SetNull;
    exit;
  end
  else begin
    FSelectedItem := nil;
    FSelectedItem := Item;
    lcp := Item.Data;

    edtMatID.Text     := dm_inventory.GetMaterialCode(lcp^.mat_rec_id);
    edtMatName.Text   := dm_inventory.GetMaterialName(lcp^.mat_rec_id);
    edtGuageID.Value  := lcp^.guage_id;
    edtGuageName.Text := lcp^.guage_name;
    edtSafety.Value   := lcp^.safety;
    edtMax.Value      := lcp^.max_stkqty;
    edtFixed.Value    := lcp^.fixed_buyqty;
    edtBuyDays.Value  := lcp^.buy_days;
    edtWeightpcs.Value:= lcp.weight_pcs;
  end;
end;


procedure TfrmMatGuageInfo.tabsGroupChange(Sender: TObject);
begin
  dm_Inventory.Read_MatGuageInfo(FMatGuageList);
  Set_QueryedList(FQueryList);
  Set_QryList_FromTabs(TabsGroup.TabIndex, FQueryList);
  SetListView;

  if LstViewGuage.Items.Count>0 then begin
    LstViewGuage.ToPItem.Selected := False;
    LstViewGuage.ToPItem.Selected := True;
  end;
end;

procedure TfrmMatGuageInfo.LstViewGuageChange(Sender: TObject;
  Item: TListItem; Change: TItemChange);
begin
  if FOnCloseForm then exit;
  if Item.Data = nil then
  begin
    setNull;
    exit;
  end
  else Set_currItem(LstViewGuage.Selected);
end;

procedure TfrmMatGuageInfo.btnNewClick(Sender: TObject);
var lcp,lcpNew: PGuageInfo;
    Item: TListItem;
    i: integer;
begin
  if ((FSelectedItem=nil) or (FSelectedItem.Data=nil)) then exit;
  lcp := FSelectedItem.Data;
  if lcp = nil then exit;

  if not(dm_inventory.isExists_GuageInfo(lcp^.mat_rec_id,trim(edtGuageName.Text))) then
  begin
    New(lcpNew);
    ZeroMemory(lcpNew, Sizeof(TGuageInfo));
    CopyMemory(lcpNew, lcp, Sizeof(TGuageInfo));
    strPCopy(lcpNew^.guage_name, trim(edtGuageName.Text));
    lcpNew^.guage_id := dm_Inventory.Get_MatMaxGuageID(lcp^.mat_rec_id)+1;
    Item := LstViewGuage.Items.Add;
    Item.Data := lcpNew;
    for i:= 0 to FColCnt-1 do Item.SubItems.Add('');
    Item.Caption := dm_inventory.GetMaterialCode(lcpNew^.mat_rec_id);
    Item.SubItems[00] := dm_inventory.GetMaterialName(lcpNew^.mat_rec_id);
    Item.SubItems[01] := intToStr(lcpNew^.guage_id);
    Item.SubItems[02] := lcpNew^.guage_name;
    Item.SubItems[03] := InttoStr(lcpNew^.safety);
    Item.SubItems[04] := FloattoStr(lcpNew^.weight_pcs);
    Item.Selected := true;
    Item.Focused  := true;
    MakeItemCaption(Item);
    Set_currItem(Item);
    dm_inventory.Insert_MatGuageInfo(lcpNew^.mat_rec_id,trim(edtGuageName.Text));
    showMessage(GetMultiLingalMsg(90226, 'New Guage is Finished!'));
  end;
end;

procedure TfrmMatGuageInfo.btnDeleteClick(Sender: TObject);
var lcp: PGuageInfo;
    Item: TListItem;
begin
if ((FSelectedItem=nil) or (FSelectedItem.Data=nil)) then exit;
  lcp := FSelectedItem.Data;
  Item := FSelectedItem;
  if lcp = nil then exit;

  if not(dm_Inventory.isExists_UseGuageID(lcp.mat_rec_id,lcp.guage_id)) then
  begin
    dm_inventory.Delete_MatGuageInfo(lcp^.mat_rec_id, lcp^.guage_id);
    Item.Delete;
    if LstViewGuage.Items.Count>0 then LstViewGuage.TopItem.Selected := true
    else FSelectedItem := nil;
    showMessage(GetMultiLingalMsg(90227, 'Delete Guage is Finished!'));
  end
  else begin
    case MessageDlg(GetMultiLingalMsg(90228, 'this guage id is used/do you want to delete!'),mtConfirmation,[mbYES,mbNo],0) of
      mrYES: begin
               dm_inventory.Delete_MatGuageInfo(lcp^.mat_rec_id, lcp^.guage_id);
               showMessage(GetMultiLingalMsg(90227, 'Delete Guage is Finished!'));
             end;
      mrNO: Exit;
    end;
  end;
end;

procedure TfrmMatGuageInfo.btnUpdateClick(Sender: TObject);
var lcp,lcpNew: PGuageInfo;
    Item: TListItem;
    iBool: Boolean;
    i: integer;
begin
if ((FSelectedItem=nil) or (FSelectedItem.Data=nil)) then exit;
  lcp := FSelectedItem.Data;
  if lcp = nil then exit;
  iBool := dm_Inventory.isExists_invGuageID(lcp.mat_rec_id,trunc(edtGuageID.Value));

  if iBool then
  begin
    Case MessageDlg('你确定要更新规格名称吗!',mtConfirmation,[mbYES,mbNO],0)  of
      mrYes: begin
               dm_inventory.Update_MatGuageInfo(lcp^.mat_rec_id,lcp^.guage_id,trim(edtGuageName.Text));
               showMessage(GetMultiLingalMsg(90229, 'Update Guage is Finished!'));
               exit;
             end;
      mrNo: exit;
    end;
  end
  else begin
    New(lcpNew);
    ZeroMemory(lcpNew, Sizeof(TGuageInfo));
    CopyMemory(lcpNew, lcp, Sizeof(TGuageInfo));
    strPCopy(lcpNew^.guage_name, trim(edtGuageName.Text));
    lcpNew^.guage_id := trunc(edtGuageID.Value);
    Item := LstViewGuage.Items.Add;
    Item.Data := lcpNew;
    for i:= 0 to FColCnt-1 do Item.SubItems.Add('');
    Item.Caption := dm_inventory.GetMaterialCode(lcpNew^.mat_rec_id);
    Item.SubItems[00] := dm_inventory.GetMaterialName(lcpNew^.mat_rec_id);
    Item.SubItems[01] := intToStr(lcpNew^.guage_id);
    Item.SubItems[02] := lcpNew^.guage_name;
    Item.SubItems[03] := InttoStr(lcpNew^.safety);
    Item.SubItems[04] := FloattoStr(lcpNew^.weight_pcs);
    Item.Selected := true;
    Item.Focused  := true;
    MakeItemCaption(Item);
    Set_currItem(Item);
    dm_inventory.Insert_NewGuage_ID(lcpNew^.mat_rec_id,lcpNew^.guage_id,trim(edtGuageName.Text));
    showMessage(GetMultiLingalMsg(90226, 'New Guage is Finished!'));
    Exit;
  end;
end;

procedure TfrmMatGuageInfo.btnSafetyClick(Sender: TObject);
var lcp: PGuageInfo;
    Item: TListItem;
begin
if ((FSelectedItem=nil) or (FSelectedItem.Data=nil)) then exit;
  lcp := FSelectedItem.Data;
  if lcp = nil then exit;

  lcp^.safety       := floor(edtSafety.Value);
  lcp^.max_stkqty   := floor(edtMax.Value);
  lcp^.fixed_buyqty := floor(edtFixed.Value);
  lcp^.buy_days     := floor(edtBuyDays.Value);
  lcp^.weight_pcs   := (edtWeightpcs.Value);

  dm_inventory.Update_MatSafety(lcp^.mat_rec_id,lcp^.guage_id,lcp^.safety,lcp^.max_stkqty,lcp^.fixed_buyqty,lcp^.buy_days,lcp^.weight_pcs);
  lcp^.safety       := floor(edtSafety.Value);
  lcp^.max_stkqty   := floor(edtMax.Value);
  lcp^.fixed_buyqty := floor(edtFixed.Value);
  lcp^.buy_days     := floor(edtBuyDays.Value);
  lcp^.weight_pcs   := (edtWeightpcs.Value);
  LstViewGuage.Selected.Data := lcp;
  Item := LstViewGuage.Selected;
  MakeItemCaption(Item);
  Set_currItem(Item);
  Item.Selected := true;
  showMessage(GetMultiLingalMsg(90231, 'Update Safety Quantity is Finished!'));
  dm_inventory.Read_MatGuageInfo(FGuageList);
end;

procedure TfrmMatGuageInfo.btnQueryClick(Sender: TObject);
begin
  dm_Inventory.Read_MatGuageInfo(FMatGuageList);
  Set_QueryedList(FQueryList);
  CreateTabs_ByGroup(rdogrpTitle.ItemIndex, FQueryList);
  tabsGroupChange(Self);
end;

procedure TfrmMatGuageInfo.btnExitClick(Sender: TObject);
begin
  Close;
end;

procedure TfrmMatGuageInfo.btnQuitClick(Sender: TObject);
begin
  Close;
end;

procedure TfrmMatGuageInfo.cbxMatClassDropDown(Sender: TObject);
begin
  dm_inventory.Read_shizai_kubunTocbx(cbxMatClass);
end;

procedure TfrmMatGuageInfo.cbxMatClassChange(Sender: TObject);
begin
  edtMatClass.Text     := Get_PosBeforeStr(cbxMatClass.Text,'_');
  edtMatClassName.Text := Get_PosAfterStr(cbxMatClass.Text,'_');
  edtMatClass.SetFocus;
  iShiZaiKubun := dm_inventory.GetShiZaiKubunID(trim(edtMatClass.Text))
end;

procedure TfrmMatGuageInfo.SetMultilingual;
begin
  self.Caption                  := GetMultiLingalMsg(90172, 'Material Guage Manager');
  edtFMatCode.EditLabel.Caption := GetMultiLingalMsg(90121, 'Start Material Code');
  edtEMatCode.EditLabel.Caption := GetMultiLingalMsg(90122, 'End Material Code');
  edtMatClass.EditLabel.Caption := GetMultiLingalMsg(90123, 'Material Class');
  chkMaterial.Caption           := GetMultiLingalMsg(90286, 'Only Show Material');   
  edtMatID.EditLabel.Caption    := GetMultiLingalMsg(90028, 'Material Code');
  lblGuageID.Caption            := GetMultiLingalMsg(90030, 'Guage ID');
  edtGuageName.EditLabel.Caption:= GetMultiLingalMsg(90031, 'Guage Name');
  lblSafety.Caption             := GetMultiLingalMsg(90201, 'Safety Quantity');
  lblMax.Caption                := GetMultiLingalMsg(90202, 'Max Quantity');
  lblFixed.Caption              := GetMultiLingalMsg(90203, 'Fixed Quantity');
  lblBuyDays.Caption            := GetMultiLingalMsg(90204, 'Buy Days');
  lblWghPcs.Caption             := GetMultiLingalMsg(90273, 'Weight/PCS');

  btnQuery.Caption              := GetMultiLingalMsg(90115, 'Filter Query');
  btnNew.Caption                := GetMultiLingalMsg(90276, 'New guage');
  btnDelete.Caption             := GetMultiLingalMsg(90277, 'Delete guage');
  btnUpdate.Caption             := GetMultiLingalMsg(90278, 'Update guage');
  btnSafety.Caption             := GetMultiLingalMsg(90279, 'Safety Define');
  btnQuit.Caption               := GetMultiLingalMsg(90025, 'Exit');
end;


/////////////////////////////////////////////////////////////////////
procedure TfrmMatGuageInfo.edtMatClassChange(Sender: TObject);
var iMatAttr: integer;
begin
  edtMatClassName.Text := dm_inventory.Get_Shizai_KubunName2(trim(edtMatClass.Text));
  iMatAttr := dm_inventory.Get_Shizai_KubunAttr(trim(edtMatClass.Text));
  if iMatAttr=1 then chkMaterial.checked := true
  else chkMaterial.checked := false;
end;

end.

⌨️ 快捷键说明

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