#delphi #delphi-7
#delphi #delphi-7
Вопрос:
Я использую Delphi7 под Windows XP. Как бы мне добавить всплывающую кнопку «Удалить» в компонент Delphi TOpenPictureDialog? Есть ли какой-либо способ запустить диалоговое окно в конструктор, чтобы добавить кнопку и ее поведение?
Комментарии:
1. Взгляните на исходный код TOpenPictureDialog, и у вас есть довольно хороший пример того, как взломать обычный диалог!
2. Кроме того, пользователь может удалить выбранные изображения нажатием клавиши delete или из контекстного меню.
Ответ №1:
вы можете добавить новую кнопку в TOpenPictureDialog
, но не помещая диалоговое окно в конструктор, вы должны сделать это во время выполнения.
проверьте этот пример
procedure TForm1.FormCreate(Sender: TObject);
var
FDeleteButton : TSpeedButton;
FPreviewButton : TSpeedButton;
begin
FPreviewButton := TSpeedButton(OpenPictureDialog1.FindComponent('PreviewButton'));
FDeleteButton := TSpeedButton.Create(OpenPictureDialog1);
FDeleteButton.SetBounds(107, 1, 23, 22);
FDeleteButton.Parent := FPreviewButton.Parent;
FDeleteButton.NumGlyphs:=2;
FDeleteButton.Glyph.LoadFromResourceName(HInstance, 'BBABORT');
FDeleteButton.Name := 'DeleteButton';
FDeleteButton.OnClick := DeleteBtnClick;
end;
procedure TForm1.DeleteBtnClick(Sender: TObject);
begin
//here you must implement the delete logic
ShowMessage('Hello from delete button');
end;
и результатом является
Комментарии:
1. 1. Я не думаю, что я вообще мог бы попробовать это, потому что в Windows Vista / 7 и Delphi 2009
TOpenPictureDialog
это стандартное диалоговое окно Windows.2. Я думаю, что вы можете убедить TOpenPictureDialog вернуться к устаревшему диалогу, но это требует небольших усилий.
Ответ №2:
Вы можете написать свой «собственный» OpenDialog и унаследовать этот новый класс от TOpenPictureDialog. Существует (старый) бесплатный компонент с именем «PBOpenPreviewDialog», который делает именно это (из TOpenDialog), может быть, вы можете взять этот компонент в качестве примера?
Вы можете найти веб-страницу по адресу:http://bak-o-soft.dk/Delphi/PBFolderDialog.aspx
И ссылка для скачивания компонента здесь:http://bak-o-soft.dk/Download.asgx.ashx/Delphi/PBFolderDialog.zip
Комментарии:
1. 1 просто для компенсации снижения (хотя я не уверен насчет стороннего элемента управления). Лично я довольно «сыт по горло» (если вы простите мой французский) всеми анонимными голосованиями против SO. Вы не успеете и рта раскрыть, как получите отрицательный результат…
2. @Andreas с другой стороны, это не отвечает на вопрос. Голосование за это тоже не очень помогает.
3. Хорошо, я думаю, что оба варианта могут быть правильными. В следующий раз я постараюсь дать более полный ответ. Спасибо.