Главная страница
    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.014 c
1-1134166900
Destroyer
2005-12-10 01:21
2006.03.12
Удаление без восстановления


15-1139835867
paza
2006-02-13 16:04
2006.03.12
midas.dll


2-1140519656
лом
2006-02-21 14:00
2006.03.12
Такой вопрос


6-1132057630
SergGG
2005-11-15 15:27
2006.03.12
Вопросы по сетям


2-1140602014
MIXER
2006-02-22 12:53
2006.03.12
печать quick report





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