lazarus/lcl/forms/dblogdlg.pas
ondrej 083ef5923c LCL: rename TControl.ScaleCoord* methods
git-svn-id: trunk@55022 -
2017-05-20 10:02:25 +00:00

147 lines
4.1 KiB
ObjectPascal

unit DBLogDlg;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, StdCtrls, ButtonPanel, DB;
type
{ TLoginDialog }
TLoginDialog = class(TForm)
protected
lDatabaseName: TLabel;
lDatabase: TLabel;
lUserName: TLabel;
lPassword: TLabel;
eUserName: TEdit;
ePassword: TEdit;
BtnPanel: TButtonPanel;
public
constructor Create(TheOwner: TComponent); override;
end;
function LoginDialogEx(const ADatabaseName: string; var AUserName, APassword: string;
UserNameReadOnly: Boolean=False): Boolean;
resourcestring
rsDBLogDlgCaption = 'Database Login';
rsDBLogDlgDatabase = 'Database';
rsDBLogDlgUserName = '&User Name';
rsDBLogDlgPassword = '&Password';
rsDBLogDlgLogin = '&Login';
implementation
{ TLoginDialog }
constructor TLoginDialog.Create(TheOwner: TComponent);
begin
inherited CreateNew(TheOwner, 0);
Caption := rsDBLogDlgCaption;
Position := poScreenCenter;
AutoSize := True;
BorderStyle := bsDialog;
ChildSizing.LeftRightSpacing := Scale96ToForm(16);
ChildSizing.TopBottomSpacing := Scale96ToForm(10);
lDatabase := TLabel.Create(Self);
lDatabase.Parent := Self;
lDatabase.Caption := rsDBLogDlgDatabase;
lDatabaseName := TLabel.Create(Self);
lDatabaseName.Parent := Self;
lDatabaseName.AnchorSide[akTop].Control := lDatabase;
lDatabaseName.AnchorSide[akTop].Side := asrCenter;
lDatabaseName.AnchorSide[akLeft].Control := lDatabase;
lDatabaseName.AnchorSide[akLeft].Side := asrLeft;
lDatabaseName.BorderSpacing.Left := Scale96ToForm(80);
lUserName := TLabel.Create(Self);
lUserName.Parent := Self;
lUserName.Caption := rsDBLogDlgUserName;
lUserName.AnchorSide[akTop].Control := lDatabase;
lUserName.AnchorSide[akTop].Side := asrBottom;
lUserName.BorderSpacing.Top := Scale96ToForm(14);
eUserName := TEdit.Create(Self);
eUserName.Parent := Self;
eUserName.Width := Scale96ToForm(164);
eUserName.AnchorSide[akTop].Control := lUserName;
eUserName.AnchorSide[akTop].Side := asrCenter;
eUserName.AnchorSide[akLeft].Control := lUserName;
eUserName.AnchorSide[akLeft].Side := asrLeft;
eUserName.Anchors := [akTop, akLeft];
eUserName.BorderSpacing.Left := lDatabaseName.BorderSpacing.Left;
lUserName.FocusControl := eUserName;
lPassword := TLabel.Create(Self);
lPassword.Parent := Self;
lPassword.Caption := rsDBLogDlgPassword;
lPassword.AnchorSide[akTop].Control := lUserName;
lPassword.AnchorSide[akTop].Side := asrBottom;
lPassword.BorderSpacing.Top := Scale96ToForm(12);
ePassword := TEdit.Create(Self);
ePassword.Parent := Self;
ePassword.Width := eUserName.Width;
ePassword.PasswordChar := '*';
ePassword.AnchorSide[akTop].Control := lPassword;
ePassword.AnchorSide[akTop].Side := asrCenter;
ePassword.AnchorSide[akLeft].Control := lPassword;
ePassword.AnchorSide[akLeft].Side := asrLeft;
ePassword.Anchors := [akTop, akLeft];
ePassword.BorderSpacing.Left := lDatabaseName.BorderSpacing.Left;
lPassword.FocusControl := ePassword;
BtnPanel := TButtonPanel.Create(Self);
BtnPanel.Parent := Self;
BtnPanel.ShowBevel:= False;
BtnPanel.ShowButtons := [pbOK, pbCancel];
BtnPanel.OKButton.Caption := rsDBLogDlgLogin;
BtnPanel.AnchorSide[akTop].Control := ePassword;
BtnPanel.AnchorSide[akTop].Side := asrBottom;
BtnPanel.AnchorSide[akRight].Control := ePassword;
BtnPanel.AnchorSide[akRight].Side := asrRight;
BtnPanel.Anchors := [akTop, akRight];
BtnPanel.BorderSpacing.Top := Scale96ToForm(10);
end;
function LoginDialogEx(const ADatabaseName: string; var AUserName, APassword: string;
UserNameReadOnly: Boolean=False): Boolean;
var
F: TLoginDialog;
begin
F := TLoginDialog.Create(nil);
try
F.lDatabaseName.Caption := ADatabaseName;
F.eUserName.Text := AUserName;
F.ePassword.Text := APassword;
if UserNameReadOnly then
begin
F.eUserName.ReadOnly := True;
F.ActiveControl := F.ePassword;
end;
Result := F.ShowModal = mrOK;
if Result then
begin
AUserName := F.eUserName.Text;
APassword := F.ePassword.Text;
end;
finally
F.Free;
end;
end;
initialization
if not Assigned(LoginDialogExProc) then
LoginDialogExProc := @LoginDialogEx;
end.