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

📄 suidsgn.pas

📁 suipack ver5控件 suipack ver5控件 suipack ver5控件 suipack ver5控件 suipack ver5控件
💻 PAS
📖 第 1 页 / 共 3 页
字号:
    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 + -