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

Вниз

Как изменить функцию 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.012 c
1-1139325958
t0mk4
2006-02-07 18:25
2006.03.12
TabControl1


15-1140292398
DataBaser
2006-02-18 22:53
2006.03.12
Акцесс, требуется помощь


2-1140342145
keyser
2006-02-19 12:42
2006.03.12
Сервисы в windows 98 и Me


15-1140023986
Ученик чародея
2006-02-15 20:19
2006.03.12
Америка требует отменить торговые льготы, предоставляемые России.


1-1139471846
Ksenom
2006-02-09 10:57
2006.03.12
Количество потоков всё время растёт?!





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