Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2009.09.27;
Скачать: [xml.tar.bz2];

Вниз

Как в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.004 c
15-1248461839
Псалтырь
2009-07-24 22:57
2009.09.27
Зависимости проекта


15-1248553808
Юрий
2009-07-26 00:30
2009.09.27
С днем рождения ! 26 июля 2009 воскресенье


1-1217481040
TNT
2008-07-31 09:10
2009.09.27
OleContainer и приложение


15-1248650332
Petr V. Abramov
2009-07-27 03:18
2009.09.27
Центры НТТМ


2-1248274425
dmitry_12_08_73
2009-07-22 18:53
2009.09.27
Загрузка клиентской области окна в TImage





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский