📄 spdialogs.pas
字号:
HMemoScrollBar := TspSkinScrollBar.Create(Form);
with HMemoScrollBar do
begin
Parent := Panel;
Align := alBottom;
DefaultHeight := 19;
Enabled := False;
BothMarkerWidth := 19;
Both := True;
SkinDataName := 'bothhscrollbar';
SkinData := CtrlSkinData;
end;
Memo := TspSkinMemo2.Create(Form);
with Memo do
begin
Parent := Panel;
Lines.Assign(Self.Lines);
Align := alClient;
HScrollBar := HMemoScrollBar;
VScrollBar := VMemoScrollBar;
SkinData := CtrlSkinData;
end;
end;
if Form.ShowModal = mrOk
then
begin
Self.Lines.Assign(Memo.Lines);
Result := True;
end
else
Result := False;
finally
Form.Free;
end;
end;
constructor TspSkinPasswordDialog.Create;
begin
inherited Create(AOwner);
FAlphaBlend := False;
FAlphaBlendAnimation := False;
FAlphaBlendValue := 200;
LoginMode := False;
FCaption := 'Password';
FPasswordCaption := 'Password:';
FPassword := '';
FLoginCaption := 'Login name:';
FLogin := '';
FButtonSkinDataName := 'button';
FLabelSkinDataName := 'stdlabel';
FEditSkinDataName := 'edit';
FDefaultLabelFont := TFont.Create;
FDefaultButtonFont := TFont.Create;
FDefaultEditFont := TFont.Create;
FUseSkinFont := True;
with FDefaultLabelFont do
begin
Name := 'Arial';
Style := [];
Height := 14;
end;
with FDefaultButtonFont do
begin
Name := 'Arial';
Style := [];
Height := 14;
end;
with FDefaultEditFont do
begin
Name := 'Arial';
Style := [];
Height := 14;
end;
end;
destructor TspSkinPasswordDialog.Destroy;
begin
FDefaultLabelFont.Free;
FDefaultButtonFont.Free;
FDefaultEditFont.Free;
inherited;
end;
procedure TspSkinPasswordDialog.SetDefaultLabelFont;
begin
FDefaultLabelFont.Assign(Value);
end;
procedure TspSkinPasswordDialog.SetDefaultEditFont;
begin
FDefaultEditFont.Assign(Value);
end;
procedure TspSkinPasswordDialog.SetDefaultButtonFont;
begin
FDefaultButtonFont.Assign(Value);
end;
procedure TspSkinPasswordDialog.Notification;
begin
inherited Notification(AComponent, Operation);
if (Operation = opRemove) and (AComponent = FSD) then FSD := nil;
if (Operation = opRemove) and (AComponent = FCtrlFSD) then FCtrlFSD := nil;
end;
function TspSkinPasswordDialog.Execute: Boolean;
var
Form: TForm;
DSF: TspDynamicSkinForm;
Image: TImage;
LoginLabel, PasswordLabel: TspSkinStdLabel;
LoginEdit: TspSkinEdit;
PasswordEdit: TspSkinPasswordEdit;
DialogUnits: TPoint;
ButtonTop, ButtonWidth, ButtonHeight: Integer;
LeftOffset: Integer;
begin
Form := TForm.Create(Application);
Form.BorderStyle := bsDialog;
Form.Caption := FCaption;
Form.Position := poScreenCenter;
DSF := TspDynamicSkinForm.Create(Form);
DSF.BorderIcons := [];
DSF.SkinData := SkinData;
DSF.MenusSkinData := CtrlSkinData;
DSF.AlphaBlend := AlphaBlend;
DSF.AlphaBlendAnimation := AlphaBlendAnimation;
DSF.AlphaBlendValue := AlphaBlendValue;
try
with Form do
begin
Canvas.Font := Font;
DialogUnits := GetAveCharSize(Canvas);
Image := TImage.Create(Form);
with Image do
begin
Parent := Form;
Top := MulDiv(8, DialogUnits.Y, 8);
Left := MulDiv(8, DialogUnits.X, 4);
AutoSize := True;
Transparent := True;
Picture.Bitmap.Handle := LoadBitMap(HInstance, 'SP_KEY');
end;
LeftOffset := Image.Width + Image.Left;
ClientWidth := LeftOffset + MulDiv(180, DialogUnits.X, 4);
end;
if FLoginMode
then
begin
LoginLabel := TspSkinStdLabel.Create(Form);
with LoginLabel do
begin
Parent := Form;
Left := LeftOffset + MulDiv(8, DialogUnits.X, 4);
Top := MulDiv(8, DialogUnits.Y, 8);
Constraints.MaxWidth := MulDiv(164, DialogUnits.X, 4);
DefaultFont := DefaultLabelFont;
UseSkinFont := Self.UseSkinFont;
SkinDataName := FLabelSkinDataName;
SkinData := CtrlSkinData;
Caption := FLoginCaption;
end;
LoginEdit := TspSkinMaskEdit.Create(Form);
with LoginEdit do
begin
Parent := Form;
DefaultFont := DefaultEditFont;
UseSkinFont := Self.UseSkinFont;
Left := LoginLabel.Left;
Top := LoginLabel.Top + LoginLabel.Height + 5;
DefaultWidth := MulDiv(164, DialogUnits.X, 4);
MaxLength := 255;
Text := FLogin;
SelectAll;
SkinDataName := FEditSkinDataName;
SkinData := CtrlSkinData;
end;
end;
PasswordLabel := TspSkinStdLabel.Create(Form);
with PasswordLabel do
begin
Parent := Form;
Left := LeftOffset + MulDiv(8, DialogUnits.X, 4);
if FLoginMode and (LoginEdit <> nil)
then
Top := LoginEdit.Top + LoginEdit.Height + 5
else
Top := MulDiv(8, DialogUnits.Y, 8);
Constraints.MaxWidth := MulDiv(164, DialogUnits.X, 4);
DefaultFont := DefaultLabelFont;
UseSkinFont := Self.UseSkinFont;
SkinDataName := FLabelSkinDataName;
SkinData := CtrlSkinData;
Caption := FPasswordCaption;
end;
PasswordEdit := TspSkinPasswordEdit.Create(Form);
with PasswordEdit do
begin
Parent := Form;
PasswordKind := Self.PasswordKind;
DefaultFont := DefaultEditFont;
UseSkinFont := Self.UseSkinFont;
Left := PasswordLabel.Left;
Top := PasswordLabel.Top + PasswordLabel.Height + 5;
DefaultWidth := MulDiv(164, DialogUnits.X, 4);
MaxLength := 255;
Text := FPassword;
SelectAll;
SkinDataName := FEditSkinDataName;
SkinData := CtrlSkinData;
end;
ButtonTop := PasswordEdit.Top + PasswordEdit.Height + 15;
ButtonWidth := MulDiv(50, DialogUnits.X, 4);
ButtonHeight := MulDiv(14, DialogUnits.Y, 8);
with TspSkinButton.Create(Form) do
begin
Parent := Form;
DefaultFont := DefaultButtonFont;
UseSkinFont := Self.UseSkinFont;
Caption := SP_MSG_BTN_OK;
ModalResult := mrOk;
Default := True;
SetBounds(LeftOffset + MulDiv(38, DialogUnits.X, 4), ButtonTop, ButtonWidth,
ButtonHeight);
DefaultHeight := ButtonHeight;
SkinDataName := FButtonSkinDataName;
SkinData := CtrlSkinData;
end;
with TspSkinButton.Create(Form) do
begin
Parent := Form;
DefaultFont := DefaultButtonFont;
UseSkinFont := Self.UseSkinFont;
Caption := SP_MSG_BTN_CANCEL;
ModalResult := mrCancel;
Cancel := True;
SetBounds(LeftOffset + MulDiv(92, DialogUnits.X, 4), PasswordEdit.Top + PasswordEdit.Height + 15,
ButtonWidth, ButtonHeight);
DefaultHeight := ButtonHeight;
SkinDataName := FButtonSkinDataName;
SkinData := CtrlSkinData;
Form.ClientHeight := Top + Height + 13;
Image.Top := Form.ClientHeight div 2 - Image.Height div 2;
end;
if Form.ShowModal = mrOk
then
begin
if FLoginMode then FLogin := LoginEdit.Text;
FPassword := PasswordEdit.Text;
Result := True;
end
else
Result := False;
finally
Form.Free;
end;
end;
// ===================== TspSkinConfirmDialog ==================== //
constructor TspSkinConfirmDialog.Create;
begin
inherited Create(AOwner);
FAlphaBlend := False;
FAlphaBlendAnimation := False;
FAlphaBlendValue := 200;
FCaption := 'Confirm password';
FPassword1Caption := 'Enter password:';
FPassword1 := '';
FPassword2Caption := 'Confirm password: ';
FPassword2:= '';
FButtonSkinDataName := 'button';
FLabelSkinDataName := 'stdlabel';
FEditSkinDataName := 'edit';
FDefaultLabelFont := TFont.Create;
FDefaultButtonFont := TFont.Create;
FDefaultEditFont := TFont.Create;
FUseSkinFont := True;
with FDefaultLabelFont do
begin
Name := 'Arial';
Style := [];
Height := 14;
end;
with FDefaultButtonFont do
begin
Name := 'Arial';
Style := [];
Height := 14;
end;
with FDefaultEditFont do
begin
Name := 'Arial';
Style := [];
Height := 14;
end;
end;
destructor TspSkinConfirmDialog.Destroy;
begin
FDefaultLabelFont.Free;
FDefaultButtonFont.Free;
FDefaultEditFont.Free;
inherited;
end;
procedure TspSkinConfirmDialog.SetDefaultLabelFont;
begin
FDefaultLabelFont.Assign(Value);
end;
procedure TspSkinConfirmDialog.SetDefaultEditFont;
begin
FDefaultEditFont.Assign(Value);
end;
procedure TspSkinConfirmDialog.SetDefaultButtonFont;
begin
FDefaultButtonFont.Assign(Value);
end;
procedure TspSkinConfirmDialog.Notification;
begin
inherited Notification(AComponent, Operation);
if (Operation = opRemove) and (AComponent = FSD) then FSD := nil;
if (Operation = opRemove) and (AComponent = FCtrlFSD) then FCtrlFSD := nil;
end;
function TspSkinConfirmDialog.Execute: Boolean;
var
Form: TForm;
DSF: TspDynamicSkinForm;
Image: TImage;
Password1Label, Password2Label: TspSkinStdLabel;
Password1Edit, Password2Edit: TspSkinPasswordEdit;
DialogUnits: TPoint;
ButtonTop, ButtonWidth, ButtonHeight: Integer;
LeftOffset: Integer;
begin
Form := TForm.Create(Application);
Form.BorderStyle := bsDialog;
Form.Caption := FCaption;
Form.Position := poScreenCenter;
DSF := TspDynamicSkinForm.Create(Form);
DSF.BorderIcons := [];
DSF.SkinData := SkinData;
DSF.MenusSkinData := CtrlSkinData;
DSF.AlphaBlend := AlphaBlend;
DSF.AlphaBlendAnimation := AlphaBlendAnimation;
DSF.AlphaBlendValue := AlphaBlendValue;
DSF.SizeAble := False;
try
with Form do
begin
Canvas.Font := Font;
DialogUnits := GetAveCharSize(Canvas);
Image := TImage.Create(Form);
with Image do
begin
Parent := Form;
Top := MulDiv(8, DialogUnits.Y, 8);
Left := MulDiv(8, DialogUnits.X, 4);
AutoSize := True;
Transparent := True;
Picture.Bitmap.Handle := LoadBitMap(HInstance, 'BS_KEY');
end;
LeftOffset := Image.Width + Image.Left;
ClientWidth := LeftOffset + MulDiv(180, DialogUnits.X, 4);
end;
Password1Label := TspSkinStdLabel.Create(Form);
with Password1Label do
begin
Parent := Form;
Left := LeftOffset + MulDiv(8, DialogUnits.X, 4);
Top := MulDiv(8, DialogUnits.Y, 8);
Constraints.MaxWidth := MulDiv(164, DialogUnits.X, 4);
DefaultFont := DefaultLabelFont;
UseSkinFont := Self.UseSkinFont;
SkinDataName := FLabelSkinDataName;
SkinData := CtrlSkinData;
Caption := FPassword1Caption;
end;
Password1Edit := TspSkinPasswordEdit.Create(Form);
with Password1Edit do
begin
Parent := Form;
PasswordKind := Self.PasswordKind;
DefaultFont := DefaultEditFont;
UseSkinFont := Self.UseSkinFont;
Left := Password1Label.Left;
Top := Password1Label.Top + Password1Label.Height + 5;
DefaultWidth := MulDiv(164, DialogUnits.X, 4);
MaxLength := 255;
Text := FPassword1;
SelectAll;
SkinDataName := FEditSkinDataName;
SkinData := CtrlSkinData;
end;
Password2Label := TspSkinStdLabel.Create(Form);
with Password2Label do
begin
Parent := Form;
Left := LeftOffset + MulDiv(8, DialogUnits.X, 4);
Top := Password1Edit.Top + Password1Edit.Height + 5;
Constraints.MaxWidth := MulDiv(164, DialogUnits.X, 4);
DefaultFont := DefaultLabelFont;
UseSkinFont := Self.UseSkinFont;
SkinDataName := FLabelSkinDataName;
SkinData := CtrlSkinData;
Caption := FPassword2Caption;
end;
Password2Edit := TspSkinPasswordEdit.Create(Form);
with Password2Edit do
begin
Parent := Form;
PasswordKind := Self.PasswordKind;
DefaultFont := DefaultEditFont;
UseSkinFont := Self.UseSkinFont;
Left := Password2Label.Left;
Top := Password2Label.Top + Password2Label.Height + 5;
DefaultWidth := MulDiv(164, DialogUnits.X, 4);
MaxLength := 255;
Text := FPassword2;
SelectAll;
SkinDataName := FEditSkinDataName;
SkinData := CtrlSkinData;
end;
ButtonTop := Password2Edit.Top + Password2Edit.Height + 15;
ButtonWidth := MulDiv(50, DialogUnits.X, 4);
ButtonHeight := MulDiv(14, DialogUnits.Y, 8);
with TspSkinButton.Create(Form) do
begin
Parent := Form;
DefaultFont := DefaultButtonFont;
UseSkinFont := Self.UseSkinFont;
Caption := SP_MSG_BTN_OK;
ModalResult := mrOk;
Default := True;
SetBounds(LeftOffset + MulDiv(38, DialogUnits.X, 4), ButtonTop, ButtonWidth,
ButtonHeight);
DefaultHeight := ButtonHeight;
SkinDataName := FButtonSkinDataName;
SkinData := CtrlSkinData;
end;
with TspSkinButton.Create(Form) do
begin
Parent := Form;
DefaultFont := DefaultButtonFont;
UseSkinFont := Self.UseSkinFont;
Caption := SP_MSG_BTN_CANCEL;
ModalResult := mrCancel;
Cancel := True;
SetBounds(LeftOffset + MulDiv(92, DialogUnits.X, 4), Password2Edit.Top + Password2Edit.Height + 15,
ButtonWidth, ButtonHeight);
DefaultHeight := ButtonHeight;
SkinDataName := FButtonSkinDataName;
SkinData := CtrlSkinData;
Form.ClientHeight := Top + Height + 13;
Image.Top := Form.ClientHeight div 2 - Image.Height div 2;
end;
if Form.ShowModal = mrOk
then
begin
FPassword1 := Password1Edit.Text;
FPassword2 := Password2Edit.Text;
Result := True;
end
else
Result := False;
finally
Form.Free;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -