OnPasswordRequired(Sender: TObject; const HeaderPassword: Boolean;
const FileName: WideString;out NewPassword: Ansistring; out Cancel: Boolean);
Я не уверен, в чем здесь вопрос... Это обработчик событий, и вы назначаете его так же, как и любой другой обработчик событий: либо дважды щелкнув событие OnPasswordRequired
в инспекторе объектов, либо подключив его через код:
implementation
procedure TForm1.FormCreate(Sender: TObject);
begin
RARComp.OnPasswordRequired := RARPasswordRequired;
end;
procedure TForm1.RARPasswordRequired(Sender: TObject;
const HeaderPassword: Boolean;
const FileName: WideString;
out NewPassword: Ansistring; out Cancel: Boolean);
begin
if HeaderPassword then // need whole archive password
NewPassword := YourWholeArchivePassword // provide whole archive password
else
// Need individual file password. If you have a separate password for
// each file, provide it as each file is provided in "filename" param.
if FileName = TheFilenameYouHavePasswordFor then
NewPassword := ThisFilesPassword
else
Cancel := True;
end;
Я понятия не имею, как будет называться компонент (я использовал RARComp
, но я не знаком с этим компонентом); замените его на то, что правильно. Наверняка есть предопределенный тип для события OnPasswordRequired
(например, TPasswordRequiredEvent
или что-то в этом роде); опять же, я не знаком с компонентом.
Чтобы объяснить: параметры out
, передаваемые обработчику событий, аналогичны параметрам var
, за исключением того, что их не нужно инициализировать перед передачей компонентом. Тот факт, что они out
, означает, что они являются выходными; ожидается, что вы присвоите им значения. С другой стороны, два параметра const
(HeaderPassword
и FileName
) не могут быть изменены вами; это значения, которые вы можете использовать при принятии решения о том, как установить два параметра, которые вам разрешено изменять. Sender
будет RARComp
или как там называется экземпляр вашего компонента; его можно привести к типу, если необходимо получить доступ к другой информации, используя такой синтаксис, как TRARComponent(Sender)
или (Sender as TRARComponent)
.
Опять же, я понятия не имею, какое правильное имя класса для этого компонента или как будет называться ваш экземпляр. Если имя класса компонента TRARComponent
в палитре компонентов IDE, и вы перетащите его на форму, он будет объявлен как RARComponent1: TRARComponent;
, и вы должны использовать имена RARComponent1
и TRARComponent(Sender)
, где это уместно.
person
Ken White
schedule
02.06.2011