Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001

Скачивание начинается... Если скачивание не началось автоматически, пожалуйста нажмите на эту ссылку.
Жалоба
Напишите нам, и мы в срочном порядке примем меры.
Описание книги "Советы по Delphi. Версия 1.4.3 от 1.1.2001"
Описание и краткое содержание "Советы по Delphi. Версия 1.4.3 от 1.1.2001" читать бесплатно онлайн.
…начиная с 1001. Смотрите другие файлы…
Caption := 'Страница 2';
PageControl := P; // Назначаем Tab в Page Control
end; // with
T := TTabSheet.Create(P);
with T do begin
Visible := True; // Это необходимо, или форма не будет корректно перерисовываться
Caption := 'Страница 3';
PageControl := P; // Назначаем Tab в Page Control
end; // with
// Создаем 3 кнопки, 1 на страницу
with tbutton.create(application) do begin
Parent := P.Pages[0]; // «Указываем» кнопке родительскую страницу
Caption := 'Привет, страница 1';
Left := 0;
Top := 0;
end; // with
with tbutton.create(application) do begin
Parent := P.Pages[1]; // «Указываем» кнопке родительскую страницу
Caption := 'Привет, страница 2';
Left := 50;
Top := 50;
end; // with
with tbutton.create(application) do begin
Parent := P.Pages[2]; // «Указываем» кнопке родительскую страницу
Caption := 'Привет, страница 3';
Left := 100;
Top := 90;
end; // with
// Это должно быть сделано, или Tab первоначально не синхронизируется
// с правильной страницей. Только в случае, если у вас более чем одна страница.
P.ActivePage := P.Pages[1];
P.ActivePage := P.Pages[0]; // Реально показываемая страница
end;
Динамические PageControl/TabSheet II
В данном документе показана технология динамического добавления страниц компонента PageControl (объектов TTabSheet) к элементу управления Windows 95/NT PageControl (объект TPageControl). Оба этих объекта объявлены в модуле ComCtrls. Поэтому убедитесь в том, что ComCtrls указан в списке используемых модулей.
Как динамически создать PageControlПрежде, чем мы приступим к динамическому созданию страниц, давайте динамически создадим PageControl (если он еще не на форме). Это делается посредством вызова конструктора TPageControl Create с параметром owner, равным Self. Конструктор Create возвращает объектную ссылку на вновь созданный объект PageControl и назначает его переменной 'PageControl'. Вторым шагом будет установка свойства PageControl Parent в Self. Свойство Parent определяет где должен быть отображен новый PageControl; в нашем случае это будет сама форма. Вот кусок кода, демонстрирующий вышесказанное:
var
PageControl : TPageControl;
PageControl := TPageControl.Create(Self);
PageControl.Parent := Self;
Примечание: При разрушении формы разрушаются также PageControl и ее закладки, поскольку они принадлежат форме.
Как динамически создавать закладкиСуществует два основных способа добавления новых страниц к PageControl. Сначала вы должны динамически создать TTabSheet следующим образом:
var
TabSheet : TTabSheet;
TabSheet := TTabSheet.Create(Self);
Затем ему необходимо присвоить заголовок следующей командой:
TabSheet.Caption := 'Закладка 1';
И, наконец, самая важное действие заключается в том, что новой странице необходимо сообщить, какому объекту PageControl она принадлежит. Это делается с помощью присваивания свойством TTabSheet PageControl переменной-ссылки TPageControl, типа той, которую мы создали выше (PageControl). Вот кусок кода, демонстрирующий вышесказанное:
TabSheet.PageControl := PageControl;
Как динамически добавлять к страницам элементы управленияКлючевым моментом при создании и размещении элемента управления на странице TabSheet является назначение свойства Parent на переменную-ссылку класса TTabSheet. Вот пример:
var
Button : TButton;
Button := TButton.Create(Self);
Button.Caption := 'Кнопка 1';
Button.Parent := TabSheet;
Более подробно об объектах TPageControl и TTabSheet вы можете узнать в онлайн-документации, или посмотреть код файла ComCtrls.pas, расположенного в вашем каталоге ..\Delphi 2.0\SOURCE\VCL.
Полный код примера// Код использует форму с единственной на ней кнопкой.
unit DynamicTabSheetsUnit;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons;
type TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure TestMethod(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var Form1: TForm1;
implementation
uses ComCtrls;
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
PageControl : TPageControl;
TabSheet : TTabSheet;
begin
// Создаем PageControl
PageControl := TPageControl.Create(Self);
PageControl.Parent := Self;
// Создаем первую страницу и связываем ее с PageControl
TabSheet := TTabSheet.Create(Self);
TabSheet.Caption := 'Закладка 1';
TabSheet.PageControl := PageControl;
// Создаем первую страницу
with TButton.Create(Self) do begin
Caption := 'Кнопка 1';
OnClick := TestMethod; // Назначаем обработчик события
Parent := TabSheet;
end;
// Создаем вторую страницу и связываем ее с PageControl
TabSheet := TTabSheet.Create(Self);
TabSheet.Caption := ' Закладка 2';
TabSheet.PageControl := PageControl;
end;
procedure TForm1.TestMethod(Sender: TObject);
begin
ShowMessage('Привет');
end;
end.
Клавиши-акселераторы для TPageControl
Delphi 2
Тема: Создание акселераторов, работающих с TPageControl
TPageControl, расположенный на закладке Win95 палитры компонентов, в настоящий момент не может работать с акселераторами. Тем не менее, в наших силах создать потомок TPageControl, поддерживающий вышеназванную характеристику.
В приведенном ниже коде показана реализация такого компонента. Наследник TPageControl осуществляет захват и обработку сообщения CM_DIALOGCHAR. Это позволяет перехватывать комбинации клавиш, которые могут быть акселератороми для данной формы. Обработчик события CMDialogChar использует функцию IsAccel, которая позволяет определить, имеет ли отношение перехваченный код клавиш к акселератору одной из страниц TPageControl. В этом случае делаем страницу активной и передаем ей фокус.
unit tapage;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls;
type TAPageControl = class(TPageControl)
private
procedure CMDialogChar(var Msg: TCMDialogChar); message CM_DIALOGCHAR;
end;
procedure Register;
implementation
procedure TAPageControl.CMDialogChar(var Msg: TCMDialogChar);
var
i: Integer;
S: String;
begin
if Enabled then
for I := 0 to PageCount - 1 do
if IsAccel(Msg.CharCode, Pages[i].Caption) and Pages[I].TabVisible then begin
Msg.Result := 1;
ActivePage := Pages[I];
Change;
Exit; // выход из цикла.
end;
inherited;
end;
procedure Register;
begin
RegisterComponents('Test', [TAPageControl]);
end;
end.
Panel
Создание панелей во время работы приложения
Delphi 1
…я могу просто догадываться, не видя ваш код, но вы установили у панелей свойство parent? Чтобы отобразить элементы управления на вашей форме, вам НЕОБХОДИМО вставить в обработчик события формы OnCreate следующие две строки:
MyPanel := TPanel.Create(Self);
MyPanel.Parent := Self;
PopupMenu
Вызов контекстного меню в позиции курсора II
Delphi 1
…вызов popup-меню связан с координатами экрана. Координаты, получаемые в вашем обрабочике события, вероятно относятся к объекту, который создал это сообщение. Для преобразования координат вам необходимо воспользоваться функцией ClientToScreen.
Вот пример вызова контекстного меню, вызываемого при щелчке правой кнопкой мыши на узле TTreeView. Этот пример не в точности отвечает на ваш вопрос, но у меня нет желания расчитывать wParams прямо сейчас. Я думаю вы можете воспользоваться предложенной мною идеей и развить ее в нужном направлении.
Подписывайтесь на наши страницы в социальных сетях.
Будьте в курсе последних книжных новинок, комментируйте, обсуждайте. Мы ждём Вас!
Похожие книги на "Советы по Delphi. Версия 1.4.3 от 1.1.2001"
Книги похожие на "Советы по Delphi. Версия 1.4.3 от 1.1.2001" читать онлайн или скачать бесплатно полные версии.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Отзывы о "Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001"
Отзывы читателей о книге "Советы по Delphi. Версия 1.4.3 от 1.1.2001", комментарии и мнения людей о произведении.