📄 bsdialogs.pas
字号:
end;
procedure TbsSkinTextDialog.SaveButtonClick(Sender: TObject);
var
SD: TSaveDialog;
begin
if FSkinSaveDialog <> nil
then
begin
if FSkinSaveDialog.Execute
then Memo.Lines.LoadFromFile(FSkinSaveDialog.FileName);
end
else
begin
SD := TSaveDialog.Create(Self);
SD.Filter := '*.txt|*.txt|*.*|*.*';
if SD.Execute then Memo.Lines.SaveToFile(SD.FileName);
SD.Free;
end;
end;
procedure TbsSkinTextDialog.CopyButtonClick(Sender: TObject);
begin
Memo.CopyToClipboard;
end;
procedure TbsSkinTextDialog.CutButtonClick(Sender: TObject);
begin
Memo.CutToClipboard;
end;
procedure TbsSkinTextDialog.PasteButtonClick(Sender: TObject);
begin
Memo.PasteFromClipboard;
end;
procedure TbsSkinTextDialog.DeleteButtonClick(Sender: TObject);
begin
Memo.ClearSelection;
end;
procedure TbsSkinTextDialog.SetLines(Value: TStrings);
begin
FLines.Assign(Value);
end;
procedure TbsSkinTextDialog.SetClientWidth(Value: Integer);
begin
if Value > 0 then FClientWidth := Value;
end;
procedure TbsSkinTextDialog.SetClientHeight(Value: Integer);
begin
if Value > 0 then FClientHeight := Value;
end;
procedure TbsSkinTextDialog.SetDefaultMemoFont;
begin
FDefaultMemoFont.Assign(Value);
end;
procedure TbsSkinTextDialog.SetDefaultButtonFont;
begin
FDefaultButtonFont.Assign(Value);
end;
procedure TbsSkinTextDialog.Notification;
begin
inherited Notification(AComponent, Operation);
if (Operation = opRemove) and (AComponent = FSD) then FSD := nil;
if (Operation = opRemove) and (AComponent = FCtrlFSD) then FCtrlFSD := nil;
if (Operation = opRemove) and (AComponent = FSkinOpenDialog) then FSkinOpenDialog := nil;
if (Operation = opRemove) and (AComponent = FSkinSaveDialog) then FSkinSaveDialog := nil;
end;
function TbsSkinTextDialog.Execute: Boolean;
var
Form: TForm;
BSF: TbsBusinessSkinForm;
ButtonWidth, ButtonHeight: Integer;
Panel: TbsSkinPanel;
HMemoScrollBar, VMemoScrollBar: TbsSkinScrollBar;
ToolPanel: TbsSkinPanel;
begin
Form := TForm.Create(Application);
Form.BorderStyle := bsDialog;
Form.Caption := FCaption;
Form.Position := poScreenCenter;
BSF := TbsBusinessSkinForm.Create(Form);
BSF.BorderIcons := [];
BSF.SkinData := SkinData;
BSF.MenusSkinData := CtrlSkinData;
BSF.AlphaBlend := AlphaBlend;
BSF.AlphaBlendAnimation := AlphaBlendAnimation;
BSF.AlphaBlendValue := AlphaBlendValue;
//
try
with Form do
begin
ClientWidth := FClientWidth;
ClientHeight := FClientHeight;
ButtonWidth := 80;
ButtonHeight := 25;
with TbsSkinButton.Create(Form) do
begin
Parent := Form;
DefaultFont := DefaultButtonFont;
UseSkinFont := Self.UseSkinFont;
Caption := BS_MSG_BTN_OK;
DefaultHeight := ButtonHeight;
ModalResult := mrOk;
Default := True;
SkinDataName := FButtonSkinDataName;
SkinData := CtrlSkinData;
SetBounds(FClientWidth - ButtonWidth * 2 - 20, FClientHeight - Height - 10,
ButtonWidth, Height);
end;
with TbsSkinButton.Create(Form) do
begin
Parent := Form;
DefaultFont := DefaultButtonFont;
UseSkinFont := Self.UseSkinFont;
Caption := BS_MSG_BTN_CANCEL;
DefaultHeight := ButtonHeight;
ModalResult := mrCancel;
Cancel := True;
SkinDataName := FButtonSkinDataName;
SkinData := CtrlSkinData;
SetBounds(FClientWidth - ButtonWidth - 10, FClientHeight - Height - 10,
ButtonWidth, Height);
ButtonHeight := Height;
end;
Panel := TbsSkinPanel.Create(Form);
with Panel do
begin
Parent := Form;
Align := alTop;
SkinData := CtrlSkinData;
end;
if FShowToolBar
then
begin
ToolPanel := TbsSkinPanel.Create(Form);
with ToolPanel do
begin
Parent := Form;
Align := alTop;
DefaultHeight := 25;
SkinDataName := 'toolpanel';
SkinData := CtrlSkinData;
end;
with TbsSkinSpeedButton.Create(Form) do
begin
Parent := ToolPanel;
DefaultWidth := 27;
SkinDataName := 'toolbutton';
Align := alLeft;
OnClick := NewButtonClick;
NumGlyphs := 1;
Glyph.LoadFromResourceName(HInstance, 'BS_NEW');
SkinData := CtrlSkinData;
end;
with TbsSkinSpeedButton.Create(Form) do
begin
Parent := ToolPanel;
DefaultWidth := 27;
SkinDataName := 'toolbutton';
Align := alLeft;
OnClick := OpenButtonClick;
NumGlyphs := 1;
Glyph.LoadFromResourceName(HInstance, 'BS_OPEN');
SkinData := CtrlSkinData;
end;
with TbsSkinSpeedButton.Create(Form) do
begin
Parent := ToolPanel;
DefaultWidth := 27;
SkinDataName := 'toolbutton';
Align := alLeft;
OnClick := SaveButtonClick;
NumGlyphs := 1;
Glyph.LoadFromResourceName(HInstance, 'BS_SAVE');
SkinData := CtrlSkinData;
end;
with TbsSkinBevel.Create(Form) do
begin
Parent := ToolPanel;
Width := 24;
Align := alLeft;
DividerMode := True;
Shape := bsLeftLine;
SkinData := CtrlSkinData;
end;
with TbsSkinSpeedButton.Create(Form) do
begin
Parent := ToolPanel;
DefaultWidth := 27;
SkinDataName := 'toolbutton';
Align := alLeft;
OnClick := CopyButtonClick;
NumGlyphs := 1;
Glyph.LoadFromResourceName(HInstance, 'BS_COPY');
SkinData := CtrlSkinData;
end;
with TbsSkinSpeedButton.Create(Form) do
begin
Parent := ToolPanel;
DefaultWidth := 27;
SkinDataName := 'toolbutton';
Align := alLeft;
OnClick := CutButtonClick;
NumGlyphs := 1;
Glyph.LoadFromResourceName(HInstance, 'BS_CUT');
SkinData := CtrlSkinData;
end;
with TbsSkinSpeedButton.Create(Form) do
begin
Parent := ToolPanel;
DefaultWidth := 27;
SkinDataName := 'toolbutton';
Align := alLeft;
OnClick := PasteButtonClick;
NumGlyphs := 1;
Glyph.LoadFromResourceName(HInstance, 'BS_PASTE');
SkinData := CtrlSkinData;
end;
with TbsSkinSpeedButton.Create(Form) do
begin
Parent := ToolPanel;
DefaultWidth := 27;
SkinDataName := 'toolbutton';
Align := alLeft;
OnClick := DeleteButtonClick;
NumGlyphs := 1;
Glyph.LoadFromResourceName(HInstance, 'BS_DELETE');
SkinData := CtrlSkinData;
end;
end;
with Panel do
begin
if FShowToolBar
then
Height := FClientHeight - ButtonHeight - 20 - ToolPanel.Height
else
Height := FClientHeight - ButtonHeight - 20;
end;
VMemoScrollBar := TbsSkinScrollBar.Create(Form);
with VMemoScrollBar do
begin
Kind := sbVertical;
Parent := Panel;
Align := alRight;
DefaultWidth := 19;
Enabled := False;
SkinDataName := 'vscrollbar';
SkinData := CtrlSkinData;
end;
HMemoScrollBar := TbsSkinScrollBar.Create(Form);
with HMemoScrollBar do
begin
Parent := Panel;
Align := alBottom;
DefaultHeight := 19;
Enabled := False;
BothMarkerWidth := 19;
Both := True;
SkinDataName := 'bothhscrollbar';
SkinData := CtrlSkinData;
end;
Memo := TbsSkinMemo2.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;
// ===================== TbsSkinConfirmDialog ==================== //
constructor TbsSkinConfirmDialog.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 TbsSkinConfirmDialog.Destroy;
begin
FDefaultLabelFont.Free;
FDefaultButtonFont.Free;
FDefaultEditFont.Free;
inherited;
end;
procedure TbsSkinConfirmDialog.SetDefaultLabelFont;
begin
FDefaultLabelFont.Assign(Value);
end;
procedure TbsSkinConfirmDialog.SetDefaultEditFont;
begin
FDefaultEditFont.Assign(Value);
end;
procedure TbsSkinConfirmDialog.SetDefaultButtonFont;
begin
FDefaultButtonFont.Assign(Value);
end;
procedure TbsSkinConfirmDialog.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 TbsSkinConfirmDialog.Execute: Boolean;
var
Form: TForm;
BSF: TbsBusinessSkinForm;
Image: TImage;
Password1Label, Password2Label: TbsSkinStdLabel;
Password1Edit, Password2Edit: TbsSkinPasswordEdit;
DialogUnits: TPoint;
ButtonTop, ButtonWidth, ButtonHeight: Integer;
LeftOffset: Integer;
begin
Form := TForm.Create(Application);
Form.BorderStyle := bsDialog;
Form.Caption := FCaption;
Form.Position := poScreenCenter;
BSF := TbsBusinessSkinForm.Create(Form);
BSF.BorderIcons := [];
BSF.SkinData := SkinData;
BSF.MenusSkinData := CtrlSkinData;
BSF.AlphaBlend := AlphaBlend;
BSF.AlphaBlendAnimation := AlphaBlendAnimation;
BSF.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, 'BS_KEY');
end;
LeftOffset := Image.Width + Image.Left;
ClientWidth := LeftOffset + MulDiv(180, DialogUnits.X, 4);
end;
Password1Label := TbsSkinStdLabel.Create(Form);
with Password1Label do
begin
Parent := Form;
Left := L
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -