📄 mainunit.pas
字号:
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 + -