📄 jvparameterlistmainform.pas
字号:
Caption := '&Interval';
SearchName := 'Interval';
AsString := '';
Width := 310;
LabelWidth := 50;
DisableReasons.AddReason('ExecuteAsJob', False);
end; {*** WITH tJvEditParameter(Parameter) DO ***}
ParameterList.AddParameter(Parameter);
ParameterList.Messages.Caption := 'Select Type of Analyze';
ParameterList.LoadData;
ParameterList.ShowParameterDialog;
ParameterList.StoreData;
finally
ParameterList.Free;
end;
end;
procedure TJvParameterListDemoMainFrm.AssignWidthHeightCheckBoxClick(Sender: TObject);
begin
WidthEdit.Enabled := AssignWidthHeightCheckBox.Checked;
HeightEdit.Enabled := AssignWidthHeightCheckBox.Checked;
end;
procedure TJvParameterListDemoMainFrm.Button16Click(Sender: TObject);
var
ParameterList: TJvParameterList;
BaseParameter: TJvBaseParameter;
begin
ParameterList := TJvParameterList.Create(self);
try
BaseParameter := TJvBaseParameter(tJvMemoParameter.Create(ParameterList));
with tJvMemoParameter(BaseParameter) do
begin
SearchName := 'Memo';
Caption := 'Simple Memo';
AsString := 'Memo Contents';
Width := 420;
Height := 200;
WordWrap := False;
WantTabs := False;
WantReturns := False;
Scrollbars := ssBoth;
ReadOnly := TRUE;
end; {*** WITH BaseParameter DO ***}
ParameterList.AddParameter(BaseParameter);
ParameterList.Messages.OkButton := 'C&opy';
ParameterList.Messages.CancelButton := '&Cancel';
if ParameterList.ShowParameterDialog then
JVDSADialogs.MessageDlg(ParameterList.ParameterByName('Memo').ASString, mtInformation, [mbok], 0);
finally
ParameterList.Free;
end;
end;
procedure TJvParameterListDemoMainFrm.ShowUnitVersioning(const aDynControlEngine: tJvDynControlEngine);
var
DynEngine: TJvDynControlEngine;
MainPanel, ButtonPanel: TWinControl;
TopBox, BottomBox: TWinControl;
Button: TButton;
TreeView: TWinControl;
IJvReadOnly: IJvDynControlReadOnly;
IJvTreeView: IJvDynControlTreeView;
I: Integer;
MainNode: TTreeNode;
Nodes: TTreeNodes;
function FindMasterNode(iNodes: TTreeNodes; iNode: TTreeNode; const iPath: string): tTreeNode;
var
Part1, Part2: string;
I: Integer;
begin
Result := nil;
Part2 := iPath;
Part1 := '';
while (Part1 = '') and (Part2 <> '') do
begin
Part1 := trim(StrBefore('\', Part2));
Part2 := trim(StrAfter('\', Part2));
end;
if Part1 <> '' then
begin
for I := 0 to iNode.Count - 1 do
begin
if iNode.Item[I].Text = Part1 then
begin
Result := FindMasterNode(iNodes, iNode.Item[I], Part2);
break;
end;
end;
if Result = nil then
begin
Result := iNodes.AddChild(iNode, Part1);
Result := FindMasterNode(iNodes, Result, Part2);
end;
end
else
Result := iNode;
end;
begin
if Assigned(aDynControlEngine) then
DynEngine := aDynControlEngine
else
DynEngine := DefaultDynControlEngine;
UnitVersionForm := DynEngine.CreateForm('Unit Versioning', '');
try
if UnitVersionForm is TForm then
TForm(UnitVersionForm).Position := poScreenCenter;
UnitVersionForm.Width := 500;
UnitVersionForm.Height := 500;
ButtonPanel := DynEngine.CreatePanelControl(UnitVersionForm, UnitVersionForm, 'ButtonPanel', '', alBottom);
MainPanel := DynEngine.CreatePanelControl(UnitVersionForm, UnitVersionForm, 'MainPanel', '', alClient);
if MainPanel is TPanel then
TPanel(MainPanel).borderWidth := 3;
Button := DynEngine.CreateButton(UnitVersionForm, ButtonPanel, 'CloseBtn', 'Close', '', CloseButtonOnClick, True,
True);
Button.Left := Round((UnitVersionForm.Width - Button.Width) / 2);
Button.Top := Round((ButtonPanel.Height - Button.Height) / 2);
BottomBox := DynEngine.CreateGroupBoxControl(UnitVersionForm, MainPanel, 'BottomBox', 'Details');
BottomBox.Align := alBottom;
TopBox := DynEngine.CreateGroupBoxControl(UnitVersionForm, MainPanel, 'TopBox', 'Unit Versions');
TopBox.Align := alClient;
TreeView := DynEngine.CreateTreeViewControl(UnitVersionForm, TopBox, 'TreeView');
TreeView.Align := alClient;
RCSFilePanel := DynEngine.CreatePanelControl(UnitVersionForm, BottomBox, 'RCSFilePanel', '', alTop);
RCSFilePanel.Align := alTop;
RCSFileEdit := DynEngine.CreateEditControl(UnitVersionForm, RCSFilePanel, 'RCSFileEdit');
RCSFileEdit.Width := 340;
if Supports(RCSFileEdit, IJvDynControlReadOnly, IJvReadOnly) then
IJvReadOnly.ControlSetReadOnly(True);
LabelControl := DynEngine.CreateLabelControlPanel(UnitVersionForm, RCSFilePanel, 'RCSFileLabel', 'RCS File',
RCSFileEdit, False, 80);
RCSFilePanel.Height := RCSFileEdit.Height + 1;
RevisionPanel := DynEngine.CreatePanelControl(UnitVersionForm, BottomBox, 'RevisionPanel', '', alTop);
RevisionPanel.Align := alTop;
RevisionEdit := DynEngine.CreateEditControl(UnitVersionForm, RevisionPanel, 'RevisionEdit');
RevisionEdit.Width := 340;
LabelControl := DynEngine.CreateLabelControlPanel(UnitVersionForm, RevisionPanel, 'RevisionLabel', 'Revision',
RevisionEdit, False, 80);
if Supports(RevisionEdit, IJvDynControlReadOnly, IJvReadOnly) then
IJvReadOnly.ControlSetReadOnly(True);
RevisionPanel.Height := RevisionEdit.Height + 1;
DatePanel := DynEngine.CreatePanelControl(UnitVersionForm, BottomBox, 'DatePanel', '', alTop);
DatePanel.Align := alTop;
DateEdit := DynEngine.CreateEditControl(UnitVersionForm, DatePanel, 'DateEdit');
DateEdit.Width := 340;
LabelControl := DynEngine.CreateLabelControlPanel(UnitVersionForm, DatePanel, 'DateLabel', 'Date', DateEdit, False,
80);
if Supports(DateEdit, IJvDynControlReadOnly, IJvReadOnly) then
IJvReadOnly.ControlSetReadOnly(True);
DatePanel.Height := DateEdit.Height + 1;
PathPanel := DynEngine.CreatePanelControl(UnitVersionForm, BottomBox, 'PathPanel', '', alTop);
PathPanel.Align := alTop;
PathEdit := DynEngine.CreateEditControl(UnitVersionForm, PathPanel, 'PathEdit');
PathEdit.Width := 340;
LabelControl := DynEngine.CreateLabelControlPanel(UnitVersionForm, PathPanel, 'PathLabel', 'Path', PathEdit, False,
80);
if Supports(PathEdit, IJvDynControlReadOnly, IJvReadOnly) then
IJvReadOnly.ControlSetReadOnly(True);
PathPanel.Height := PathEdit.Height + 1;
ExtraPanel := DynEngine.CreatePanelControl(UnitVersionForm, BottomBox, 'ExtraPanel', '', alTop);
ExtraPanel.Align := alTop;
ExtraEdit := DynEngine.CreateMemoControl(UnitVersionForm, ExtraPanel, 'ExtraEdit');
// if Supports(ExtraEdit, IJvDynControlReadOnly, IJvReadOnly) then
// IJvReadOnly.ControlSetReadOnly(True);
ExtraEdit.Width := 400;
LabelControl := DynEngine.CreateLabelControlPanel(UnitVersionForm, ExtraPanel, 'ExtraLabel', 'Extra', ExtraEdit,
True, 80);
LabelControl.Width := 80 + PathEdit.Width;
ExtraPanel.Height := LabelControl.Height;
BottomBox.Height := DatePanel.Height * 4 + 10 + ExtraPanel.Height;
if Supports(TreeView, IJvDynControlReadOnly, IJvReadOnly) then
IJvReadOnly.ControlSetReadOnly(True);
if Supports(TreeView, IJvDynControlTreeView, IJvTreeView) then
begin
Nodes := IJvTreeView.ControlGetItems;
Nodes.Clear;
IJvTreeView.ControlSetOnChange(TreeViewOnChange);
MainNode := Nodes.AddChild(nil, ExtractFileName(ParamStr(0)) + ' ' + VersionFixedFileInfoString(ParamStr(0)));
with GetUnitVersioning do
for I := 0 to Count - 1 do
Nodes.AddChildObject(FindMasterNode(Nodes, MainNode, Items[I].LogPath),
Items[I].RCSfile + ' - ' + Items[I].Revision, Items[I]);
IJvTreeView.ControlSetSortType(stText);
if TreeView is TTreeView then
TTreeView(TreeView).FullExpand;
MainNode.Selected := True;
end;
TreeViewOnChange(nil, nil);
UnitVersionForm.ShowModal;
finally
UnitVersionForm.Release; // keep the form created till all used interfaces are cleared
end;
end;
procedure TJvParameterListDemoMainFrm.CloseButtonOnClick(Sender: TObject);
begin
if Assigned(UnitVersionForm) then
UnitVersionForm.ModalResult := mrOk;
end;
procedure TJvParameterListDemoMainFrm.TreeViewOnChange(Sender: TObject; Node: TTreeNode);
var
IJvData: IJvDynControlData;
begin
if Assigned(Node) and Assigned(Node.Data) and
(TObject(Node.Data) is TUnitVersion) then
begin
if Supports(RCSFileEdit, IJvDynControlData, IJvData) then
begin
IJvData.ControlValue := TUnitVersion(Node.Data).RCSFile;
RCSFilePanel.Visible := True;
end
else
RCSFilePanel.Visible := False;
if Supports(RevisionEdit, IJvDynControlData, IJvData) then
begin
IJvData.ControlValue := TUnitVersion(Node.Data).Revision;
RevisionPanel.Visible := True;
end
else
RevisionPanel.Visible := False;
if Supports(DateEdit, IJvDynControlData, IJvData) then
begin
IJvData.ControlValue := TUnitVersion(Node.Data).Date;
DatePanel.Visible := True;
end
else
DatePanel.Visible := False;
if Supports(ExtraEdit, IJvDynControlData, IJvData) and
(TUnitVersion(Node.Data).Extra <> '') then
begin
IJvData.ControlValue := TUnitVersion(Node.Data).Extra;
ExtraPanel.Visible := True;
end
else
ExtraPanel.Visible := False;
if Supports(PathEdit, IJvDynControlData, IJvData) then
begin
IJvData.ControlValue := TUnitVersion(Node.Data).LogPath;
PathPanel.Visible := True;
end
else
PathPanel.Visible := False;
end
else
begin
RCSFilePanel.Visible := False;
RevisionPanel.Visible := False;
DatePanel.Visible := False;
ExtraPanel.Visible := False;
PathPanel.Visible := False;
end;
end;
procedure TJvParameterListDemoMainFrm.Button17Click(Sender: TObject);
begin
ShowUnitVersioning(nil);
end;
procedure TJvParameterListDemoMainFrm.Button18Click(Sender: TObject);
var
ParameterList: TJvParameterList;
Parameter: TJvBaseParameter;
begin
ParameterList := TJvParameterList.Create(Self);
try
Parameter := TJvBaseParameter(TJvEditParameter.Create(ParameterList));
with TJvEditParameter(Parameter) do
begin
Caption := '&Job';
SearchName := 'Job';
AsString := '999';
ReadOnly := True;
Width := 250;
end; {*** WITH TJvEditParameter(Parameter) DO ***}
ParameterList.AddParameter(Parameter);
Parameter := TJvBaseParameter(TJvMemoParameter.Create(ParameterList));
with TJvMemoParameter(Parameter) do
begin
Caption := '&What';
SearchName := 'What';
AsString := 'Do Anything';
Required := True;
Width := 450;
Height := 250;
Scrollbars := ssBoth;
WantTabs := False;
WantReturns := True;
WordWrap := False;
FontName := 'Courier New';
end; {*** WITH TJvEditParameter(Parameter) DO ***}
ParameterList.AddParameter(Parameter);
Parameter := TJvBaseParameter(tJvDateParameter.Create(ParameterList));
with tJvDateParameter(Parameter) do
begin
Caption := '&Date';
SearchName := 'Date';
asDate := Trunc(now);
Width := 120;
end; {*** WITH TJvEditParameter(Parameter) DO ***}
ParameterList.AddParameter(Parameter);
Parameter := TJvBaseParameter(tJvTimeParameter.Create(ParameterList));
with tJvTimeParameter(Parameter) do
begin
Caption := '&Time';
SearchName := 'Time';
asDate := now;
Width := 120;
end; {*** WITH TJvEditParameter(Parameter) DO ***}
ParameterList.AddParameter(Parameter);
Parameter := TJvBaseParameter(TJvEditParameter.Create(ParameterList));
with TJvEditParameter(Parameter) do
begin
Caption := '&Interval';
SearchName := 'Interval';
AsString := 'trunc(sysdate)+1';
Width := 450;
end; {*** WITH TJvEditParameter(Parameter) DO ***}
ParameterList.AddParameter(Parameter);
Parameter := TJvBaseParameter(TJvCheckBoxParameter.Create(ParameterList));
with Parameter do
begin
Caption := '&Broken Job';
SearchName := 'Broken';
AsBoolean := FALSE;
Width := 350;
end; {*** WITH TJvEditParameter(Parameter) DO ***}
ParameterList.AddParameter(Parameter);
ParameterList.Messages.Caption := 'Change Job';
ParameterList.Messages.OkButton := '&Ok';
ParameterList.Messages.CancelButton := '&Cancel';
ParameterList.Width := 510;
ParameterList.ShowParameterDialog;
finally
FreeAndNil(ParameterList);
end;
end;
initialization
RegisterUnitVersion(HInstance, UnitVersioning);
finalization
UnregisterUnitVersion(HInstance);
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -