📄 sctvopt.pas
字号:
for Spot := 0 to pg.DataSourceList.Count - 1 do
begin
DSG := TSctDataSourceGuide(pg.DataSourceList.Items[Spot]);
if DSG.Createvariables then
begin
FillDsgFieldList(DSG, fields);
FillDsgVarList(Dsg, vars);
if Fields.Count <> vars.Count then DSG.Createvariables := False;
end;
end;
ShowModal;
end else
begin
Result := True;
for Spot := 0 to pg.DataSourceList.Count - 1 do
begin
DSG := TSctDataSourceGuide(pg.DataSourceList.Items[Spot]);
UpdateDSG(DSG);
end;
end;
vars.Free;
fields.Free;
end;
end;
Exclude(FDSOptionsState, dsoUpdatingVars);
end;
{$endif}
end;
procedure TSctDSVariableOptions.Button2Click(Sender: TObject);
begin
with TSctVarHelp.Create(Application) do
begin
ShowModal;
Free;
end;
end;
procedure TSctDSVariableOptions.ExprAddClick(Sender: TObject);
var
rvar: TSctExprVar;
begin
if PageManager <> nil then
begin
rvar := TSctExprVar.Create(PageManager.Page.Owner);
SctAutoSetComponentName(rvar, 'ExprVar', False);
rvar.Parent := TSctGroupPage(PageManager.Page);
rvar.id := vidExprVar;
rvar.UpdateLevel := TSctGroupPage(PageManager.Page).Detail.UpdateLevel;
rvar.DataType := TSctDataTypes(TComponent(Sender).Tag);
PageManager.PageDesigner.Modified;
RefreshLists;
ExprVarList.Selected[ExprVarList.Items.Count - 1] := True;
ExprVarListClick(ExprVarList);
end;
end;
procedure TSctDSVariableOptions.clistPopupPopup(Sender: TObject);
{$ifdef AceBDE}
var
DsgItem: TDsgItem;
Dsg: TSctDataSourceGuide;
{$endif}
begin
Delete1.Enabled := False;
{$ifdef AceBDE}
if DsgOk then
begin
Dsg := GetDataSourceGuide(GetFullDSName);
if Not AceIsAncestor(DSG) then
begin
DsgItem := TDsgItem(DsgList.Items[DataSourceList.Row]);
if Not DsgItem.CreateVariables then
begin
if clist.SelCount > 0 then Delete1.Enabled := True;
end;
end;
end;
{$endif}
SelectAll1.Enabled := clist.Items.Count > 0;
SelectAllUnused1.Enabled := clist.Items.Count > 0;
end;
procedure TSctDSVariableOptions.flistpopupPopup(Sender: TObject);
{$ifdef AceBDE}
var
DSG: TSctDataSourceGuide;
{$endif}
begin
{$ifdef AceBDE}
Dsg := GetDataSourceGuide(GetFullDSName);
if Not AceIsAncestor(DSG) then
flistAdd.Enabled := flist.SelCount > 0
else flistAdd.Enabled := False;
{$else}
flistAdd.Enabled := False;
{$endif}
flistSelectAll.Enabled := flist.Items.Count > 0;
end;
procedure TSctDSVariableOptions.ExprListPopupPopup(Sender: TObject);
begin
ExprDelete.Enabled := ExprVarList.SelCount > 0;
ExprSelectAll.Enabled := ExprVarList.Items.Count > 0;
ExprUnused.Enabled := ExprVarList.Items.Count > 0;
ExprAdd.Enabled := True;
end;
procedure TSctDSVariableOptions.TotalListPopupPopup(Sender: TObject);
begin
TotalDelete.Enabled := TotalVarList.SelCount > 0;
TotalSelectAll.Enabled := TotalVarList.Items.Count > 0;
TotalSelectAllUnused.Enabled := TotalVarList.Items.Count > 0;
end;
procedure TSctDSVariableOptions.UnSelectStuff(Component: TObject);
begin
if Component <> ExprVarList then UnSelect(ExprVarList);
if Component <> TotalVarList then UnSelect(TotalVarList);
if Component <> flist then UnSelect(flist);
if Component <> clist then UnSelect(clist);
if Component <> DBVarList then UnSelect(DBVarList);
end;
procedure TSctDSVariableOptions.flistClick(Sender: TObject);
begin
SelectComponent(nil);
UnSelectStuff(Sender);
end;
procedure TSctDSVariableOptions.ObjectChanged;
begin
PostMessage(Handle, Ace_RefreshVarLists, 0, 0);
end;
procedure TSctDSVariableOptions.TotalVarListDrawItem(Control: TWinControl;
Index: Integer; Rect: TRect; State: TOwnerDrawState);
var
r1, r2, r3: TRect;
Text: String;
TotalItem: TTotalItem;
SaveColor: TColor;
begin
TotalItem := TTotalItem(TotalList.Items[Index]);
Rect.Left := Rect.Left + 4;
r1 := Rect;
r1.Right := r1.Left + Round(Control.Width * 0.45);
r2 := Rect;
r2.Left := r1.Right+1;
r3 := r2;
r2.Right := r2.Left + Round((r2.Right - r2.Left) * 0.5);
r3.Left := r2.Right + 1;
TotalLabel.left := r1.Left;
TotalLevelLabel.left := r2.Left;
TotalVariableLabel.left := r3.Left;
with (Control as TListBox).Canvas do
begin
Text := TotalItem.TotalName;
if TotalItem.Used then
begin
if (odSelected in State) then Brush.Color := clGreen
else Font.Color := clGreen;
Text := '> ' + Text;
end;
FillRect(Rect);
TextRect(r1, r1.Left+2, r1.Top+1, Text);
SaveColor := clWhite;
Text := TotalItem.TotalLevelName;
if Not TotalItem.LevelMatch then
begin
if (odSelected in State) then
begin
SaveColor := Brush.Color;
Brush.Color := clRed
end else
begin
SaveColor := Font.Color;
Font.Color := clRed;
end;
Text := '* ' + Text;
end;
TextRect(r2, r2.Left+2, r2.Top+1, Text);
if Not TotalItem.LevelMatch then
begin
if (odSelected in State) then Brush.Color := SaveColor
else Font.Color := SaveColor;
end;
TextRect(r3, r3.Left+2, r3.Top+1, TotalItem.TotalVarName);
end;
end;
procedure TSctDSVariableOptions.ExprVarListDrawItem(Control: TWinControl;
Index: Integer; Rect: TRect; State: TOwnerDrawState);
var
r1, r2, r3, r4: TRect;
Text: String;
ExprItem: TExprItem;
begin
ExprItem := TExprItem(ExprList.Items[Index]);
Rect.Left := Rect.Left + 4;
r1 := Rect;
r2 := Rect;
r3 := Rect;
r4 := Rect;
r1.Right := r1.Left + Round(Control.Width * 0.25);
r2.Left := r1.Right+1;
r2.Right := r2.Left + Round((r2.Right - r2.Left) * 0.33);
r3.Left := r2.Right + 1;
r3.Right := r3.Left + Round((r3.Right - r3.Left) * 0.75);
r4.Left := r3.Right + 1;
ExprLabel.Left := r1.Left;
ExprLevelLabel.Left := r2.Left;
ExprEventLabel.Left := r3.Left;
ExprTypeLabel.Left := r4.Left;
with (Control as TListBox).Canvas do
begin
Text := ExprItem.ExprName;
if ExprItem.Used then
begin
if (odSelected in State) then Brush.Color := clGreen
else Font.Color := clGreen;
Text := '> ' + Text;
end;
FillRect(Rect);
TextRect(r1, r1.Left+2, r1.Top+1, Text);
TextRect(r2, r2.Left+2, r2.Top+1, ExprItem.ExprLevelName);
TextRect(r3, r3.Left+2, r3.Top+1, ExprItem.ExprEventName);
TextRect(r4, r4.Left + 2, r4.Top + 1, ExprItem.ExprTypeName);
end;
end;
procedure TSctDSVariableOptions.SelectUnused(List: TListBox);
var
Spot: Integer;
MyVar: TSctVar;
Text: String;
begin
for Spot := 0 to List.Items.Count - 1 do
begin
{$ifdef AceBDE}
if List = clist then
begin
Text := List.Items[Spot];
MyVar := GetDbVar( GetDataSourceGuide(GetFullDSName), Text);
end else
{$endif}
MyVar := GetVar(List.Items[Spot]);
List.Selected[Spot] := Not VarUsed( MyVar );
end;
end;
procedure TSctDSVariableOptions.SelectAllUnused1Click(Sender: TObject);
begin
SelectUnused(clist);
end;
procedure TSctDSVariableOptions.TotalSelectAllUnusedClick(Sender: TObject);
begin
SelectUnused(TotalVarList);
end;
procedure TSctDSVariableOptions.ExprUnusedClick(Sender: TObject);
begin
SelectUnused(ExprVarList);
end;
procedure TSctDSVariableOptions.flistDrawItem(Control: TWinControl;
Index: Integer; Rect: TRect; State: TOwnerDrawState);
begin
with (Control as TListBox).Canvas do
begin
FillRect(Rect);
Textout(Rect.Left+4, Rect.Top, TListBox(Control).Items[Index]);
end;
end;
procedure TSctDSVariableOptions.AceRefreshVarLists(var Message: TAceRefreshVarLists);
begin
RefreshLists;
end;
{$ifdef AceBDE}
procedure TSctDSVariableOptions.UpdateDBVarList;
var
pg: TSctGroupPage;
Spot: Integer;
DBItem: TDBItem;
DBVar: TSctDBVar;
DSG: TSctDataSourceGuide;
begin
ClearList(DBList);
if PageManager <> nil then
begin
pg := TSctGroupPage(PageManager.Page);
if pg <> nil then
begin
if pg.VarList <> nil then
begin
for Spot := 0 to pg.VarList.Count - 1 do
begin
if Not (TSctvar(pg.varlist.Items[Spot]).Id = vidAutoDataVar) And
Not TSctvar(pg.varlist.items[Spot]).AutoVar And
(TSctvar(pg.varlist.items[Spot]) is TSctdbVar) Then
begin
DBVar := TSctDBVar(pg.Varlist.Items[Spot]);
DBItem := TDBItem.Create;
DBItem.DBName := DBVar.Name;
if DBVar.UpdateLevel <> nil then DBItem.LevelName := DBVar.UpdateLevel.Name
else DBItem.LevelName := 'Fill in UpdateLevel.';
DBItem.Used := VarUsed(DBVar);
if DBVar.DataSource <> nil then DBItem.DataSourceName := DBVar.DataSource.Name
else DBItem.DataSourceName := 'Fill in DataSource.';
if DBVar.DataField = '' then DBItem.DataField := 'Fill in Field.'
else DBItem.DataField := DBVar.DataField;
DBItem.LevelMatch := True;
if (DBVar.UpdateLevel <> nil) And (DbVar.DataSource <> nil) then
begin
DSG := GetDataSourceGuide(DBVar.DataSource.Name);
if DSG <> nil then
begin
if DSG.UpdateLevel <> DBVar.UpdateLevel then DBItem.LevelMatch := False;
end;
end;
DBList.Add(DBItem);
end;
end;
end;
DBVarList.Clear;
for Spot := 0 to DBList.Count - 1 do
begin
DBItem := TDBItem(DBList.Items[Spot]);
DBVarList.Items.Add(DBItem.DBName);
end;
end;
end;
end;
procedure TSctDSVariableOptions.UpdateDsgList;
var
pg: TSctGroupPage;
Spot, Pos: Integer;
DSG: TSctDataSourceGuide;
DsgItem: TDsgItem;
begin
ClearList(DsgList);
if PageManager <> nil then
begin
pg := TSctGroupPage(PageManager.Page);
if pg <> nil then
begin
if pg.DataSourceList <> nil then
begin
for Pos := 0 to pg.DataSourceList.Count - 1 do
begin
DSG := pg.DataSourceList.items[Pos];
Spot := pg.FullDSList.IndexOf(DSG.DataSource);
if Spot <> -1 then
begin
DsgItem := TDsgItem.Create;
DsgItem.CreateVariables := DSG.CreateVariables;
DsgItem.DataSourceName := pg.FullDSNames[Spot];
DsgItem.UpdateLevelName := DSG.UpdateLevel.Name;
DsgList.Add(DsgItem);
end;
end;
end;
DataSourceList.RowCount := DsgList.Count;
for Spot := 0 to DsgList.Count - 1 do
begin
DsgItem := TDsgItem(DsgList.Items[Spot]);
DataSourceList.Cells[0,Spot] := ' ';
DataSourceList.Cells[1,Spot] := DsgItem.DataSourceName;
DataSourceList.Cells[2,Spot] := DsgItem.UpdateLevelName;
end;
if DsgList.Count = 0 then
begin
DataSourceList.Cells[0,0] := '';
DataSourceList.Cells[1,0] := '';
DataSourceList.Cells[2,0] := '';
end;
end;
end;
end;
{$endif}
{$ifdef AceBDE}
procedure TSctDSVariableOptions.FillDsgFieldList(DSG: TSctDataSourceGuide; List: TStringList);
var
DataSource: TDataSource;
begin
List.Clear;
if DSG <> nil then
begin
DataSource := DSG.DataSource;
if Datasource <> nil then
begin
if DataSource.DataSet <> nil then
begin
try
DataSource.DataSet.GetFieldNames(List);
except
end;
end;
end;
end;
end;
{$endif}
{$ifdef AceBDE}
procedure TSctDSVariableOptions.FillDsgVarList(DSG: TSctDataSourceGuide; List: TList);
var
pg: TSctGroupPage;
Spot: Integer;
Variable: TSctVar;
DataSource: TDataSource;
begin
List.Clear;
if DSG <> nil then
begin
pg := GetGroupPage;
DataSource := DSG.DataSource;
if Datasource <> nil then
begin
if pg.VarList <> nil then
begin
for Spot := 0 to pg.VarList.count - 1 do
begin
Variable := pg.varlist.items[Spot];
if Variable.id = vidAutoDataVar then
begin
if variable is TSctDbVar then
begin
if TSctDbvar(Variable).DataSource = DataSource then List.Add(Variable);
end;
end;
end;
end;
end;
end;
end;
{$endif}
{$ifdef AceBDE}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -