📄 customunit.pas
字号:
End;
FParentControl:= Parent;
FSkinData:= bsSkinData;
Result:= True;
end;
//------------------------------------------------- Writen By : AJ -----------//
//---------- 与CreateComponentDynamic 相似, 待整理 ---------------------------//
function TCustomClass.AddComponentDynamic(CoType:Integer;DesignParent:TWincontrol;ExecuteParent:String;DS_Component: TADODataSet;bsSkinData: TbsSkinData): Boolean;
Var
Top, Left, Width, Height, MaxNumber : Integer;
Name1, Name2, NewName, EditTitle : String;
Sql : String;
begin
Sql:= 'Select * From Component_tbl Where Number = (select Max(Number) from component_tbl Where Type = ';
Sql:= Sql + IntToStr(COType) + ' )' + ' And Type = ' + IntToStr(COType);
With FDataSet do begin
Active:= False;
CommandText:= Sql;
Active:= True;
MaxNumber:= FieldByName('Number').AsInteger;
Top := FieldByName('PTop').AsInteger;
Left := FieldByName('PLeft').AsInteger;
Width := FieldByName('PWidth').AsInteger;
Height:= FieldByName('PHeight').AsInteger;
Top:= FParentControl.Top + Top + Height + 20;
Left:= FParentControl.Left + Left;
Width:= Width;
Height:= Height;
//bsSkinEdit.SkinData:= bsSkinData;
Name1:= FieldByName('ComponentName').AsString;
if Eof then begin
Top:= FParentControl.Top + 20 + Height + 20;
Left:= FParentControl.Left + 20;
Width:= 120;
Height:= 22;
Case COType of
1:Name1:= 'Edit001';
2:Name1:= 'Label001';
3:Name1:= 'Combo001';
4:Name1:= 'Memo001';
End;
end;
Name2:= Copy(Name1, 0, Length(Name1) - 3);
NewName:= Name2 + NewName + PadingStr(IntToStr(MaxNumber+1), 3);
Case COType of
1:CreateLabel(NewName, NewName, DesignParent, Top, Left, Width, Height, bsSkinData);
2:CreateBSEdit(NewName, NewName, '', DesignParent, Top, Left, Width, Height, bsSkinData);
3:CreateComboBox(NewName, NewName, '', DesignParent, Top, Left, Width, Height, bsSkinData);
4:CreateMemo(NewName, NewName, '',DesignParent, Top, Left, Width, Height, bsSkinData);
End;
Append;
FieldByName('ComponentName').AsString:= NewName;
FieldByName('Title').AsString:= NewName;
FieldByName('Number').AsInteger:= MaxNumber+1;
FieldByName('Type').AsInteger:= CoType;
FieldByName('Belong').AsString:= 'Form_Receive';
FieldByName('DesignParent').AsString:= DesignParent.Name;
FieldByName('ExecuteParent').AsString:= ExecuteParent;
FieldByName('Fields').AsString:= '';
FieldByName('PTop').AsInteger:= Top;
FieldByName('PLeft').AsInteger:= Left;
FieldByName('PWidth').AsInteger:= Width;
FieldByName('PHeight').AsInteger:= Height;
Try
Post
Except
on E : Exception do
//MessageDlg('Ignoring Exception:'+E.Message,mtInformation,[mbOK],0);
End;
FComponentField.Add(FieldByName('Fields').AsString);
Inc(FComponentCount);
End;
CustomDragClass.addControl(FComponentName.Items[FComponentCount - 1]);
end;
//------------------------------------------------- Writen By : AJ -----------//
procedure TCustomClass.DeleteSelectComponent;
Var
i : Integer;
begin
GetSelectControl;
FTemControl:= TWinControl(FComponentName.Items[FSelectControlIndex]);
With FDataSet do begin
Active:= False;
CommandText:= 'Select * From Component_tbl Where ComponentName = '''+FTemControl.Name+'''';
Active:= True;
//Locate('ComponentName', FTemControl.Name, [loCaseInsensitive]);
Delete;
end;
FTemControl.Free;
FComponentName.Delete(FSelectControlIndex);
Dec(FComponentCount);
CustomDragClass.DeleteControl(FSelectControlIndex);
end;
//------------------------------------------------- Writen By : AJ -----------//
function TCustomClass.ShowFieldDataByDS(DS_table: TADODataSet;ExecuteParent:String): Boolean;
Var
i : Integer;
FieldName : String;
begin
for i:= 0 to FComponentCount - 1 do begin
FTemControl:= TWinControl(FComponentName.Items[i]);
if FTemControl.Parent.Name = ExecuteParent then
Case FTemControl.Tag of
1:begin
//----------------------------------------------
end;
2:begin
bsSkinEdit:= TbsSkinDBEdit(FComponentName.Items[i]);
FieldName:= FComponentField.Strings[i];
if FieldName <> '' then
bsSkinEdit.Text:= DS_table.FieldByName(FieldName).AsString;
end;
3:begin
bsSkinDBComboBox:= TbsSkinDBComboBox(FComponentName.Items[i]);
FieldName:= FComponentField.Strings[i];
if FieldName <> '' then
bsSkinDBComboBox.Text:= DS_table.FieldByName(FieldName).AsString;
end;
4:begin
bsSkinDBMemo:= TbsSkinDBMemo(FComponentName.Items[i]);
FieldName:= FComponentField.Strings[i];
if FieldName <> '' then
bsSkinDBMemo.Text:= DS_table.FieldByName(FieldName).AsString;
end;
End;
end;
end;
//------------------------------------------------- Writen By : AJ -----------//
function TCustomClass.ShowDataByXML(CurrentNode: IXMLNode;ExecuteParent:String): Boolean;
Var
i : Integer;
FieldName : String;
begin
for i:= 0 to FComponentCount - 1 do begin
FTemControl:= TWinControl(FComponentName.Items[i]);
if FTemControl.Parent.Name = ExecuteParent then
Case FTemControl.Tag of
1:begin
//----------------------------------------------
end;
2:begin
bsSkinEdit:= TbsSkinDBEdit(FComponentName.Items[i]);
FieldName:= FComponentField.Strings[i];
if FieldName <> '' then
bsSkinEdit.Text:= CurrentNode.ChildNodes[FieldName].Text;
end;
3:begin
bsSkinDBComboBox:= TbsSkinDBComboBox(FComponentName.Items[i]);
FieldName:= FComponentField.Strings[i];
if FieldName <> '' then
bsSkinDBComboBox.Text:= CurrentNode.ChildNodes[FieldName].Text;
end;
End;
end;
end;
//------------------------------------------------- Writen By : AJ -----------//
//----- 用动态控件修改数据集数据 Action:= 1 为Append :=2 为Edit -----------------//
function TCustomClass.EditFieldDataByDS(DS_table: TADODataSet;Action : Integer;ParentCon:TWincontrol): Boolean;
Var
i : Integer;
FieldName : String;
begin
//FComponentField.SaveToFile('E:\FComponentField.txt');
With DS_table do begin
Case Action of
1:Append;
2:Edit;
End;
for i:= 0 to FComponentCount - 1 do begin
FieldName:= FComponentField.Strings[i];
if (FieldName <> '') and (TWincontrol(FComponentName[i]).Parent.Name = ParentCon.Name) then begin
Case TWinControl(FComponentName.Items[i]).Tag of
2:begin
bsSkinEdit:= TbsSkinDBEdit(FComponentName.Items[i]);
FieldByName(FieldName).AsString:= bsSkinEdit.Text;
end;
3:begin
bsSkinDBComboBox:= TbsSkinDBComboBox(FComponentName.Items[i]);
FieldByName(FieldName).AsString:= bsSkinDBComboBox.Text;
end;
4:begin
bsSkinDBMemo:= TbsSkinDBMemo(FComponentName.Items[i]);
FieldByName(FieldName).AsString:= bsSkinDBMemo.Text;
end;
End;
end;
end;
//--------- 记录录入者 ---------------------------------//
//FieldByName('HLSQLRR').AsString:= gs_LoginerInfo.UserName;
Try
Post
Except
on E : Exception do
//MessageDlg('Ignoring Exception:'+E.Message,mtInformation,[mbOK],0);
End;
End;
end;
//------------------------------------------------- Writen By : AJ -----------//
function TCustomClass.EditFieldDataByXML(CurrentNode: IXMLNode;ExecuteParent: String): Boolean;
Var
i : Integer;
FieldName : String;
begin
for i:= 0 to FComponentCount - 1 do begin
FieldName:= FComponentField.Strings[i];
if (FieldName <> '') and (TWincontrol(FComponentName[i]).Parent.Name = ExecuteParent) then begin
Case TWinControl(FComponentName.Items[i]).Tag of
2:begin
bsSkinEdit:= TbsSkinDBEdit(FComponentName.Items[i]);
CurrentNode.ChildNodes[FieldName].Text:= bsSkinEdit.Text;
end;
3:begin
bsSkinDBComboBox:= TbsSkinDBComboBox(FComponentName.Items[i]);
CurrentNode.ChildNodes[FieldName].Text:= bsSkinDBComboBox.Text;
end;
End;
end;
end;
end;
//------------------------------------------------- Writen By : AJ -----------//
procedure TCustomClass.SetCustomDrag(CanDrag : Boolean);
var
i : Integer;
begin
if CanDrag then begin
if not Assigned(CustomDragClass) then begin
CustomDragClass:=TDragClass.create(FParentControl);
for i:= 0 to FComponentCount - 1 do
CustomDragClass.addControl(FComponentName.Items[i]);
end;
end else begin
CustomDragClass.Free;
end;
end;
//------------------------------------------------- Writen By : AJ -----------//
function TCustomClass.GetSelectControl: TControl;
begin
if not Assigned(CustomDragClass) then Exit;
FSelectControlIndex:= CustomDragClass.SelectControlInex;
FSelectControl:= TbsSkinEdit(FComponentName.Items[FSelectControlIndex]);
Result:= FSelectControl;
end;
//------------------------------------------------- Writen By : AJ -----------//
procedure TCustomClass.SetPointVisible(Visibled: Boolean);
begin
CustomDragClass.SetPointVisible(Visibled);
end;
//------------------------------------------------- Writen By : AJ -----------//
function TCustomClass.PadingStr(str: String; Len: Integer): String;
Const
sPad = '00000000';
Var
iLen, i : Integer;
begin
iLen:= Length(str);
i:= Len-iLen; //---- i >0
Result:= Copy(sPad,1,i)+str;
end;
//------------------------------------------------- Writen By : AJ -----------//
function TCustomClass.SaveComponent: Boolean;
Var
i, j : Integer;
Control : TControl;
ItemStr : String;
begin
With FDataSet do begin
Active:= False;
//CommandText:= 'Select * From Component_tbl Where ComponentName = '''+ TbsSkinEdit(FSelectControl).Name + '''';
CommandText:= 'Select * From Component_tbl';
Active:= True;
for i:= 0 to FComponentCount - 1 do begin
Control:= TControl(FComponentName.Items[i]);
Case Control.Tag of
1:begin
DSLabel:= TLabel(FComponentName.Items[i]);
Locate('ComponentName', DSLabel.Name, [loCaseInsensitive]);
Edit;
FieldbyName('PTop').AsInteger:= DSLabel.Top;
FieldbyName('PLeft').AsInteger:= DSLabel.Left;
FieldbyName('PWidth').AsInteger:= DSLabel.Width;
FieldbyName('PHeight').AsInteger:= DSLabel.Height;
FieldbyName('Title').AsString:= DSLabel.Caption;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -