📄 wwselfld.pas
字号:
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 + -