Главная страница
    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
1-1216545812
big_yaric
2008-07-20 13:23
2009.09.27
Получение координат символа в TRichEdit


15-1248636256
KilkennyCat
2009-07-26 23:24
2009.09.27
ВМФ!


15-1248539498
Kerk
2009-07-25 20:31
2009.09.27
Спам


15-1248544745
xayam
2009-07-25 21:59
2009.09.27
Подскажите каталог RSS-лент на определенную тему


2-1248244330
grav
2009-07-22 10:32
2009.09.27
Grid со столбцами из запроса





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский