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

Вниз

Как изменить функцию InputQuery, не переписывая её полностью?   Найти похожие ветки 

 
Volf_555   (2006-02-22 21:02) [0]

Есть стандартная функция:
function InputQuery(const ACaption, APrompt: string;
 var Value: string): Boolean;

в её код мне надо добавить единственную строчку:
PasswordChar:="*";

Как мне добавить эту строчку в функцию, не переписывая её полностью? Может существует метод унаследования функций с добавлением новых возможностей без переписывания полностью всей функции?

Вот сама функция:

function InputQuery(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
       Parent := Form;
       Left := Prompt.Left;
       Top := Prompt.Top + Prompt.Height + 5;
       Width := MulDiv(164, DialogUnits.X, 4);
       PasswordChar:="*";  //Я внёс эту строчку
       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 := "OK";
       ModalResult := mrOk;
       Default := True;
       SetBounds(MulDiv(38, DialogUnits.X, 4), ButtonTop, ButtonWidth,
         ButtonHeight);
     end;
     with TButton.Create(Form) do
     begin
       Parent := Form;
       Caption := "Cancel";
       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;
/CODE>


 
Джо ©   (2006-02-22 21:15) [1]

> Может существует метод унаследования функций с добавлением
> новых возможностей без

Нет.


 
Джо ©   (2006-02-22 21:16) [2]

А что мешает сделать свою функцию, скажем InputPasswordQuery с приведенным тобой телом?


 
Volf_555   (2006-02-22 21:22) [3]

Так и сделал :)
Создал новый юнит, туда поместил эти две функции, добавил нужную строчку, подключил к своей программе - и всё заробатало!


 
Джо ©   (2006-02-22 21:33) [4]

> [3] Volf_555   (22.02.06 21:22)
> Так и сделал :)
> Создал новый юнит, туда поместил эти две функции,

А зачем две? :)


 
Германн ©   (2006-02-23 02:03) [5]


> Джо ©   (22.02.06 21:33) [4]
>
> > [3] Volf_555   (22.02.06 21:22)
> > Так и сделал :)
> > Создал новый юнит, туда поместил эти две функции,
>
> А зачем две? :)


На всякий пожарный. © Бриллиатовая рука. :)))


 
Volf_555 ©   (2006-02-23 14:52) [6]


> Джо ©   (22.02.06 21:33) [4]
> > [3] Volf_555   (22.02.06 21:22)
> > Так и сделал :)
> > Создал новый юнит, туда поместил эти две функции,
>
> А зачем две? :)

Потому что без второй функции моя функция работать не будет.
И я в новый юнит поместил не лично свои функции, а борландовские.
В одной из них есть ссылка на другую функцию. По-этому две функции и вышло


 
Zeqfreed ©   (2006-02-23 15:30) [7]

Можно добавить блок условной компиляции, в котором и задавать PasswordChar. Но все-таки, лучше не править VCL и написать свой вариант где-нибудь в отдельном месте.


 
Volf_555 ©   (2006-02-23 15:42) [8]

А что за блок условной компиляции? Расскажи подробней



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

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

Наверх




Память: 0.49 MB
Время: 0.049 c
5-1126858582
newGuest
2005-09-16 12:16
2006.03.12
Control has no parent window.


9-1118459334
Homa_Programer
2005-06-11 07:08
2006.03.12
ФИО из базы данных в родительском падеже


3-1137764603
UnDISCOvery
2006-01-20 16:43
2006.03.12
ADOConnection не отпускает БД Access после Close!


1-1134166900
Destroyer
2005-12-10 01:21
2006.03.12
Удаление без восстановления


2-1140544115
nirvana
2006-02-21 20:48
2006.03.12
Выбор значений с помощью ADOQuery