📄 rm_dict.pas
字号:
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 + -