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

📄 wwselfld.pas

📁 胜天进销存源码,国产优秀的进销存
💻 PAS
📖 第 1 页 / 共 4 页
字号:
      for i:= 0 to count-1 do begin
         strBreakApart(strings[i], ';', parts);
         if parts[0]=curField.fieldName then begin
            if controlTypeEdit.text='Field' then begin
               controlType.delete(i);
               found:= True;
               break;
            end
            else begin
               line:= parts[0] + ';' + controlTypeEdit.text;
               for j:= 0 to controlData.count-1 do line:= line + ';' + controlData[j];
               strings[i]:= line;
               found:= True;
               break;
            end
         end
      end;

      if (not found) and (controlTypeEdit.text<>'Field') then begin
         line:= curfield.fieldname + ';' + controlTypeEdit.text;
         for j:= 0 to controlData.count-1 do line:= line + ';' + controlData[j];
         controlType.add(line);
      end;

      parts.free;
   end

end;


procedure TSelFieldsform.getLookupFields(curField: Tfield;
   var databasename, tableName, fieldName, index: wwSmallString;
   var indexFields: string;
   var joins: string;
   var useExtension: char;
   var foundIndex: integer);
var found: boolean;
    i,j: integer;
    parts: TStrings;
begin
      parts:= TStringList.create;

      found:= false;
      if wwGetLookupFields(gridTable)=nil then exit;

      with wwGetLookupFields(gridTable) do begin
         for i:= 0 to count-1 do begin
            strBreakApart(strings[i], ';', parts);
            if parts[0]=curField.fieldName then begin
               if parts.count<5 then continue;

               found:=True;
               foundIndex:= i;
               databaseName:= parts[1];
               tableName:= parts[2];
               fieldName:= parts[3];
               index:= parts[4];

               useExtension:= 'Y';
               if (parts.count>5) then
               begin
                  if parts[parts.count-1]='N' then useExtension:= 'N';
               end;

               if parts.count>5 then begin
                  indexFields:= parts[5];
                  for j:= 6 to parts.count-2 do indexFields:= indexFields + ';' + parts[j];
               end;

               while (i>=wwGetLookupLinks(gridTable).count) do
                  wwGetLookupLinks(gridTable).add('');
               joins:= wwGetLookupLinks(gridTable).Strings[i];
               break;
            end
         end
      end;

      if not found then begin
         databaseName:= wwGetDatabaseName(gridTable);
         tableName:= '';
         fieldName:= '';
         index:= '';
         indexFields:= '';
         joins:= '';
         useExtension:= 'Y';
         foundIndex:= -1;
      end;
      parts.free;

end;

procedure TSelFieldsForm.EditLookupButtonClick(Sender: TObject);
var databaseName, tableName, fieldName, index: wwSmallString;
    useExtension: char;
    indexFields: string;
    joins: string;
    curField: TField;
{    found: boolean;}
    foundIndex: integer;
begin
   if (DstList.items.count=0) then begin
      wwDebug('You must create a field with the Fields Editor before defining its links.');
      exit;
   end;

   if (DstList.itemIndex<>-1) then begin

      curField:= gridTable.fieldByName(DstList.items[DstList.itemIndex]);
      if curField.calculated then begin

         { Search gridTable for curField }
         getLookupFields(curField, databasename, tablename, fieldName,
               index, indexFields, joins, useExtension, foundIndex);

         if wwAddLookupfield(databasename, tableName, fieldname, index, indexFields,
                joins, useExtension, gridTable) then
         begin
            with wwGetLookupFields(gridTable) do begin
               if (foundIndex<0) then
               begin
                  foundIndex:= count;
                  wwGetLookupFields(gridTable).add('Dummy');
                  wwGetLookupLinks(gridTable).add('Dummy');
               end;
               strings[foundIndex]:= curField.fieldName + ';' +
                                 databasename + ';' + tableName + ';' +
                                 fieldName + ';;' + indexFields + ';' + useExtension;
               wwGetLookupLinks(gridTable).strings[foundIndex]:= joins;
               if gridTable is TwwTable then
                  TwwTable(gridTable).FreeLookupTables
               else if gridTable is TwwQuery then
                  TwwQuery(gridTable).FreeLookupTables;

               { Update FieldInfo caption }
               LookupTableCaption.caption:= tablename;
               LookupFieldCaption.caption:= fieldname;

            end;
         end
      end

   end
end;

procedure TSelFieldsForm.Button1Click(Sender: TObject);
var component: TwwCustomMaskEdit;
begin
   component:= TwwCustomMaskEdit.create(self);
   with component do begin
      component.visible:= False;
      component.parent:= self;
      with component.RegexMask do begin
         Mask:= RegexEdit.Text;
         CaseSensitive:= CaseSensitiveRegexCheckbox.checked;
      end;
      if wwPrpEdit_RegexMask(component) then
      begin
         with component.regexMask do begin
            RegexEdit.Text:= Mask;
            CaseSensitiveRegexCheckbox.checked:= CaseSensitive;
         end;
      end;

      Free;
   end

end;

procedure TSelFieldsForm.ClearLinkButtonClick(Sender: TObject);
var foundIndex: integer;
    curField: TField;
    databaseName, tableName, fieldName, index: wwSmallString;
    useExtension: char;
    indexFields: string;
    joins: string;
begin
   if (DstList.itemIndex<>-1) then begin
      curField:= gridTable.fieldByName(DstList.items[DstList.itemIndex]);
      if curField.calculated then begin
         { Search gridTable for curField }
         getLookupFields(curField, databasename, tablename, fieldName,
               index, indexFields, joins, useExtension, foundIndex);

         LookupTableCaption.caption:= '???';
         LookupFieldCaption.caption:= '???';

         if foundIndex>=0 then
         begin
            wwGetLookupFields(gridTable).delete(foundIndex);
            wwGetLookupLinks(gridTable).delete(foundIndex);
         end;

      end
   end
end;

procedure TSelFieldsForm.FormActivate(Sender: TObject);
begin
   if initialized then exit;

   if DstList.items.count>0 then begin
      if DstList.itemIndex<0 then SelectDest(0)
      else SelectDest(DstList.itemIndex);
      DstList.setFocus;
   end
   else begin
      DisplayWidth.text:= '';
      DisplayTitle.text:= '';
      GroupName.text:= '';
      ReadOnlyCB.checked:= False;
   end;

   FieldNotebook.Activepage:= TabSheetDisplay;
//   FieldTabSet.tabIndex:= FieldNotebook.pageIndex; { Synchronize tabset and notebook}
   initialized:= True;

end;

procedure TSelFieldsForm.DisplayWidthChange(Sender: TObject);
begin
   if curField=Nil then exit;
   if InSelectDest then exit;

   if UseTFields then
   begin
      if DisplayWidth.text<>'' then
         curField.DisplayWidth:= strtoint(DisplayWidth.Text)
   end;
//   else begin
   UpdateSelectedProp(GSelected, curField.FieldName, DisplayWidth.text, sptUpdateWidth);
//   end
end;

procedure TSelFieldsForm.DisplayTitleChange(Sender: TObject);
begin
   if curField=Nil then exit;
   if InSelectDest then exit;

   if UseTFields then
      curField.DisplayLabel:= DisplayTitle.text;
//   else begin
   UpdateSelectedProp(GSelected, curField.FieldName, DisplayTitle.text, sptUpdateLabel);
//   end
end;
{
procedure TSelFieldsForm.UpdateSelected(FieldName: string; val: string;
   SelectedProperty: TwwUpdateSelected);
var APos, index: integer;
    FieldWidth, DisplayLabel, ReadOnly: wwSmallString;
begin
   if wwFindSelected(GSelected, FieldName, index) then
   begin
      APos:=1;
      FieldName:= strGetToken(GSelected[index], #9, apos);
      FieldWidth:= strGetToken(GSelected[index], #9, apos);
      DisplayLabel:= strGetToken(GSelected[index], #9, apos);
      ReadOnly:= strGetToken(GSelected[index], #9, apos);
      if ReadOnly='' then ReadOnly:= 'Y';
      case SelectedProperty of
         sptUpdateWidth: FieldWidth:= val;
         sptUpdateLabel: DisplayLabel:= val;
         sptUpdateReadOnly: ReadOnly:= val;
      end;
      GSelected[index]:= FieldName + #9 + FieldWidth + #9 +
         DisplayLabel + #9 + ReadOnly;
   end;
end;
}

procedure TSelFieldsForm.FieldTabSetClick(Sender: TObject);
begin
//   FieldNotebook.pageIndex:= FieldTabSet.Tabindex;
end;

procedure TSelFieldsForm.savePictureMasks;
begin
   if curField=Nil then exit;
   wwSetPictureMask(
      wwGetPictureControl(Component, GridTable),
      curField.FieldName,
      PictureMaskEdit.text, AutoFillCheckbox.checked,
      UsePictureMask.checked, True, True, True);
   wwDataModuleChanged(GridTable);
end;

procedure TSelFieldsForm.saveRegexMasks;
begin
   if curField=Nil then exit;
   wwSetRegexMasks(Component, curField.FieldName,
      RegexEdit.text, CaseSensitiveRegexCheckbox.checked,
      RegexErrorMsgEdit.Text);
end;

procedure TSelFieldsForm.saveControlInfo;
var
   controlData : TStrings;
   paintString: string;
begin
   if curField=Nil then exit;

   controlData:= TStringList.create;

   if controlTypeEdit.text = 'RichEdit' then begin
      if RTFControlAlwaysPaints.checked then paintstring:= 'T'
      else paintstring:= 'F';
      controlData.add(DBRichEditComboList.Text + ';' + PaintString);
      setControlInfo(curField, controlTypeEdit.text, controlData);
   end
   else if controlTypeEdit.text = 'CheckBox' then begin
      controlData.add(CheckOnValue.text);
      controlData.add(CheckOffValue.text);
      setControlInfo(curField, controlTypeEdit.text, controlData);
   end
   else if controlTypeEdit.text = 'Bitmap' then begin
      controlData.add(BitmapScalingCombo.text);
      controlData.add(RasterCombo.text);
      setControlInfo(curField, controlTypeEdit.text, controlData);
   end
   else if controlTypeEdit.text = 'URL-Link' then begin
//      controlData.Add(URLAddressField.text);
      setControlInfo(curField, controlTypeEdit.text, controlData);
   end
   else if controlTypeEdit.text = 'ImageIndex' then begin
      if ShrinkToFit.checked then
         controlData.add('Shrink To Fit')
      else
         controlData.add('Original Size');
      setControlInfo(curField, controlTypeEdit.text, controlData);
   end
   else if controlTypeEdit.text = 'Field' then begin
      setControlInfo(curField, controlTypeEdit.text, controlData);
   end
   else if isWWEditControl(controlTypeEdit.text) then begin
      if ControlAlwaysPaints.checked then paintstring:= 'T'
      else paintstring:= 'F';

      controlData.add(DBLookupComboList.Text + ';' + PaintString);
      setControlInfo(curField, controlTypeEdit.text, controlData);
   end;

   controlData.free;
end;

procedure TSelFieldsForm.OKBtnClick(Sender: TObject);
var NewSelected: TStrings;
    index, i: integer;
begin
    saveControlInfo;  { Updates last changes }
    savePictureMasks;
    saveRegexMasks;

    NewSelected:= TStringList.create;
    for i:= 0 to DstList.Items.Count-1 do
    begin
       if wwFindSelected(GSelected, DstList.items[i], index) then
          NewSelected.add(GSelected[index]);
    end;
    GSelected.Assign(NewSelected);
    NewSelected.Free;
end;

procedure TSelFieldsForm.ControlTypeEditChange(Sender: TObject);
var   controlName: wwSmallString;
begin
   controlName:= controlTypeEdit.text;
   if controlName='RichEdit' then begin
      DBRichEditComboList.itemIndex:= -1;
      ControlTypeNotebook.Activepage:= 'RichEdit';
   end
   else if controlName='CheckBox' then begin
      CheckOnValue.Text:= 'Yes';
      CheckOffValue.Text:= 'No';
      ControlTypeNotebook.Activepage:= 'Checkbox';
   end
   else  if controlName='Bitmap' then begin
      BitmapScalingCombo.itemIndex:= 0;
      RasterCombo.itemIndex:= 0;
      ControlTypeNotebook.Activepage:= 'Bitmap';
   end
   else  if controlName='ImageIndex' then begin
//      BitmapScalingCombo.itemIndex:= 0;
//      RasterCombo.itemIndex:= 0;
      ControlTypeNotebook.Activepage:= 'ImageIndex';
   end

⌨️ 快捷键说明

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