📄 suidsgn.pas
字号:
Comp.Name := TempName2;
NewMenu.Name := TempName;
for i := 0 to Comp.Items.Count - 1 do
begin
MenuItem := Comp.Items[0];
Comp.Items.Delete(0);
NewMenu.Items.Add(MenuItem);
end;
RemoveOldControl(Comp);
end;
procedure ConvertToSUIPack(Form : TCustomForm; StrUIStyle: String; UIStyle : TsuiUIStyle);
var
Dsgn : IsuiDesigner;
i : Integer;
Ctrl : TControl;
Comp : TComponent;
suiForm : TsuiForm;
IncHeight : Integer;
FormIncHeight : Integer;
aDB: TComponent;
aFld: string;
bFld: string;
cFld: string;
begin
Dsgn := Form.Designer as IsuiDesigner;
suiForm := TsuiForm(Dsgn.CreateComponent(TsuiForm, Form, 0, 0, 0, 0));
suiForm.UIStyle := UIStyle;
suiForm.SendToBack();
FormIncHeight := suiForm.TitleBarHeight;
if Form is TForm then
TForm(Form).Height := TForm(Form).Height + FormIncHeight;
for i := 0 to Form.ComponentCount - 1 do
begin // Pre-process menus
Comp := Form.Components[i];
if Comp is TPopupMenu then
ConvertMenus(Comp as TPopupMenu, TsuiPopupMenu, StrUIStyle, Dsgn);
if Comp is TMainMenu then
ConvertMenus(Comp as TMainMenu, TsuiMainMenu, StrUIStyle, Dsgn);
end;
for i := 0 to Form.ComponentCount - 1 do
begin
if Form.Components[i] is TControl then
begin
IncHeight := FormIncHeight;
Ctrl := Form.Components[i] as TControl;
if IsHasProperty(Ctrl, 'DataSource') then
aDB := GetObjectProp(Ctrl, 'DataSource') as TComponent;
if IsHasProperty(Ctrl, 'DataField') then
aFld := GetPropValue(Ctrl, 'DataField');
if IsHasProperty(Ctrl, 'ListField') then
bFld := GetPropValue(Ctrl, 'ListField');
if IsHasProperty(Ctrl, 'KeyField') then
cFld := GetPropValue(Ctrl, 'KeyField');
if (
(Ctrl <> suiForm) and
(Ctrl.Parent = Form)
) then
Ctrl.Parent := suiForm;
if (
(Ctrl.Parent <> suiForm) and
(Ctrl.Parent <> nil)
) then
begin
if Copy(Ctrl.Parent.Name, 1, 7) = 'suitemp' then
begin
Comp := Dsgn.GetComponent(Copy(Ctrl.Parent.Name, 8, Length(Ctrl.Parent.Name)));
if (Comp = nil) or (not (Comp is TWinControl)) then
continue;
Ctrl.Parent := Comp as TWinControl;
end;
IncHeight := 0;
end;
if Ctrl is TToolBar then
begin
(Ctrl as TToolBar).Top := 800;
(Ctrl as TToolBar).Flat := true;
continue;
end;
if Ctrl is TButton then
ConvertControls(Ctrl, TsuiButton, StrUIStyle, IncHeight, Dsgn)
else if Ctrl is TCheckBox then
ConvertControls(Ctrl, TsuiCheckBox, StrUIStyle, IncHeight, Dsgn)
else if Ctrl is TRadioButton then
ConvertControls(Ctrl, TsuiRadioButton, StrUIStyle, IncHeight, Dsgn)
else if Ctrl is TProgressBar then
ConvertControls(Ctrl, TsuiProgressBar, StrUIStyle, IncHeight, Dsgn)
else if Ctrl is TEdit then
ConvertControls(Ctrl, TsuiEdit, StrUIStyle, IncHeight, Dsgn)
else if Ctrl is TMemo then
ConvertControls(Ctrl, TsuiMemo, StrUIStyle, IncHeight, Dsgn)
else if Ctrl is TListBox then
ConvertControls(Ctrl, TsuiListBox, StrUIStyle, IncHeight, Dsgn)
else if Ctrl is TComboBox then
ConvertControls(Ctrl, TsuiComboBox, StrUIStyle, IncHeight, Dsgn)
{$IFDEF SUIPACK_D6UP}
else if Ctrl is TColorBox then
ConvertControls(Ctrl, TsuiColorBox, StrUIStyle, IncHeight, Dsgn)
{$ENDIF}
else if Ctrl is TCheckListBox then
ConvertControls(Ctrl, TsuiCheckListBox, StrUIStyle, IncHeight, Dsgn)
else if Ctrl is TGroupBox then
ConvertControls(Ctrl, TsuiGroupBox, StrUIStyle, IncHeight, Dsgn)
else if Ctrl is TRadioGroup then
ConvertControls(Ctrl, TsuiRadioGroup, StrUIStyle, IncHeight, Dsgn)
else if Ctrl is TListView then
ConvertControls(Ctrl, TsuiListView, StrUIStyle, IncHeight, Dsgn)
else if Ctrl is TTreeView then
ConvertControls(Ctrl, TsuiTreeView, StrUIStyle, IncHeight, Dsgn)
else if Ctrl is TTabControl then
ConvertControls(Ctrl, TsuiTabControl, StrUIStyle, IncHeight, Dsgn)
else if Ctrl is TTabSheet then
ConvertControls(Ctrl, TsuiTabSheet, StrUIStyle, IncHeight, Dsgn)
else if Ctrl is TPageControl then
ConvertControls(Ctrl, TsuiPageControl, StrUIStyle, IncHeight, Dsgn)
else if Ctrl is TTrackBar then
ConvertControls(Ctrl, TsuiTrackBar, StrUIStyle, IncHeight, Dsgn)
else if Ctrl is TScrollBar then
ConvertControls(Ctrl, TsuiScrollBar, StrUIStyle, IncHeight, Dsgn)
else if Ctrl is TStringGrid then
ConvertControls(Ctrl, TsuiStringGrid, StrUIStyle, IncHeight, Dsgn)
else if Ctrl is TDrawGrid then
ConvertControls(Ctrl, TsuiDrawGrid, StrUIStyle, IncHeight, Dsgn)
else if Ctrl is TStatusBar then
ConvertControls(Ctrl, TsuiStatusBar, StrUIStyle, IncHeight, Dsgn)
else if Ctrl is TMaskEdit then
ConvertControls(Ctrl, TsuiMaskEdit, StrUIStyle, IncHeight, Dsgn)
else if Ctrl is TDriveComboBox then
ConvertControls(Ctrl, TsuiDriveComboBox, StrUIStyle, IncHeight, Dsgn)
{$IFDEF DB}
else if Ctrl is TDBEdit then
ConvertControls(Ctrl, TsuiDBEdit, StrUIStyle, IncHeight, Dsgn)
else if Ctrl is TDBMemo then
ConvertControls(Ctrl, TsuiDBMemo, StrUIStyle, IncHeight, Dsgn)
else if Ctrl is TDBImage then
ConvertControls(Ctrl, TsuiDBIMage, StrUIStyle, IncHeight, Dsgn)
else if Ctrl is TDBListBox then
ConvertControls(Ctrl, TsuiDBListBox, StrUIStyle, IncHeight, Dsgn)
else if Ctrl is TDBComboBox then
ConvertControls(Ctrl, TsuiDBComboBox, StrUIStyle, IncHeight, Dsgn)
else if Ctrl is TDBCheckBox then
ConvertControls(Ctrl, TsuiDBCheckBox, StrUIStyle, IncHeight, Dsgn)
else if Ctrl is TDBRadioGroup then
ConvertControls(Ctrl, TsuiDBRadioGroup, StrUIStyle, IncHeight, Dsgn)
else if Ctrl is TDBNavigator then
ConvertControls(Ctrl, TsuiDBNavigator, StrUIStyle, IncHeight, Dsgn)
else if Ctrl is TDBLookupListBox then
ConvertControls(Ctrl, TsuiDBLookupListBox, StrUIStyle, IncHeight, Dsgn)
else if Ctrl is TDBLookupComboBox then
ConvertControls(Ctrl, TsuiDBLookupComboBox, StrUIStyle, IncHeight, Dsgn)
else if Ctrl is TDBGrid then
ConvertControls(Ctrl, TsuiDBGrid, StrUIStyle, IncHeight, Dsgn)
{$ENDIF}
else
begin
if IsHasProperty(Ctrl, 'Top') then
SetOrdProp(Ctrl, 'Top', GetOrdProp(Ctrl, 'Top') + IncHeight);
end;
if IsHasProperty(Ctrl, 'DataSource') then
SetObjectProp(Ctrl, 'DataSource', aDB);
if IsHasProperty(Ctrl, 'DataField') then
SetPropValue(Ctrl, 'DataField', aFld);
if IsHasProperty(Ctrl, 'ListField') then
SetPropValue(Ctrl, 'ListField', bFld);
if IsHasProperty(Ctrl, 'KeyField') then
SetPropValue(Ctrl, 'KeyField', cFld);
end
end;
RemoveOldControl(nil, true);
end;
Procedure UnConvertMenus(Comp : TMenu; Cls : TMenuClass; Dsgn : IsuiDesigner);
var
NewMenu : TMenu;
TempName : String;
TempName2 : String;
i : Integer;
MenuItem : TMenuItem;
begin
NewMenu := Dsgn.CreateComponent(Cls, Comp.Owner, 0, 0, 0, 0) as TMenu;
AssignProps(NewMenu, Comp, Dsgn);
TempName := Comp.Name;
TempName2 := 'suitemp' + TempName;
if Dsgn.GetComponent(TempName2) <> nil then
TempName2 := TempName2 + '1';
Comp.Name := TempName2;
NewMenu.Name := TempName;
for i := 0 to Comp.Items.Count - 1 do
begin
MenuItem := Comp.Items[0];
Comp.Items.Delete(0);
NewMenu.Items.Add(MenuItem);
NewMenu.OwnerDraw := false;
end;
RemoveOldControl(Comp);
end;
Procedure UnConvertControls(var Ctrl : TControl; Cls : TControlClass; IncHeight : Integer; Dsgn : IsuiDesigner);
var
NewCtrl : TControl;
TempName : String;
TempName2 : String;
Form : TCustomForm;
begin
try
NewCtrl := Dsgn.CreateComponent(Cls, Ctrl.Parent, Ctrl.Left, Ctrl.Top - IncHeight, Ctrl.Width, Ctrl.Height) as TControl;
if NewCtrl is TTabSheet then
begin
NewCtrl.Parent := Ctrl.Parent;
(NewCtrl as TTabSheet).PageControl := Ctrl.Parent as TPageControl;
end;
except
Form := GetParentForm(Ctrl);
NewCtrl := Dsgn.CreateComponent(Cls, Form, Ctrl.Left, Ctrl.Top - IncHeight, Ctrl.Width, Ctrl.Height) as TControl;
NewCtrl.Parent := Ctrl.Parent;
NewCtrl.SetBounds(Ctrl.Left, Ctrl.Top, Ctrl.Width, Ctrl.Height);
end;
AssignProps(NewCtrl, Ctrl, Dsgn);
TempName := Ctrl.Name;
TempName2 := 'suitemp' + TempName;
if Dsgn.GetComponent(TempName2) <> nil then
TempName2 := TempName2 + '1';
Ctrl.Name := TempName2;
NewCtrl.Name := TempName;
if NewCtrl is TTabSheet then
begin
(NewCtrl as TTabSheet).PageIndex := (NewCtrl as TTabSheet).PageControl.PageCount - 1;
end;
RemoveOldControl(Ctrl);
Ctrl := NewCtrl;
end;
procedure ConvertToVCL(Form : TCustomForm);
var
Dsgn : IsuiDesigner;
i : Integer;
Ctrl : TControl;
Comp : TComponent;
suiForm : TsuiForm;
FormIncHeight : Integer;
IncHeight : Integer;
aDB: TComponent;
aFld: string;
begin
Dsgn := Form.Designer as IsuiDesigner;
FormIncHeight := 0;
suiForm := nil;
g_SUIPackConverting := true;
for i := 0 to Form.ComponentCount - 1 do
begin // Pre-process menus and TsuiForm
Comp := Form.Components[i];
if Comp is TsuiPopupMenu then
UnConvertMenus(Comp as TsuiPopupMenu, TPopupMenu, Dsgn);
if Comp is TsuiMainMenu then
UnConvertMenus(Comp as TsuiMainMenu, TMainMenu, Dsgn);
if Comp is TsuiForm then
begin
suiForm := Comp as TsuiForm;
FormIncHeight := suiForm.TitleBarHeight;
end;
end;
g_SUIPackConverting := false;
// if Form is TForm then
// TForm(Form).Height := TForm(Form).Height - FormIncHeight;
for i := 0 to Form.ComponentCount - 1 do
begin
if Form.Components[i] is TControl then
begin
IncHeight := FormIncHeight;
Ctrl := Form.Components[i] as TControl;
if IsHasProperty(Ctrl, 'DataSource') then
aDB := GetObjectProp(Ctrl, 'DataSource') as TComponent;
if IsHasProperty(Ctrl, 'DataField') then
aFld := GetPropValue(Ctrl, 'DataField');
if suiForm <> nil then
begin
if (
(Ctrl <> suiForm) and
(Ctrl.Parent = suiForm)
) then
Ctrl.Parent := Form;
end;
if (
(Ctrl.Parent <> suiForm) and
(Ctrl.Parent <> Form) and
(Ctrl.Parent <> nil)
) then
begin
if Copy(Ctrl.Parent.Name, 1, 7) = 'suitemp' then
begin
Comp := Dsgn.GetComponent(Copy(Ctrl.Parent.Name, 8, Length(Ctrl.Parent.Name)));
if (Comp = nil) or (not (Comp is TWinControl)) then
continue;
Ctrl.Parent := Comp as TWinControl;
end;
IncHeight := 0;
end;
if Ctrl.ClassNameIs('TsuiButton') then
UnConvertControls(Ctrl, TButton, IncHeight, Dsgn)
else if Ctrl.ClassNameIs('TsuiCheckBox') then
UnConvertControls(Ctrl, TCheckBox, IncHeight, Dsgn)
else if Ctrl.ClassNameIs('TsuiRadioButton') then
UnConvertControls(Ctrl, TRadioButton, IncHeight, Dsgn)
else if Ctrl.ClassNameIs('TsuiProgressBar') then
UnConvertControls(Ctrl, TProgressBar, IncHeight, Dsgn)
else if Ctrl.ClassNameIs('TsuiEdit') then
UnConvertControls(Ctrl, TEdit, IncHeight, Dsgn)
else if Ctrl.ClassNameIs('TsuiMemo') then
UnConvertControls(Ctrl, TMemo, IncHeight, Dsgn)
else if Ctrl.ClassNameIs('TsuiListBox') then
UnConvertControls(Ctrl, TListBox, IncHeight, Dsgn)
else if Ctrl.ClassNameIs('TsuiComboBox') then
UnConvertControls(Ctrl, TComboBox, IncHeight, Dsgn)
{$IFDEF SUIPACK_D6UP}
else if Ctrl.ClassNameIs('TsuiColorBox') then
UnConvertControls(Ctrl, TColorBox, IncHeight, Dsgn)
{$ENDIF}
else if Ctrl.ClassNameIs('TsuiCheckListBox') then
UnConvertControls(Ctrl, TCheckListBox, IncHeight, Dsgn)
else if Ctrl.ClassNameIs('TsuiGroupBox') then
UnConvertControls(Ctrl, TGroupBox, IncHeight, Dsgn)
else if Ctrl.ClassNameIs('TsuiRadioGroup') then
UnConvertControls(Ctrl, TRadioGroup, IncHeight, Dsgn)
else if Ctrl.ClassNameIs('TsuiListView') then
UnConvertControls(Ctrl, TListView, IncHeight, Dsgn)
else if Ctrl.ClassNameIs('TsuiTreeView') then
UnConvertControls(Ctrl, TTreeView, IncHeight, Dsgn)
else if Ctrl.ClassNameIs('TsuiTabControl') then
UnConvertControls(Ctrl, TTabControl, IncHeight, Dsgn)
else if Ctrl.ClassNameIs('TsuiTabSheet') then
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -