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

📄 sctvopt.pas

📁 suite component ace report
💻 PAS
📖 第 1 页 / 共 5 页
字号:
          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 + -