Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.09.27;
Скачать: CL | DM;

Вниз

Как в InputBox_е изменить шрифт ???   Найти похожие ветки 

 
Zhekson   (2008-07-18 12:02) [0]

При инициализации приложения делаю вход по паролю. Теперь для скрытия пароля нужно полю для ввода пароля присвоить следующие значения:


  Font.Name := "Wingdings";
  PasswordChar := "l";


Как эот сделать?


 
Zhekson   (2008-07-18 12:04) [1]

виноват, использую InputQuery.

if InputQuery("Password", "Enter your password", PassWord) then
 if Password = "lowhuk" then
 begin
/////////////
 end;


 
Vlad Oshin ©   (2008-07-18 12:51) [2]

:)
Выдрать исходник и поставить как надо

procedure TForm3.Button1Click(Sender: TObject);
var
 PassWord:string;

function GetAveCharSize(Canvas: TCanvas): TPoint;
var
 I: Integer;
 Buffer: array[0..51] of Char;
begin
 for I := 0 to 25 do Buffer[I] := Chr(I + Ord("A"));
 for I := 0 to 25 do Buffer[I + 26] := Chr(I + Ord("a"));
 GetTextExtentPoint(Canvas.Handle, Buffer, 52, TSize(Result));
 Result.X := Result.X div 52;
end;

function MyInputQuery(const ACaption, APrompt: string;
 var Value: string): Boolean;
var
 Form: TForm;
 Prompt: TLabel;
 Edit: TEdit;
 DialogUnits: TPoint;
 ButtonTop, ButtonWidth, ButtonHeight: Integer;
begin
 Result := False;
 Form := TForm.Create(Application);
 with Form do
   try
     Canvas.Font := Font;
     DialogUnits := GetAveCharSize(Canvas);
     BorderStyle := bsDialog;
     Caption := ACaption;
     ClientWidth := MulDiv(180, DialogUnits.X, 4);
     Position := poScreenCenter;
     Prompt := TLabel.Create(Form);
     with Prompt do
     begin
       Parent := Form;
       Caption := APrompt;
       Left := MulDiv(8, DialogUnits.X, 4);
       Top := MulDiv(8, DialogUnits.Y, 8);
       Constraints.MaxWidth := MulDiv(164, DialogUnits.X, 4);
       WordWrap := True;
     end;
     Edit := TEdit.Create(Form);
     with Edit do
     begin
         Font.Name := "Wingdings";
         PasswordChar := "l";
       Parent := Form;
       Left := Prompt.Left;
       Top := Prompt.Top + Prompt.Height + 5;
       Width := MulDiv(164, DialogUnits.X, 4);
       MaxLength := 255;
       Text := Value;
       SelectAll;
     end;
     ButtonTop := Edit.Top + Edit.Height + 15;
     ButtonWidth := MulDiv(50, DialogUnits.X, 4);
     ButtonHeight := MulDiv(14, DialogUnits.Y, 8);
     with TButton.Create(Form) do
     begin
       Parent := Form;
       Caption := SMsgDlgOK;
       ModalResult := mrOk;
       Default := True;
       SetBounds(MulDiv(38, DialogUnits.X, 4), ButtonTop, ButtonWidth,
         ButtonHeight);
     end;
     with TButton.Create(Form) do
     begin
       Parent := Form;
       Caption := SMsgDlgCancel;
       ModalResult := mrCancel;
       Cancel := True;
       SetBounds(MulDiv(92, DialogUnits.X, 4), Edit.Top + Edit.Height + 15,
         ButtonWidth, ButtonHeight);
       Form.ClientHeight := Top + Height + 13;
     end;
     if ShowModal = mrOk then
     begin
       Value := Edit.Text;
       Result := True;
     end;
   finally
     Form.Free;
   end;
end;

begin
if MyInputQuery("Password", "Enter your password", PassWord) then
if Password = "lowhuk" then
begin
/////////////
end;


 
Zhekson   (2008-07-18 15:51) [3]

Vlad Oshin ©   (18.07.08 12:51) [2]
спасибо, это то что нужно.

Вот только такой прикол вышел, дома у меня проект откомпилировался без функции GetAveCharSize(Canvas: TCanvas): TPoint;, а на работе заартачился, говорит не нахожу VclUtils.dcu. А с чем это я мог прикрутить этот модуль?


 
Vlad Oshin ©   (2008-07-18 16:13) [4]

InputQuery и GetAveCharSize лежат в одном модуле,
подключить его попробуйте, попробуйте подключить и то, что этот модуль использует

да и
DialogUnits: TPoint;
GetAveCharSize(Canvas: TCanvas): TPoint

вычисляется
DialogUnits := GetAveCharSize(Canvas);

попробуйте по аналогии вычислить, или задать жестко на худой конец
DialogUnits.X := 20;
DialogUnits.Y:= 20;


 
Zhekson   (2008-07-18 16:51) [5]

Vlad Oshin ©   (18.07.08 16:13) [4]

странно, в модуле Dialogs, есть ф-ция GetAveCharSize(Canvas), но при компиляции выскакивает ошибка необьявленного идентификатора GetAveCharSize.

вичислить и задать жёстко удалось, но почему ошибка выскакивает, если модуль Dialogs, в котором есть эта функция, прописан???


 
Vlad Oshin ©   (2008-07-18 17:36) [6]

а если так:

function MyGetAveCharSize(Canvas: TCanvas): TPoint;
..
    DialogUnits := MyGetAveCharSize(Canvas);
-----------

или так:

................
var
 Form3: TForm3;

function GetTextExtentPoint(DC: HDC; Str: PChar; Count: Integer;
 var Size: TSize): BOOL; stdcall;
implementation

{$R *.dfm}
function GetTextExtentPoint; external gdi32 name "GetTextExtentPointA";

procedure TForm3.Button1Click(Sender: TObject);
var
PassWord:string;

function MyGetAveCharSize(Canvas: TCanvas): TPoint;
var
I: Integer;
Buffer: array[0..51] of Char;
begin
for I := 0 to 25 do Buffer[I] := Chr(I + Ord("A"));
for I := 0 to 25 do Buffer[I + 26] := Chr(I + Ord("a"));
GetTextExtentPoint(Canvas.Handle, Buffer, 52, TSize(Result));
Result.X := Result.X div 52;
end;

function MyInputQuery(const ACaption, APrompt: string;
var Value: string): Boolean;
var
Form: TForm;
Prompt: TLabel;
Edit: TEdit;
DialogUnits: TPoint;
ButtonTop, ButtonWidth, ButtonHeight: Integer;
begin
Result := False;
Form := TForm.Create(Application);
with Form do
  try
    Canvas.Font := Font;
    DialogUnits := MyGetAveCharSize(Canvas);
    BorderStyle := bsDialog;
.....
--------------------


 
Германн ©   (2008-07-19 01:30) [7]


> Как в InputBox_е изменить шрифт ??? [D7, WinXP]
>
> Zhekson   (18.07.08 12:02)
>
> При инициализации приложения делаю вход по паролю. Теперь
> для скрытия пароля нужно полю для ввода пароля присвоить
> следующие значения:
>
>
>   Font.Name := "Wingdings";
>   PasswordChar := "l";
>
>
> Как эот сделать?
> <Цитата>
>
> Zhekson   (18.07.08 12:04) [1]
>
> виноват, использую InputQuery.
>
>

А не проще ли создать свой собственный диалог для ввода пароля?


 
Zhekson   (2008-07-21 09:44) [8]

Vlad Oshin ©   (18.07.08 17:36) [6]
Да, работает. Спасибо.


> А не проще ли создать свой собственный диалог для ввода
> пароля?

Если имеется ввиду создание формы, на которую нужно кинуть поле ввода пароля, лэйбл и кнопку, то как её эктивизировать раньше, чем главную форму?


 
Vlad Oshin ©   (2008-07-21 10:28) [9]

procedure TForm3.FormCreate(Sender: TObject);
var
f3:tform;
begin
  f3:=tform.create(application);
  f3.Left:=10;
  f3.Top:=10;
  try
   f3.ShowModal;
  finally
    f3.Free;
  end;
end;


 
Zhekson   (2008-07-21 10:53) [10]

Vlad Oshin ©   (21.07.08 10:28) [9]
Во, тоже вариант. Спасибо!



Страницы: 1 вся ветка

Текущий архив: 2009.09.27;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.013 c
2-1248157687
abun
2009-07-21 10:28
2009.09.27
Проблема с отладкой


2-1247846262
datorn
2009-07-17 19:57
2009.09.27
Эффект падающих цифр


2-1248268660
Zalm
2009-07-22 17:17
2009.09.27
Прием сообщений данных сервером


3-1227710340
DSKalugin
2008-11-26 17:39
2009.09.27
как этот FB триггер перевести на MS SQL


2-1248165639
bag
2009-07-21 12:40
2009.09.27
рисовать в ondrawcell