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

Тут можно читать онлайн Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001 - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Советы по Delphi. Версия 1.4.3 от 1.1.2001
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    4/5. Голосов: 101
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

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

Советы по Delphi. Версия 1.4.3 от 1.1.2001 - описание и краткое содержание, автор Валентин Озеров, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

…начиная с 1001. Смотрите другие файлы…

Советы по Delphi. Версия 1.4.3 от 1.1.2001 - читать онлайн бесплатно полную версию (весь текст целиком)

Советы по Delphi. Версия 1.4.3 от 1.1.2001 - читать книгу онлайн бесплатно, автор Валентин Озеров
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

После создания оконных компонентов (т.е. тех компонентов, которые являются наследниками TWinControl), но еще перед тем, как они будут отображены, у них необходимо установить свойство Parent. Место установки свойства Parent является хорошим местом для установки других свойств экземпляра данного компонента, включая обработчики событий (например, Width, Color, OnClick).

Обработчики событий идентичны тем, которые определены в Инспекторе Объектов. Просто присвойте имени свойства компонента для события, которое вы хотите обработать, имя метода обработчика события, которое вы ожидаете. В примере 1, приведенном ниже, при нажатии на кнопку будет вызван метод с именем "myclick". Пожалуйста имейте в виду, что список входных параметров одного метода должен в точности соответствовать списку выходных параметров другого.

Пример 1:

varb1 : TButton;

begin

.

.

.

b1 := TButton.Create(Self);

withb1 do begin

Left := 20;

Top := 20;

Width := 90;

Height := 50;

Caption := 'моя кнопка';

Parent := Form1;

OnClick := MyClick; { процедура, определенная где-то еще }

end;

.

.

.

end;

В следующем примере показано как можно во время выполнения программы динамически создать кнопку, щелкая по другой кнопке, размещенной на форме во время проектирования (к этому моменту она уже создана). Это уже другой путь создания кнопки. Все способы рабочие. Также имейте в виду, что кнопки, не освобождаемые в данном коде, будут освобождаться при разрушении формы.

unitUnit1;

interface

usesSysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

typeTForm1 = class(TForm)

Button1: TButton;

procedureButton1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

proceduremyClick(Sender: TObject);

end;

varForm1: TForm1;

consti : integer = 0;

implementation

{$R *.DFM}

procedureTForm1.myClick(Sender: TObject);

begin

withSender asTButton doSelf.Caption := ClassName + ' ' + Name;

end;

procedureTForm1.Button1Click(Sender: TObject);

begin

withTButton.Create(self) do begin

Left := 20;

Top := 30 + i;

Width := 120;

Height := 40;

Name := 'ThisButton' + IntToStr(i);

Caption := 'There' + IntToStr(i);

OnClick := MyClick; { процедура, определенная где-то еще }

Parent := Form1;

end; {end with}

inc(i, 40);

end; {end button1.click}

end.

Решение для динамически создаваемых компонентов

Delphi 1

Предупреждение:

Если вы просто хотите во время выполнения приложения создавать компоненты необходимого вам типа, ознакомьтесь с файлом delphi\doc\VB2Delph.wri и следуйте его рекомендациям, лучшего способа изучения этой темы пока не существует. Данный совет повествует об использовании в Delphi RTTI.

Во-первых, в вашем приложении необходимо зарегистрировать все классы, экземпляры которых вы собираетесь в каком-то месте кода создавать. Сделать это можно с помощью функций RegisterClass(), RegisterClasses() и RegisterClassAlias().

Пример:

procedureTForm1.FormCreate(Sender: TObject);

begin

RegisterClasses([TButton, TEdit, TMemo, TLabel]);

end;

Это может навести вас на мысль об ограничениях, но Delphi строгий язык. Если вы хотите истинно динамическое создание объектов в слаботипизированной среде позднего связывания, используйте динамический язык типа Smalltalk. У меня есть подозрение, что Delphi использует этот механизм регистрации для регистрации всех компонентов в DCL при его запуске, позволяя этим самым создавать любой компонент во время разработки.

Создание компонентов. Используйте функцию FindClass() для получения ссылки на класс компонента, который вы хотите создать, и вызывайте его метод Create. Легко, не правда ли? В примере у меня имеется приведение типа SomeComponent к TControl, после чего я уже могу установить свойство parent (я могу делать это, поскольку я знаю, что все зарегистрированные мною классы являются потомками TControl). Для того, чтобы визуальный компонент появился на форме, вам необходимо установить свойство parent.

Пример:

procedureTForm1.CreateClick(Sender: TObject);

begin

SomeComponent:= TComponentClass(FindClass(ClassName.Text)).Create(Self);

(SomeComponent asTControl).Parent := Self;

end;

Теперь, когда вы имеете созданный компонент, как установить его свойства без использования самого большого блока case во вселенной? Очень просто: для получения информации о свойстве из структуры run-time type information (RTTI) используется функция GetPropInfo(), после чего для установления значений используется набор функций SetXXXXProp(). (Примечание: эти функции не задокументированы в файлах помощи Delphi. OO-программисты, как я понимаю, пользуются примерами из чужого кода и не изобретают свой велосипед.) У каждой функции SetXXXXProp() имеется функция-сателлит GetXXXXProp(), позволяющая узнать значения свойств объекта.

Пример:

procedureTForm1.SetPropertyClick(Sender: TObject);

var

PropType: PTypeInfo;

PropInfo: PPropInfo;

begin

PropInfo := GetPropInfo(SomeComponent.ClassInfo, PropertyName.Text);

PropType := PropInfo^.PropType;

casePropType^.Kind of

tkInteger:

SetOrdProp(SomeComponent, PropInfo, StrToInt(PropertyValue.Text));

tkChar:

SetOrdProp(SomeComponent, PropInfo, Ord(PropertyValue.Text[1]));

tkEnumeration:

SetOrdProp(SomeComponent, PropInfo, GetEnumValue(PropType, PropertyValue.Text));

tkFloat:

SetFloatProp(SomeComponent, PropInfo, StrToFloat(PropertyValue.Text));

tkString:

SetStrProp(SomeComponent, PropInfo, PropertyValue.Text);

end;

end;

Вы также можете установить значения свойств Set, Class и Method, но это будет немного сложнее. Немного позже я объясню как это можно сделать.

Это все. Вы проведете время с большой пользой, изучая исходный код VCL, и удивляясь, когда вы все там увидите собственными глазами.

Это прекрасный способ, но он имеет потенциал для массового злоупотребления. Необходимо понимание других путей достижения этой цели и выбор соответствующей техники при создании своих проектов в Delphi.

Как правильно создавать органы управления в runtime?

Nomadicсоветует:

Примерно таким образом (Описываем метод-обработчик события OnClick формы):

{ Example }

procedureTForm1.OnClick(ASender: TObject);

varbtnTemp: TButton;

begin

{ Creating }

btnTemp := TButton.Create(Self);

{ You can use 'with btnTemp do' operator below }

{ Inserting to Form }

btnTemp.Parent := Self;

{ Initialization }

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Валентин Озеров читать все книги автора по порядку

Валентин Озеров - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Советы по Delphi. Версия 1.4.3 от 1.1.2001 отзывы


Отзывы читателей о книге Советы по Delphi. Версия 1.4.3 от 1.1.2001, автор: Валентин Озеров. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x