Как мне поместить кнопку (во время выполнения программы) на
страницу TabbedNoteBook?
procedure TForm1.Button1Click(Sender: TObject);
var
Button2:Tbutton;
begin
button2:=tbutton.create(self);
button2.parent:=TabbedNotebook1.Pages.Object[0] as TTabPage;
button2.setbounds(30,30,60,30);
end;
Here's the translation of the content into Russian:
Что за отличный вопрос!
Код, который вы предоставили, почти корректен, но есть маленькая проблема с тем, как вы создаете и позиционируете новый кнопку.
Вот что происходит:
Вы создаете новую инстанцию TButton с помощью метода Create.
Вы устанавливаете родителя кнопки в первую страницу TabbedNotebook.
Вы устанавливаете границы (позицию и размер) кнопки с помощью метода SetBounds.
Проблема заключается в том, что когда вы вызываете SetBounds, она устанавливает позицию и размер кнопки относительно ее родительского контрола, который в этом случае - страница внутри TabbedNotebook. Однако, поскольку страница сама не имеет фиксированной ширины или высоты (она управляется TabbedNotebook), установка границ в этом виде не будет работать так, как ожидалось.
Чтобы исправить это, вы можете использовать свойства ClientWidth и ClientHeight страницы для расчета актуальной позиции, где вы хотите разместить кнопку. Вот обновленная версия вашего кода:
procedure TForm1.Button1Click(Sender: TObject);
var
Button2: TButton;
begin
Button2 := TButton.Create(self);
Button2.Parent := TabbedNotebook1.Pages[0] as TTabPage;
// Получаем клиентскую ширину и высоту страницы
var PageWidth, PageHeight: Integer;
PageWidth := (TabbedNotebook1.Pages[0] as TTabPage).ClientWidth;
PageHeight := (TabbedNotebook1.Pages[0] as TTabPage).ClientHeight;
// Устанавливаем позицию и размер кнопки
Button2.SetBounds(30, 30, 60, 30);
end;
В этом обновленном коде мы сначала получаем клиентскую ширину и высоту страницы с помощью свойств ClientWidth и ClientHeight. Затем, когда устанавливаем границы кнопки, мы используем эти значения для расчета актуальной позиции, где мы хотим разместить кнопку.
Обратите внимание, что вы можете изменять значения, использованные в методе SetBounds (например, 30, 30, 60 и 30), чтобы изменить позицию и размер кнопки по мере необходимости.
В статье рассматривается создание объектов динамически на страницах TabbedNoteBook 2, а также пример кода на Delphi, который демонстрирует добавление кнопки на страницу при выполнении программы.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.