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

📄 mainunit.pas

📁 I mComputermaster programmisDelphi+pascal
💻 PAS
📖 第 1 页 / 共 2 页
字号:
  SkinsListBox.Clear;
  for i := 0 to sl.Count - 1 do begin
    SkinsListBox.Items.Add(sl[i]);
  end;
  SkinsListBox.Items.EndUpdate;
  // If no available skins...
  if SkinsListBox.Items.Count < 1 then begin
    SkinsListBox.Items.Add('No skins available');
  end;
  FreeAndNil(sl);

  // Menu update
  Buildinskins.Clear;
  // Build-in skins list
  for i := 0 to sSkinManager1.InternalSkins.Count - 1 do begin
    mi := TMenuItem.Create(Application);
    mi.Caption := sSkinManager1.InternalSkins[i].Name;
    if mi.Caption = sSkinManager1.SkinName then mi.Checked := True;
    mi.OnClick := SkinMenuClick;
    mi.RadioItem := True;
    Buildinskins.Add(mi);
  end;
  // External skins list
  Externalskins.Clear;
  sl := TStringList.Create;
  sSkinManager1.GetExternalSkinNames(sl);
  if sl.Count > 0 then begin
    sl.Sort;
    for i := 0 to sl.Count - 1 do begin
      mi := TMenuItem.Create(Application);
      mi.Caption := sl[i];
      if mi.Caption = sSkinManager1.SkinName then mi.Checked := True;
      mi.OnClick := SkinMenuClick;
      mi.RadioItem := True;
      if (i <> 0) and (i mod 20 = 0) then mi.Break := mbBreak;
      Externalskins.Add(mi);
    end;
  end;
  FreeAndNil(sl);
end;

procedure TMainForm.sSkinManager1BeforeChange(Sender: TObject);
begin
  // Reset color options to 0
  sLabel1.Caption := '0';
  sLabel2.Caption := sLabel1.Caption;
  sSkinManager1.FHueOffset := 0;
  sSkinManager1.FSaturation := sSkinManager1.FHueOffset;
  sTrackBar1.Position := sSkinManager1.FHueOffset;
  sTrackBar2.Position := sSkinManager1.FSaturation;
end;

procedure TMainForm.sSkinManager1GetMenuExtraLineData(FirstItem: TMenuItem; var SkinSection, Caption: String; var Glyph: TBitmap; var LineVisible: Boolean);
  procedure PrepareGlyph;
  begin
    Glyph := TBitmap.Create;
    // Prepare transparent background
    Glyph.Canvas.Brush.Color := clFuchsia;
    Glyph.Canvas.FillRect(Rect(0, 0, Glyph.Width, Glyph.Height));
    Glyph.Transparent := True;
    // Receiving from imagelist
    ImageList24.DrawingStyle := dsTransparent;
    ImageList24.GetBitmap(12, Glyph);
  end;
begin
  // If item is a first subitem of 'Available skins' (in system menu)
  if (sSkinProvider1.SystemMenu.Items[0].Name = s_SkinSelectItemName) and
       (sSkinProvider1.SystemMenu.Items[0].Count > 8) and // Height of popup-menu must be higher then extra-line width...
         (FirstItem = sSkinProvider1.SystemMenu.Items[0].Items[0]) then begin
    LineVisible := True; // External line available
    Caption := sSkinProvider1.SystemMenu.Items[0].Caption;
    PrepareGlyph;
  end
  else if (Externalskins.Count > 8) and (FirstItem = Externalskins.Items[0]) then begin
    LineVisible := True; // External line available
    Caption := Externalskins.Caption;
    PrepareGlyph;
  end
  else if (FirstItem = PopupMenu1.Items[0]) then begin
    LineVisible := True; // External line available
    Caption := 'Managing';
  end
  else LineVisible := False;
end;

procedure TMainForm.ActionSkinnedExecute(Sender: TObject);
begin
  ActionSkinned.Checked := not ActionSkinned.Checked;
  AvailableSkinsMenu.Enabled := ActionSkinned.Checked;
  sSkinManager1.Active := ActionSkinned.Checked;
  SkinsDirectoryEdit.Enabled := ActionSkinned.Checked;
  SkinsListBox.Enabled := ActionSkinned.Checked;
  sTrackBar1.Enabled := ActionSkinned.Checked;
  sTrackBar2.Enabled := ActionSkinned.Checked;
end;

procedure TMainForm.ActionHintsDisableExecute(Sender: TObject);
begin
  if not ActionHintsDisable.Checked then begin
    ActionHintsDisable.Checked := True;
    ActionHintsCustom.Checked := False;
    ActionHintsSkinned.Checked := False;
    ActionHintsStd.Checked := False;
    ShowHint := False;
    sAlphaHints1.Active := not ActionHintsStd.Checked;
    if CurrentFrame is TFrameHints then TFrameHints(CurrentFrame).UpdateStates
  end;
end;

procedure TMainForm.ActionEnabledExecute(Sender: TObject);
  procedure EnableControl(Control : TWinControl; Value : boolean);
  var
    i : integer;
  begin
    for i := 0 to Control.ControlCount - 1 do begin
      if (Control.Controls[i].Tag = 5) then TControl(Control.Controls[i]).Enabled := Value;
      if (Control.Controls[i] is TWinControl) then EnableControl(TWinControl(Control.Controls[i]), Value);
    end;
  end;
begin
  ActionEnabled.Checked := not ActionEnabled.Checked;
  EnableControl(Self, ActionEnabled.Checked);
end;

procedure TMainForm.ActionCloseExecute(Sender: TObject); begin Close end;

procedure TMainForm.ActionOverViewExecute(Sender: TObject);
begin
  if Assigned(CurrentFrame) then OldFrame := CurrentFrame;
  CurrentFrame := TFrameAbout.Create(MainForm);
  MainForm.UpdateFrame;
  ActionOverView.Enabled := False;
  sSkinProvider1.RepaintMenu;
end;

procedure TMainForm.ActionAnimationExecute(Sender: TObject);
begin
  Animated := not ActionAnimation.Checked; // Saving option in variable
  ActionAnimation.Checked := Animated;
  if Animated then begin
    sSpeedButton1.Caption := 'Stop'#13#10'animation';
    sSpeedButton1.ImageIndex := 0;
  end
  else begin
    sSpeedButton1.Caption := 'Allow'#13#10'animation';
    sSpeedButton1.ImageIndex := 1;
  end;
  sSkinManager1.AnimEffects.FormShow.Time := integer(Animated) * 70;
  sSkinManager1.AnimEffects.DialogShow.Time := integer(Animated) * 100;
  sSkinManager1.AnimEffects.PageChange.Time := integer(Animated) * 100;
  sSkinManager1.AnimEffects.SkinChanging.Time := integer(Animated) * 100;
  if Animated
    then sSkinManager1.AnimEffects.Buttons.Events := [beMouseEnter, beMouseLeave, beMouseDown, beMouseUp]
    else sSkinManager1.AnimEffects.Buttons.Events := [];
  sFrameLookBar1.Animation := Animated;
end;

procedure TMainForm.FormCreate(Sender: TObject);
const
  acBeta = ' beta';
var
  l, t : integer;
  s : string;
begin
  IniName := ExtractFilePath(Application.ExeName) + 'ASkinDemo.ini';
  if not acDirExists(sSkinManager1.SkinDirectory) then sSkinManager1.SkinDirectory := ExtractFilePath(Application.ExeName) + 'Skins';

  if (ParamCount > 0) and (ParamStr(1) = '/edit') then begin // if called from SkinEditor
    PreviewMode := True;
    ActionAnimation.Execute;
    // If demo is used in SkinEditor as preview application
    s := sSkinManager1.Version;
//    l := pos(acBeta, s);
//    if l > 0 then Delete(s, l, Length(acBeta));
    Caption := sPreviewCaption + ' v' + s;

    sSkinManager1.SkinDirectory := ReadRegString(HKEY_CURRENT_USER, RegSection, 'SourcesPath');
    sSkinManager1.SkinName      := ReadRegString(HKEY_CURRENT_USER, RegSection, 'SkinName');

    UnPackedFirst := True;
  end
  else Caption := Caption + ' v' + sSkinManager1.Version;

  // Restore of form position
  t := sStoreUtils.ReadIniInteger('Demo', 'Top', -1, IniName);
  l := sStoreUtils.ReadIniInteger('Demo', 'Left', -1, IniName);
  if t <> -1 then begin
    Top := t;
    Position := poDesigned;
  end;
  if l <> -1 then begin
    Left := l;
    Position := poDesigned;
  end;
end;

procedure TMainForm.sSkinProvider1TitleButtons0MouseUp(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  sMagnifier1.Execute
end;

procedure TMainForm.ActionHintsSkinnedExecute(Sender: TObject);
begin
  if not ActionHintsSkinned.Checked then begin
    ActionHintsSkinned.Checked := True;
    ActionHintsCustom.Checked := False;
    ActionHintsDisable.Checked := False;
    ActionHintsStd.Checked := False;
    sAlphaHints1.UseSkinData := True;
    ShowHint := True;
    sAlphaHints1.Active := not ActionHintsStd.Checked;
    if CurrentFrame is TFrameHints then TFrameHints(CurrentFrame).UpdateStates
  end;
end;

procedure TMainForm.ActionHintsCustomExecute(Sender: TObject);
begin
  if not ActionHintsCustom.Checked then begin
    ActionHintsCustom.Checked := True;
    ActionHintsSkinned.Checked := False;
    ActionHintsDisable.Checked := False;
    ActionHintsStd.Checked := False;
    sAlphaHints1.UseSkinData := False;
    ShowHint := True;
    sAlphaHints1.Active := not ActionHintsStd.Checked;
    if CurrentFrame is TFrameHints then TFrameHints(CurrentFrame).UpdateStates
  end;
end;

procedure TMainForm.sLabelFX1MouseEnter(Sender: TObject);
begin
  // Switching label to unskinned mode
  sLabelFX1.Kind.Color := clRed;
  sLabelFX1.Kind.KindType := ktCustom;
  sLabelFX1.Font.Style := sLabelFX1.Font.Style + [fsUnderLine]
end;

procedure TMainForm.sLabelFX1MouseLeave(Sender: TObject);
begin
  // Switching label to skinned mode
  sLabelFX1.SetBounds(SkinsPanel.Left + 10, sFrameLookBar1.BoundsRect.Bottom - sLabelFX1.Height + 2, sLabelFX1.Width, sLabelFX1.Height);
  sLabelFX1.Font.Style := sLabelFX1.Font.Style - [fsUnderLine];
  sLabelFX1.Kind.KindType := ktSkin;
end;

procedure TMainForm.sLabelFX1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  if (Button = mbLeft) and PtInRect(Rect(0, 0, sLabelFX1.Width, sLabelFX1.Height), Point(x, y)) then begin
    ShellExecute(Application.Handle, 'open', PChar('http://www.alphaskins.com'), nil, nil, SW_SHOWNORMAL);
    sLabelFX1.Left := SkinsPanel.Left + 10;
    sLabelFX1.Top := sFrameLookBar1.BoundsRect.Bottom - sLabelFX1.Height + 2;
  end;
end;

procedure TMainForm.sLabelFX1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  sLabelFX1.Left := SkinsPanel.Left + 11;
  sLabelFX1.Top := sFrameLookBar1.BoundsRect.Bottom - sLabelFX1.Height + 3;
end;

procedure TMainForm.sTrackBar2MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  if not aSkinChanging and (sSkinManager1.Saturation <> sTrackBar2.Position) then // If not in skin changing (global variable from AC package used)
    sSkinManager1.Saturation := sTrackBar2.Position;
end;

procedure TMainForm.OpenMagnifier1Click(Sender: TObject);
begin
  sMagnifier1.Execute
end;

procedure TMainForm.sHintManager1ShowHint(var HintStr: String; var CanShow: Boolean; var HintInfo: THintInfo; var Frame: TFrame);
var
  SkinIndex : integer;
begin
  // Hints can use some Html tags if sHintManager1.HTMLMode = True
  HintStr := 'Class name = <b>' + HintInfo.HintControl.ClassName + '</b><br>Component name = ' + HintInfo.HintControl.Name;

  SkinIndex := SendAMessage(HintInfo.HintControl, AC_GETSKININDEX) - 1;
  if SkinIndex >= 0 then begin
    HintStr := HintStr + '<br>' + 'SkinData.SkinSection = <b>' + sSkinManager1.gd[SkinIndex].ClassName + '<b>';
  end;
end;

procedure TMainForm.miOpenDialog1Click(Sender: TObject);
begin
  OpenDialog1.Execute
end;

procedure TMainForm.miSaveDialog1Click(Sender: TObject);
begin
  SaveDialog1.Execute
end;

procedure TMainForm.miOpenPictureDialog1Click(Sender: TObject);
begin
  OpenPictureDialog2.Execute
end;

procedure TMainForm.miSavePictureDialog1Click(Sender: TObject);
begin
  SavePictureDialog1.Execute
end;

procedure TMainForm.miFontDialog1Click(Sender: TObject);
begin
  FontDialog1.Execute
end;

procedure TMainForm.miColorDialog1Click(Sender: TObject);
begin
  ColorDialog1.Execute
end;

procedure TMainForm.miPrintDialog1Click(Sender: TObject);
begin
  PrintDialog1.Execute
end;
                                     
procedure TMainForm.miPrinterSetupDialog1Click(Sender: TObject);
begin
  PrinterSetupDialog1.Execute
end;

procedure TMainForm.miFindDialog1Click(Sender: TObject);
begin
  FindDialog1.Execute
end;

procedure TMainForm.miReplaceDialog1Click(Sender: TObject);
begin
  ReplaceDialog1.Execute
end;

procedure TMainForm.SelectSkin1Click(Sender: TObject);
var
  s, sDir : string;
begin
  sDir := sSkinManager1.SkinDirectory;
  s := sSkinManager1.SkinName;
  if SelectSkin(s, sDir) then begin
    SkinsDirectoryEdit.Text := sDir;
    sSkinManager1.SkinName := s;
  end;
end;

procedure TMainForm.miAlphaColorDialog1Click(Sender: TObject);
begin
  sColorDialog1.Execute
end;

procedure TMainForm.sMagnifier1DblClick(Sender: TObject);
begin
  sMagnifier1.Hide
end;

procedure TMainForm.ActionCloseFormExecute(Sender: TObject);
begin
  Close
end;

procedure TMainForm.sTrackBar1Change(Sender: TObject);
var
  b : boolean;
begin
  if not aSkinChanging and (sSkinManager1.HueOffset <> sTrackBar1.Position) then begin // If not in skin changing (global variable from AC package used)
    b := sSkinManager1.AnimEffects.SkinChanging.Active;
    sLabel1.Caption := IntToStr(sTrackBar1.Position);
    sSkinManager1.AnimEffects.SkinChanging.Active := False;
    sSkinManager1.HueOffset := sTrackBar1.Position;
    sSkinManager1.AnimEffects.SkinChanging.Active := b;
  end;
end;

procedure TMainForm.sTrackBar2Change(Sender: TObject);
var
  b : boolean;
begin
  if not aSkinChanging and (sSkinManager1.Saturation <> sTrackBar2.Position) then begin // If not in skin changing (global variable from AC package used)
    b := sSkinManager1.AnimEffects.SkinChanging.Active;
    sLabel2.Caption := IntToStr(sTrackBar2.Position);
    sSkinManager1.AnimEffects.SkinChanging.Active := False;
    sSkinManager1.Saturation := sTrackBar2.Position;
    sSkinManager1.AnimEffects.SkinChanging.Active := b;
  end;
end;

procedure TMainForm.ActionHintsStdExecute(Sender: TObject);
begin
  if not ActionHintsStd.Checked then begin
    ActionHintsStd.Checked := True;
    ActionHintsSkinned.Checked := False;
    ActionHintsDisable.Checked := False;
    ActionHintsCustom.Checked := False;
    sAlphaHints1.UseSkinData := False;
    ShowHint := True;
    sAlphaHints1.Active := not ActionHintsStd.Checked;
    if CurrentFrame is TFrameHints then TFrameHints(CurrentFrame).UpdateStates
  end;
end;

end.

⌨️ 快捷键说明

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