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

📄 wwselfld.pas

📁 胜天进销存源码,国产优秀的进销存
💻 PAS
📖 第 1 页 / 共 4 页
字号:
unit Wwselfld;
{
//
// Dialog to support wwDBGrid field property selection
//
// Copyright (c) 1995-2001 by Woll2Woll Software
//
// 7/31/97 - DisplayLabel property only used for useTfields=true
}

interface

{$i wwIfDef.pas}

uses Windows, Classes, Graphics, Forms, Controls, Buttons,
  StdCtrls, db, wwTable, wwaddlk, sysutils, dialogs,
  TabNotBk, Tabs, ExtCtrls, DBTables, wwDBLook, wwcommon, wwstr,
  wwdbcomb, wwdbgrid, wwQuery, wwQBE, Wwdbdlg, wwidlg, wwprpfld, wwdatainspector,
  wwprprx, 
  {$ifdef wwDelphi6Up}
  designintf,
  {$else}
  dsgnintf,
  {$endif}

  {$ifdef win32}
  wwriched,
  {$endif}
  wwtypes, Mask, wwdbedit, Wwdotdot, wwdbigrd, ipdsgn, wwedtpic, ComCtrls;

type
   TwwSelectedPropertyType = (sptNone, sptDataSetType, sptRecordViewType, sptObjectViewType);

TSelFieldsForm = class(TForm)
    OKBtn: TBitBtn;
    CancelBtn: TBitBtn;
    HelpBtn: TBitBtn;
    GroupBox1: TGroupBox;
    DstList: TListBox;
    AddFieldsButton: TButton;
    RemoveFieldsButton: TButton;
    SelectedFieldCaption: TGroupBox;
    FieldNotebook: TPageControl;
    DisplayWidthLabel: TLabel;
    Label2: TLabel;
    DisplayWidth: TEdit;
    DisplayTitle: TEdit;
    Label3: TLabel;
    ControlTypeEdit: TComboBox;
    ControlTypeNotebook: TNotebook;
    Label10: TLabel;
    Label11: TLabel;
    BitmapScalingCombo: TComboBox;
    RasterCombo: TComboBox;
    Label9: TLabel;
    Bevel1: TBevel;
    Label4: TLabel;
    Label5: TLabel;
    LookupFieldCaption: TLabel;
    LookupTableCaption: TLabel;
    Button4: TButton;
    EditLookupButton: TButton;
    Panel1: TPanel;
    UseTFieldCheckbox: TCheckBox;
    DBRichEditComboList: TwwDBComboBox;
    Label1: TLabel;
    InsertNewLineButton: TBitBtn;
    ReadOnlyCB: TCheckBox;
    ShrinkToFit: TCheckBox;
    DBLookupComboList: TwwDBComboBox;
    ControlAlwaysPaints: TCheckBox;
    RTFControlAlwaysPaints: TCheckBox;
    GroupName: TEdit;
    GroupNameLabel: TLabel;
    DesignMaskButton: TButton;
    PictureMaskEdit: TwwDBComboDlg;
    AutoFillCheckbox: TCheckbox;
    UsePictureMask: TCheckbox;
    MaskTabControl: TPageControl;
    PictureDescription: TMemo;
    RegexPage: TTabSheet;
    PictureMaskPage: TTabSheet;
    RegexEdit: TwwDBComboDlg;
    RegexDescription: TMemo;
    CaseSensitiveRegexCheckBox: TCheckBox;
    Button1: TButton;
    RegexErrorMsgEdit: TMemo;
    CheckOnValue: TEdit;
    CheckOffValue: TEdit;
    TabSheetDisplay: TTabSheet;
    TabSheet3: TTabSheet;
    TabSheetLinks: TTabSheet;
    function InDestList(Value: string): Boolean;
    procedure ExcludeItems;
    procedure DstListClick(Sender: TObject);
    procedure EditLookupButtonClick(Sender: TObject);
    procedure ClearLinkButtonClick(Sender: TObject);
    procedure SelectDest(index: integer);
    procedure FormActivate(Sender: TObject);
    procedure DisplayWidthChange(Sender: TObject);
    procedure DisplayTitleChange(Sender: TObject);
    procedure FieldTabSetClick(Sender: TObject);
    procedure OKBtnClick(Sender: TObject);
    procedure ControlTypeEditChange(Sender: TObject);
    procedure ExcludeBtnClick(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure SortAvailCheckboxClick(Sender: TObject);
    procedure HelpBtnClick(Sender: TObject);
    procedure DesignMaskButtonClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure PictureMaskEditInitDialog(Dialog: TwwLookupDlg);
    procedure PictureMaskEditChange(Sender: TObject);
    procedure PictureMaskEditCloseUp(Sender: TObject;
      LookupTable: TDataSet; FillTable: TDataset; modified: Boolean);
    procedure RemoveFieldsButtonClick(Sender: TObject);
    procedure AddFieldsButtonClick(Sender: TObject);
    procedure DstListDragDrop(Sender, Source: TObject; X, Y: Integer);
    procedure DstListDragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    procedure DstListMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormShow(Sender: TObject);
    procedure ScrollTimerOnTimer(Sender: TObject);
    procedure FormDragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    procedure UseTFieldCheckboxClick(Sender: TObject);
    procedure InsertNewLineButtonClick(Sender: TObject);
    procedure ReadOnlyCBClick(Sender: TObject);
    procedure PictureMaskEditCustomDlg(Sender: TObject);
    procedure DBLookupComboListDropDown(Sender: TObject);
    procedure DBLookupComboListCloseUp(Sender: TwwDBComboBox;
      Select: Boolean);
    procedure GroupNameChange(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure RegexEditCustomDlg(Sender: TObject);
    procedure RegexEditChange(Sender: TObject);
  private
    gridTable: TDataSet;
    curField: TField;
    dragFromRow: integer;
    initialized: boolean;
    SrcListItems: TStrings;
    ScrollTimer: TTimer;
    GoForwards, GoBackwards: Boolean;
    useTFields: boolean;
    GSelected: TStrings;
    InSelectDest: boolean;
    Component: TComponent;
    controlType: TStrings;
    propertyType: TwwSelectedPropertyType;
    OrigColor: TColor;

    procedure refreshSourceList;
//    procedure AddEditControls(curForm: TComponent);

    procedure getLookupFields(curField: Tfield;
      var databasename, tableName, fieldName, index: wwSmallString;
      var indexFields: string;
      var joins: string;
      var useExtension: char;
      var foundIndex: integer);

    procedure getControlInfo(curField: Tfield;
            var controlName: wwSmallString; { formerly String }
            controlData: TStrings);

    procedure setControlInfo(curField: TField;
            controlName: String;
            controlData: TStrings);

    procedure saveControlInfo;
    procedure SavePictureMasks;
    procedure SaveRegexMasks;    
//    procedure UpdateSelected(FieldName: string; val: string;
//      SelectedProperty: TwwUpdateSelected);
public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;

end;

function wwSelectTableFields(
   AComponent: TComponent;
   dataSet: TDataSet;
   var fields: TStrings;
   var AuseTFields: boolean;
   ADesigner:
        {$ifdef wwDelphi6Up}
        IDesigner;
        {$else}
          {$ifdef wwDelphi4Up}
          IFormDesigner;
          {$else}
          TFormDesigner;
          {$endif}
        {$endif}
//   {$ifdef wwDelphi4Up}IFormDesigner{$else}TFormDesigner{$endif};
   APropertyType: TwwSelectedPropertyType): boolean;

implementation

{$R *.DFM}

uses wwprppic, wwlocate, typinfo;
{type SmallString = String[64];}

const LINKS_TABSETNAME = '&Links';

//var callingDesigner: {$ifdef wwDelphi4Up}IFormDesigner{$else}TFormDesigner{$endif};
destructor TSelFieldsForm.Destroy;
begin
   SrcListItems.Free;
   ScrollTimer.enabled:= False;
   ScrollTimer.Free;
   inherited Destroy;
end;

constructor TSelFieldsForm.Create(AOwner: TComponent);
begin
   initialized:= False;
   inherited Create(AOwner);
   curField:= Nil;
   SrcListItems:= TStringList.create;
   ScrollTimer:= TTimer.create(self);
   ScrollTimer.onTimer:= ScrollTimerOnTimer;
   ScrollTimer.interval:= 50;

end;

procedure TSelFieldsForm.ScrollTimerOnTimer(Sender: TObject);
begin
   if GoForwards then DstList.TopIndex:= DstList.TopIndex + 1
   else if GoBackwards then DstList.TopIndex:= DstList.TopIndex - 1;
end;

Function wwSupportsInfoPower(ctrl: TComponent): boolean;
var PropInfo: PPropInfo;
begin
   if Ctrl.InheritsFrom(TWinControl) then
   begin
      PropInfo:= Typinfo.GetPropInfo(ctrl.ClassInfo,'InfoPower');
      result:= PropInfo<>Nil;
      if not result then
         if (Typinfo.GetPropInfo(ctrl.ClassInfo,'DataSource')<>nil) and
            ((Typinfo.GetPropInfo(ctrl.ClassInfo,'DataField')<>nil) or
             wwIsClass(ctrl.ClassType, 'TwwDataInspector')) then
            result:=True;
   end
   else result:= False;
end;


function wwSelectTableFields(
   AComponent: TComponent;
   dataSet: TDataSet;
   var fields: TStrings;
   var AUseTFields: boolean;
   ADesigner: //{$ifdef wwDelphi4Up}IFormDesigner{$else}TFormDesigner{$endif};
        {$ifdef wwDelphi6Up}
        IDesigner;
        {$else}
          {$ifdef wwDelphi4Up}
          IFormDesigner;
          {$else}
          TFormDesigner;
          {$endif}
        {$endif}
   APropertyType: TwwSelectedPropertyType): boolean;
var i: integer;
   parts : TStrings;
   thisIndex: integer;
{   curField: TField;}
//   selString: string;
//   tempcomponent: TComponent;
   origSelected: TStrings;
   tempForm: TSelFieldsForm;
   {$ifdef wwDelphi5Up}
   OwnerComponent: TComponent;
   {$endif}

   procedure AddEditControls(curForm: TComponent);
   var i: integer;
       tempComponent: TComponent;
   begin
      for i:= 0 to curForm.ComponentCount-1 do begin
         tempcomponent:= curForm.components[i];
         if (tempcomponent is TwwDBCustomEdit) or (tempcomponent is TwwDBCustomLookupCombo) then
             tempForm.DBLookupComboList.items.add(tempComponent.name)
         else if (tempcomponent is TwwCustomRichEdit) then
             tempForm.DBRichEditComboList.items.add(tempcomponent.name)
         else if wwSupportsInfoPower(tempcomponent) then
             tempForm.DBLookupComboList.items.add(tempcomponent.name)
         {$ifdef wwDelphi5Up}
         else if (tempComponent is TFrame) then begin
             AddEditControls(tempComponent);
         end
         {$endif}
      end;
   end;


begin
   parts := TStringList.create;
//   callingDesigner:= designer;
   result:= False;
   origSelected:= nil;

   tempForm:= TSelFieldsForm.create(Application);
   with tempForm do
{   with TSelFieldsForm.create(Application) do}
   try
      if not wwDataSet(dataSet) then begin
         MessageDlg('Data source must reference an InfoPower compatible TDataSet.', mtError,
                        [mbok], 0);
         exit;
      end;

      Component:= AComponent;
      gridTable:= dataSet;
      ControlType:= nil; { Delphi 5}
      if wwGetControlInfoInDataSet(Component) then
         controlType:= wwGetControlType(gridTable);
      if ControlType=nil then
         controlType:= wwGetControlType(Component);

      useTFields:= AUseTFields;
      GSelected:= Fields;
      OrigSelected:= TStringList.create;
      OrigSelected.assign(GSelected);

      // Don't error out if talble inactive
      if (not gridTable.active) and (gridtable.fieldcount=0) then begin
         MessageDlg('Cannot edit field properties.  Dataset must be active or have persistent fields.',
                    mtError, [mbok], 0);
         exit;
      end;

      gridTable.designer.Free;  { reset dataset designer }

      { Initialize list of data-sources }
      DBLookupComboList.items.clear;
      DBRichEditComboList.items.clear;
//      if (callingDesigner<>Nil) and (callingDesigner.form=nil) then
//         showmessage('calling designer form is nil');

      if ADesigner<>Nil then
      begin
         {$ifdef wwDelphi5Up}
         ownerComponent:= wwGetOwnerFrameOrForm(Component);
         if OwnerComponent is TCustomFrame then
           AddEditControls(OwnerComponent)
         else
         {$endif}
         {$ifdef wwDelphi6Up}
           AddEditControls(ADesigner.Root)
         {$else}
           AddEditControls(ADesigner.Form)
         {$endif}
      end
      else begin
         AddEditControls(GetParentForm(TControl(Component)));
         showmessage('calling designer is nil');
      end;

      { 5/2/97 - Included controls on same form as dataset }
{      if (callingDesigner.Form<>gridtable.owner) then begin
         for i:= 0 to gridtable.owner.ComponentCount-1 do begin
            component:= gridtable.owner.components[i];
            if (component is TwwDBCustomEdit) or (component is TwwDBCustomLookupCombo) then
                DBLookupComboList.items.add('DataSetForm.' + Component.Name)
         end
      end;
}
      gridTable.disableControls;
      Screen.cursor:= crHourGlass;

      gridTable.getFieldNames(SrcListItems);

         { Fill selected fields grid }
         for i:= 0 to fields.count-1 do begin
            strBreakApart(fields[i], #9, parts);
            curField:= gridTable.FindField(parts[0]);
            if curField<>Nil then begin

⌨️ 快捷键说明

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