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

📄 rm_dict.pas

📁 进销存·完整的·有数据库的·非常完整·只得参考
💻 PAS
📖 第 1 页 / 共 3 页
字号:
end;

procedure TRMDictForm.edtFieldAliasKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then
    treeFieldAliases.SetFocus;
end;

procedure TRMDictForm.treeFieldAliasesChange(Sender: TObject; Node: TTreeNode);
begin
  treeFieldAliasesClick(nil);
end;

procedure TRMDictForm.btnTableAddClick(Sender: TObject);
var
  i, n: Integer;
  s: string;
begin
  n := lstAllTables.ItemIndex;
  i := 0;
  while i < lstAllTables.Items.Count do
  begin
    if lstAllTables.Selected[i] then
    begin
      s := lstAllTables.Items[i];
      AddFieldAlias(s);
      FieldAliases[s] := '';
      lstAllTables.Items.Delete(i);
    end
    else
      Inc(i);
  end;

  treeFieldAliases.Items[0].Expand(False);
  treeFieldAliases.Selected := treeFieldAliases.Items[0];
  if n >= lstAllTables.Items.Count then
    Dec(n);
  if n < lstAllTables.Items.Count then
    lstAllTables.Selected[n] := True;
end;

procedure TRMDictForm.btnTableRemoveClick(Sender: TObject);
var
  TreeNode: TTreeNode;
  s: string;
begin
  TreeNode := treeFieldAliases.Selected;
  if (TreeNode = nil) or (TreeNode.ImageIndex <> 1) then Exit;

  s := GetItemName(TreeNode.Text);
  DeleteFieldAlias(TreeNode);
  lstAllTables.Items.Add(s);
  TreeNode.Delete;
  FieldAliases.Delete(FieldAliases.IndexOf(s));
end;

procedure TRMDictForm.btnTableAddAllClick(Sender: TObject);
var
  i: Integer;
begin
  for i := 0 to lstAllTables.Items.Count - 1 do
  begin
    AddFieldAlias(lstAllTables.Items[i]);
    FieldAliases[lstAllTables.Items[i]] := '';
  end;
  lstAllTables.Items.Clear;
  treeFieldAliases.Items[0].Expand(False);
  treeFieldAliases.Selected := treeFieldAliases.Items[0];
end;

procedure TRMDictForm.btnTableRemoveAllClick(Sender: TObject);
var
  i: Integer;
  TreeNode: TTreeNode;
begin
  for i := 0 to FieldAliases.Count - 1 do
  begin
    if Pos('"', FieldAliases.Name[i]) = 0 then
      lstAllTables.Items.Add(FieldAliases.Name[i]);
  end;

  FieldAliases.Clear;
  TreeNode := treeFieldAliases.Items[0];
  TreeNode.DeleteChildren;
end;

procedure TRMDictForm.treeFieldAliasesDragOver(Sender, Source: TObject; X,
  Y: Integer; State: TDragState; var Accept: Boolean);
begin
  Accept := Source is TListBox;
end;

procedure TRMDictForm.treeFieldAliasesDragDrop(Sender, Source: TObject; X,
  Y: Integer);
begin
  btnTableRemove.Click;
end;

procedure TRMDictForm.lstAllTablesDragOver(Sender, Source: TObject; X,
  Y: Integer; State: TDragState; var Accept: Boolean);
begin
  Accept := Source is TTreeView;
end;

procedure TRMDictForm.lstAllTablesDragDrop(Sender, Source: TObject; X,
  Y: Integer);
begin
  btnTableRemove.Click;
end;

procedure TRMDictForm.lstAllTablesDblClick(Sender: TObject);
begin
  btnTableAdd.Click;
end;

{ Band Datasources }

procedure TRMDictForm.AddBandDS(DSName: string);
var
  TreeNode: TTreeNode;
begin
  if DSName <> '' then
  begin
    treeBandDS.Items.AddChild(treeBandDS.Items[0], DSName);
    TreeNode := treeBandDS.Items[0].GetLastChild;
    TreeNode.ImageIndex := 7;
    TreeNode.SelectedIndex := 7;
  end;
end;

procedure TRMDictForm.FillBandDataSources;
var
  i, n: Integer;
  TreeNode: TTreeNode;
  sl: TStringList;
  s: string;
begin
  BandDataSources.Assign(Doc.Dictionary.BandDataSources);

  TreeNode := treeBandDS.Items[0];
  TreeNode.Text := 'Datasources'; //LoadStr(rmRes + 357);
  TreeNode.DeleteChildren;
  CurReport := Doc;

  sl := TStringList.Create;
  RMGetComponents(Doc.Owner, TRMDataSet, sl, nil);
  sl.Sort;

  lstAllBands.Items.Assign(sl);
  for i := 0 to sl.Count - 1 do
  begin
    s := sl[i];
    n := BandDatasources.IndexOf(sl[i]);
    if (BandDataSources.Count = 0) or (n = -1) then
      s := ''
    else if BandDatasources.Value[n] <> '' then
      s := s + ' {' + BandDatasources.Value[n] + '}';

    AddBandDS(s);
    if s <> '' then
      lstAllBands.Items.Delete(lstAllBands.Items.IndexOf(sl[i]));
  end;

  treeBandDS.FullExpand;
  treeBandDS.Selected := treeBandDS.Items[0];
  sl.Free;
end;

procedure TRMDictForm.treeBandDSKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = vk_Return then
    edtBandAlias.SetFocus;
end;

procedure TRMDictForm.treeBandDSClick(Sender: TObject);
var
  TreeNode: TTreeNode;
  s: string;
begin
  if edtBandAlias.Modified then edtBandAliasExit(nil);
  TreeNode := treeBandDS.Selected;
  if TreeNode <> treeBandDS.Items[0] then
  begin
    s := TreeNode.Text;
    if Pos('{', s) <> 0 then
      s := Copy(s, Pos('{', s) + 1, Pos('}', s) - Pos('{', s) - 1);
    edtBandAlias.Text := s;
  end
  else
    edtBandAlias.Text := '';

  ActiveNode := TreeNode;
end;

procedure TRMDictForm.treeBandDSChange(Sender: TObject; Node: TTreeNode);
begin
  treeBandDSClick(nil);
end;

procedure TRMDictForm.edtBandAliasExit(Sender: TObject);
var
  s, ItemName: string;
begin
  if edtBandAlias.Modified then
  begin
    if ActiveNode <> treeBandDS.Items[0] then
    begin
      s := ActiveNode.Text;
      ItemName := GetItemName(s);
      if Pos('{', s) <> 0 then
        s := Copy(s, 1, Pos('{', s) - 1)
      else
        s := s + ' ';
      ActiveNode.Text := s + '{' + edtBandAlias.Text + '}';
      BandDataSources[ItemName] := edtBandAlias.Text;
    end;
  end;
  edtBandAlias.Modified := False;
end;

procedure TRMDictForm.edtBandAliasKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then
    treeBandDS.SetFocus;
end;

procedure TRMDictForm.btnDatasourceAddClick(Sender: TObject);
var
  i, n: Integer;
  s: string;
begin
  n := lstAllBands.ItemIndex;
  i := 0;
  while i < lstAllBands.Items.Count do
  begin
    if lstAllBands.Selected[i] then
    begin
      s := lstAllBands.Items[i];
      AddBandDS(s);
      BandDataSources[s] := '';
      lstAllBands.Items.Delete(i);
    end
    else
      Inc(i);
  end;

  treeBandDS.Items[0].Expand(False);
  treeBandDS.Selected := treeBandDS.Items[0];
  if n >= lstAllBands.Items.Count then
    Dec(n);
  if n < lstAllBands.Items.Count then
    lstAllBands.Selected[n] := True;
end;

procedure TRMDictForm.btnDatasourceRemoveClick(Sender: TObject);
var
  TreeNode: TTreeNode;
  s: string;
begin
  TreeNode := treeBandDS.Selected;
  if (TreeNode = nil) or (TreeNode.ImageIndex <> 7) then Exit;

  s := GetItemName(TreeNode.Text);
  lstAllBands.Items.Add(s);
  TreeNode.Delete;
  BandDataSources.Delete(BandDataSources.IndexOf(s));
end;

procedure TRMDictForm.btnDatasourceAddAllClick(Sender: TObject);
var
  i: Integer;
begin
  for i := 0 to lstAllBands.Items.Count - 1 do
  begin
    AddBandDS(lstAllBands.Items[i]);
    BandDataSources[lstAllBands.Items[i]] := '';
  end;
  lstAllBands.Items.Clear;
  treeBandDS.Items[0].Expand(False);
  treeBandDS.Selected := treeBandDS.Items[0];
end;

procedure TRMDictForm.btnDatasourceRemoveAllClick(Sender: TObject);
var
  i: Integer;
  TreeNode: TTreeNode;
begin
  for i := 0 to BandDataSources.Count - 1 do
    lstAllBands.Items.Add(BandDataSources.Name[i]);

  BandDataSources.Clear;
  TreeNode := treeBandDS.Items[0];
  TreeNode.DeleteChildren;
end;

procedure TRMDictForm.treeBandDSDragOver(Sender, Source: TObject; X,
  Y: Integer; State: TDragState; var Accept: Boolean);
begin
  Accept := Source is TListBox;
end;

procedure TRMDictForm.treeBandDSDragDrop(Sender, Source: TObject; X,
  Y: Integer);
begin
  btnDatasourceRemove.Click;
end;

procedure TRMDictForm.lstAllBandsDragOver(Sender, Source: TObject; X,
  Y: Integer; State: TDragState; var Accept: Boolean);
begin
  Accept := Source is TTreeView;
end;

procedure TRMDictForm.lstAllBandsDragDrop(Sender, Source: TObject; X, Y: Integer);
begin
  btnDatasourceRemove.Click;
end;

procedure TRMDictForm.lstAllBandsDblClick(Sender: TObject);
begin
  btnDatasourceAdd.Click;
end;

{ Variables }

procedure TRMDictForm.FillVariables(FirstTime: Boolean); //自定义变量
var
  i: Integer;
  ANode, TreeNode: TTreeNode;
  s: string;
begin
	Busy := TRUE;
  if treeVar.Items.Count > 0 then
    treeVar.Items.Clear;
  if FirstTime then
    Variables.Assign(Doc.Dictionary.Variables);

  if Variables.Count = 0 then
  begin
    TreeNode := treeVar.Items.Add(treeVar.Selected, RMLoadStr(SNotAssigned));
    TreeNode.ImageIndex := -1;
    TreeNode.SelectedIndex := -1;
    treeVar.ShowRoot := False;
    chkExpr.Enabled := False;
  end
  else
  begin
    TreeNode := nil;
    for i := 0 to Variables.Count - 1 do
    begin
      s := Variables.Name[i];
      if (s <> '') and (s[1] = ' ') then
      begin
        TreeNode := treeVar.Items.Add(nil, Copy(s, 2, 99999));
        TreeNode.ImageIndex := 5;
        TreeNode.SelectedIndex := 5;
      end
      else if TreeNode <> nil then
      begin
        ANode := treeVar.Items.AddChild(TreeNode, s);
        ANode.ImageIndex := 6;
        ANode.SelectedIndex := 6;
      end;
    end;
  end;

  Busy := FALSE;
  treeVar.FullExpand;
  if treeVar.Items.Count > 0 then
    treeVar.Items[0].Selected := True;
end;

procedure TRMDictForm.btnNewCategoryClick(Sender: TObject);
var
  ANode, TreeNode: TTreeNode;
  s: string;

  function CreateNewCategory: string;
  var
    i: Integer;

    function FindCategory(s: string): Boolean;
    var
      i: Integer;
    begin
      Result := False;
      for i := 0 to Variables.Count - 1 do
      begin
        if AnsiCompareText(Variables.Name[i], s) = 0 then
        begin
          Result := True;
          break;
        end;
      end;
    end;

  begin
    for i := 1 to 10000 do
    begin
      Result := 'Category' + IntToStr(i);
      if not FindCategory(' ' + Result) then
        break;
    end;
  end;

begin
  TreeNode := treeVar.Selected;
  if treeVar.ShowRoot = False then
  begin
    TreeNode.Delete;
    TreeNode := nil;
    treeVar.ShowRoot := True;
    chkExpr.Enabled := True;
  end;
  if TreeNode <> nil then
    TreeNode := treeVar.Items[0];

  s := CreateNewCategory;
  Variables[' ' + s] := '';
  ANode := treeVar.Items.Add(TreeNode, s);
  ANode.ImageIndex := 5;
  ANode.SelectedIndex := 5;
  treeVar.Selected := ANode;
  ANode.EditText;
end;

procedure TRMDictForm.btnNewVarClick(Sender: TObject);
var
  ANode, TreeNode: TTreeNode;
  s: string;

  function CreateNewVariable: string;
  var
    i: Integer;

    function FindVariable(s: string): Boolean;
    var
      i: Integer;
    begin
      Result := False;
      for i := 0 to Variables.Count - 1 do

⌨️ 快捷键说明

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