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

📄 uskinform.pas

📁 一个用Delpi写的视频聊天的SDK
💻 PAS
字号:
unit uSkinForm;

interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, extctrls,
  bsSkinData, bsfilectrl, bsSkinCtrls, bsSkinTabs, bsSkinBoxCtrls,
  BusinessSkinForm;

type
  TBaseSkinForm = class(TForm)
  private
    FSkinFileName: string;
    procedure SetSkinFileName(const Value: string);
    procedure Init(ASkinFileName: string);
  protected
    bsBusinessSkinForm1: TbsBusinessSkinForm;
    bsSkinData1: TbsSkinData;
  public
    constructor Create(Aowner: TComponent); override;
    destructor Destroy; override;
  published
    property SkinFileName: string read FSkinFileName write SetSkinFileName;
  end;

implementation

{ TBaseSkinForm }

{ TBaseSkinForm }

constructor TBaseSkinForm.Create(Aowner: TComponent);
begin
  inherited;
  bsSkinData1 := TbsSkinData.Create(Self);
  bsBusinessSkinForm1 := TbsBusinessSkinForm.Create(self);
  bsBusinessSkinForm1.SkinData := bsSkinData1;
  if self.BorderStyle = bsDialog then
    bsBusinessSkinForm1.BorderIcons := [biSystemMenu];
end;

destructor TBaseSkinForm.Destroy;
begin
  bsBusinessSkinForm1.Free;
  bsSkinData1.Free;
  inherited;
end;

procedure TBaseSkinForm.Init(ASkinFileName: string);
var
  i: integer;
  F: TComponent;
  FName: string;
begin
  bsSkinData1.LoadFromCompressedFile(ASkinFileName);

  for i := Self.ComponentCount - 1 downto 0 do
  begin
    if Self.Components[i] is TbsSkinControl then
      (Self.Components[i] as TbsSkinControl).SkinData := bsSkinData1;

    if Self.Components[i] is TbsSkinCustomEdit then
      (Self.Components[i] as TbsSkinCustomEdit).SkinData := bsSkinData1;

    if Self.Components[i] is TbsSkinMemo then
      (Self.Components[i] as TbsSkinMemo).SkinData := bsSkinData1;

    if Self.Components[i] is TbsSkinMemo2 then
      (Self.Components[i] as TbsSkinMemo2).SkinData := bsSkinData1;

    if Self.Components[i] is TbsSkinCustomListView then
      (Self.Components[i] as TbsSkinCustomListView).SkinData := bsSkinData1;

    if Self.Components[i] is TbsGraphicSkinControl then
      (Self.Components[i] as TbsGraphicSkinControl).SkinData := bsSkinData1;

    if Self.Components[i] is TbsSkinPageControl then
      (Self.Components[i] as TbsSkinPageControl).SkinData := bsSkinData1;

    ///////

    if Self.Components[i] is TLabel then
      (Self.Components[i] as TLabel).Transparent := true;
    //////////////

    {
    if Self.Components[i] is TButton then
    begin
      with TbsSkinButton.Create(Self) do
      begin
        F := Self.Components[i];
        FName := f.Name;

        OnClick := (F as TButton).OnClick;
        Caption := (F as TButton).Caption;
        Parent := (F as TButton).Parent;
        Tag := (F as TButton).Tag;

        SetBounds((F as TButton).Left - 10, (F as TButton).Top, (F as TButton).Width, (F as TButton).Height);
        SkinData := bsSkinData1;
        FreeAndNil(F);
        Name := FName;
      end;
    end;

    if Self.Components[i] is TGroupBox then
    begin
      with TbsSkinGroupBox.Create(Self) do
      begin
        F := Self.Components[i];
        FName := f.Name;
        Caption := (F as TGroupBox).Caption;

        OnClick := (F as TGroupBox).OnClick;
        Caption := (F as TGroupBox).Caption;
        Parent := (F as TGroupBox).Parent;
        Tag := (F as TGroupBox).Tag;

        SetBounds((F as TGroupBox).Left - 10, (F as TGroupBox).Top, (F as TGroupBox).Width, (F as TGroupBox).Height);
        SkinData := bsSkinData1;
        FreeAndNil(F);
        Name := FName;
      end;
    end;

    if Self.Components[i] is TPanel then
    begin
      with TbsSkinPanel.Create(Self) do
      begin
        F := Self.Components[i];
        FName := f.Name;
        Caption := (F as TPanel).Caption;

        OnClick := (F as TPanel).OnClick;
        Caption := (F as TPanel).Caption;
        Parent := (F as TPanel).Parent;
        Tag := (F as TPanel).Tag;

        SetBounds((F as TPanel).Left - 10, (F as TPanel).Top, (F as TPanel).Width, (F as TPanel).Height);
        SkinData := bsSkinData1;
        FreeAndNil(F);
        Name := FName;
      end;
    end;
    ////
    if Self.Components[i] is TEdit then
    begin
      if (Self.Components[i] as TEdit).PasswordChar = #0 then
      begin
        with TbsSkinEdit.Create(Self) do
        begin
          F := Self.Components[i];
          FName := f.Name;

          Text := (F as TEdit).Text;
          Parent := (F as TEdit).Parent;
          Tag := (F as TEdit).Tag;
          OnKeyPress := (F as TEdit).OnKeyPress;
          OnKeyDown := (F as TEdit).OnKeyDown;

          SetBounds((F as TEdit).Left - 10, (F as TEdit).Top, (F as TEdit).Width, (F as TEdit).Height);
          SkinData := bsSkinData1;
          FreeAndNil(F);
          Name := FName;
        end;
      end
      else
      begin
        with TbsSkinPasswordEdit.Create(Self) do
        begin
          F := Self.Components[i];
          FName := f.Name;

          Text := (F as TEdit).Text;
          Parent := (F as TEdit).Parent;
          Tag := (F as TEdit).Tag;
          OnKeyPress := (F as TEdit).OnKeyPress;
          OnKeyDown := (F as TEdit).OnKeyDown;

          SetBounds((F as TEdit).Left - 10, (F as TEdit).Top, (F as TEdit).Width, (F as TEdit).Height);
          SkinData := bsSkinData1;
          FreeAndNil(F);
          Name := FName;
        end;
      end;
    end;
    }
  end;
end;

procedure TBaseSkinForm.SetSkinFileName(const Value: string);
begin
  FSkinFileName := Value;
  Init(Value);
end;

end.

⌨️ 快捷键说明

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