| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 | 
							- //---------------------------------------------------------------------------
 
- #include <vcl.h>
 
- #pragma hdrstop
 
- #include "WinInterface.h"
 
- #include <VCLCommon.h>
 
- #include <Windows.hpp>
 
- #include <Consts.hpp>
 
- #include <HistoryComboBox.hpp>
 
- #include <PasTools.hpp>
 
- #include <PasswordEdit.hpp>
 
- //---------------------------------------------------------------------------
 
- #pragma package(smart_init)
 
- //---------------------------------------------------------------------------
 
- struct TInputDialogToken
 
- {
 
-   TInputDialogInitialize OnInitialize;
 
-   TInputDialogData Data;
 
-   TWinControl * EditControl;
 
-   bool PathInput;
 
- };
 
- //---------------------------------------------------------------------------
 
- void __fastcall InputDialogHelp(void * /*Data*/, TObject * Sender)
 
- {
 
-   TControl * Control = dynamic_cast<TControl *>(Sender);
 
-   Application->HelpKeyword(Control->Parent->HelpKeyword);
 
- }
 
- //---------------------------------------------------------------------------
 
- void __fastcall InputDialogShow(void * Data, TObject * Sender)
 
- {
 
-   TInputDialogToken & Token = *static_cast<TInputDialogToken *>(Data);
 
-   if (Token.OnInitialize != NULL)
 
-   {
 
-     Token.OnInitialize(Sender, &Token.Data);
 
-   }
 
-   if (Token.PathInput)
 
-   {
 
-     InstallPathWordBreakProc(Token.EditControl);
 
-   }
 
- }
 
- //---------------------------------------------------------------------------
 
- bool __fastcall InputDialog(const UnicodeString ACaption,
 
-   const UnicodeString APrompt, UnicodeString & Value, UnicodeString HelpKeyword,
 
-   TStrings * History, bool PathInput, TInputDialogInitialize OnInitialize, bool Echo)
 
- {
 
-   bool Result = False;
 
-   TInputDialogToken Token;
 
-   TForm * Form = new TForm(GetFormOwner(), 0); // bypass the VCL streaming (for Salamander)
 
-   try
 
-   {
 
-     // salam needs to override this in UseSystemSettings
 
-     Form->Position = poOwnerFormCenter;
 
-     SetCorrectFormParent(Form);
 
-     UseSystemSettingsPre(Form);
 
-     // this is what TCustomForm.Loaded does
 
-     // Note that this is not needed as due to use of an alternative constructor above
 
-     // we are already set to default font
 
-     // See TMessageForm::Create for contrary
 
-     Form->Font->Assign(Application->DefaultFont);
 
-     Form->ParentFont = true;
 
-     Token.OnInitialize = OnInitialize;
 
-     Token.PathInput = PathInput;
 
-     TNotifyEvent OnShow;
 
-     ((TMethod *)&OnShow)->Data = &Token;
 
-     ((TMethod *)&OnShow)->Code = InputDialogShow;
 
-     Form->OnShow = OnShow;
 
-     Form->Canvas->Font = Form->Font;
 
-     Form->BorderStyle = bsDialog;
 
-     Form->Caption = ACaption;
 
-     Form->ClientWidth = ScaleByTextHeightRunTime(Form, 275);
 
-     Form->ClientHeight = ScaleByTextHeightRunTime(Form, 102);
 
-     if (!HelpKeyword.IsEmpty())
 
-     {
 
-       Form->HelpKeyword = HelpKeyword;
 
-       Form->BorderIcons = TBorderIcons(Form->BorderIcons) << biHelp;
 
-     }
 
-     TLabel * Prompt = new TLabel(Form);
 
-     Prompt->Parent = Form;
 
-     Prompt->AutoSize = True;
 
-     Prompt->Left = ScaleByTextHeightRunTime(Form, 10);
 
-     Prompt->Top = ScaleByTextHeightRunTime(Form, 13);
 
-     Prompt->Caption = APrompt;
 
-     TCustomEdit * Edit;
 
-     THistoryComboBox * HistoryCombo;
 
-     if (History == NULL)
 
-     {
 
-       if (Echo)
 
-       {
 
-         Edit = new TEdit(Form);
 
-       }
 
-       else
 
-       {
 
-         Edit = new TPasswordEdit(Form);
 
-       }
 
-       Edit->Parent = Form;
 
-       Edit->Text = Value;
 
-       Edit->SelectAll();
 
-       reinterpret_cast<TEdit *>(Edit)->MaxLength = 255;
 
-       Token.Data.Edit = Edit;
 
-       Token.EditControl = Edit;
 
-     }
 
-     else
 
-     {
 
-       DebugAssert(Echo);
 
-       HistoryCombo = new THistoryComboBox(Form);
 
-       HistoryCombo->Parent = Form;
 
-       HistoryCombo->Text = Value;
 
-       HistoryCombo->SelectAll();
 
-       HistoryCombo->Items = History;
 
-       HistoryCombo->MaxLength = 255;
 
-       HistoryCombo->AutoComplete = false;
 
-       Token.EditControl = HistoryCombo;
 
-     }
 
-     Token.EditControl->Left = Prompt->Left;
 
-     Token.EditControl->Top = ScaleByTextHeightRunTime(Form, 30);
 
-     Token.EditControl->Width = ScaleByTextHeightRunTime(Form, 255);
 
-     Prompt->FocusControl = Token.EditControl;
 
-     int ButtonTop = ScaleByTextHeightRunTime(Form, 66);
 
-     int ButtonSpace = ScaleByTextHeightRunTime(Form, 6);
 
-     TButton * Button;
 
-     Button = new TButton(Form);
 
-     Button->Parent = Form;
 
-     Button->Caption = Vcl_Consts_SMsgDlgOK;
 
-     Button->ModalResult = mrOk;
 
-     Button->Default = True;
 
-     int ButtonHeight = ScaleByTextHeightRunTime(Button, Button->Height);
 
-     int ButtonWidth = ScaleByTextHeightRunTime(Button, Button->Width);
 
-     int ButtonsStart;
 
-     if (HelpKeyword.IsEmpty())
 
-     {
 
-       ButtonsStart = (Form->ClientWidth / 2) - ButtonWidth - (ButtonSpace / 2);
 
-     }
 
-     else
 
-     {
 
-       ButtonsStart = (Form->ClientWidth / 2) - (3 * ButtonWidth / 2) - ButtonSpace;
 
-     }
 
-     Button->SetBounds(ButtonsStart, ButtonTop, ButtonWidth, ButtonHeight);
 
-     Button = new TButton(Form);
 
-     Button->Parent = Form;
 
-     Button->Caption = Vcl_Consts_SMsgDlgCancel;
 
-     Button->ModalResult = mrCancel;
 
-     Button->Cancel = True;
 
-     Button->SetBounds(ButtonsStart + ButtonWidth + ButtonSpace, ButtonTop,
 
-       ButtonWidth, ButtonHeight);
 
-     if (!HelpKeyword.IsEmpty())
 
-     {
 
-       Button = new TButton(Form);
 
-       Button->Parent = Form;
 
-       Button->Caption = Vcl_Consts_SMsgDlgHelp;
 
-       Button->ModalResult = mrNone;
 
-       Button->SetBounds(ButtonsStart + 2 * (ButtonWidth + ButtonSpace), ButtonTop,
 
-         ButtonWidth, ButtonHeight);
 
-       TNotifyEvent OnClick;
 
-       ((TMethod*)&OnClick)->Code = InputDialogHelp;
 
-       Button->OnClick = OnClick;
 
-     }
 
-     UseSystemSettingsPost(Form);
 
-     if (Form->ShowModal() == DefaultResult(Form))
 
-     {
 
-       if (History != NULL)
 
-       {
 
-         HistoryCombo->SaveToHistory();
 
-         History->Assign(HistoryCombo->Items);
 
-         Value = HistoryCombo->Text;
 
-       }
 
-       else
 
-       {
 
-         Value = Edit->Text;
 
-       }
 
-       Result = true;
 
-     }
 
-   }
 
-   __finally
 
-   {
 
-     delete Form;
 
-   }
 
-   return Result;
 
- }
 
- //---------------------------------------------------------------------------
 
 
  |