1. Главная страница » Компьютеры » Object inspector в delphi

Object inspector в delphi

Автор: | 16.12.2019

Инспектор Объектов (Object Inspector) обеспечивает простой и удобный интерфейс для изменения свойств объектов Delphi и управления событиями, на которые реагирует объект.

Окно Инспектора Объектов (рис.5) имеет две страницы. В верхней части окна имеется выпадающий список всех компонентов, размещенных на форме. В нем вы можете выбрать тот компонент, свойства и события которого вас интересуют.


рисунок 5

Страница свойств (Properties) Инспектора Объектов показывает свойства того объекта, который в данный момент выделен вами. Щелкните на окне пустой формы, и на странице свойств Инспектора Объектов вы сможете увидеть свойства формы. Вы можете изменять эти свойства. Например, измените свойство Caption (надпись) вашей формы, написав в нем «Моя форма», и вы увидите, что эта надпись появится в полосе заголовка вашей формы.

Если щелкнуть на некоторых свойствах, например, на свойстве Color (цвет), то справа от имени свойства откроется окно выпадающего списка. Нажав в нём на кнопочку со стрелкой вниз, вы можете увидеть список возможных значений свойства. Например, смените значение свойства Color с принятого по умолчанию clBtnFace (цвет поверхности кнопок) на clWindow (цвет окна). Вы увидите, что поверхность формы изменит свой цвет.

Рядом с некоторыми свойствами вы можете видеть знак плюс (см., например, свойство Borderlcons на рис.5). Это означает, что данное свойство является объектом, который в свою очередь имеет ряд свойств.

Найдите, например, свойство Font (шрифт). Рядом с ним вы увидите знак плюс. Щелкните на этом плюсе или сделайте двойной щелчок на свойстве Font. Вы увидите, что откроется таблица таких свойств, как Color (цвет), Height (высота), Name (имя шрифта) и др. Среди них вы увидите свойство Style (стиль), около которого тоже имеется знак плюс. Щелчок на этом плюсе или двойной щелчок на этом свойстве раскроет дополнительный список подсвойств, в котором вы можете, например, установить в true свойство fsBold (жирный). Кстати, для смены true на false и обратно в подобных булевых свойствах не обязательно выбирать значение из выпадающего списка. Достаточно сделать двойной щелчок на значении свойства, и оно изменится. После того, как вы просмотрели или изменили подсвойства, вы можете опять сделать двойной щелчок на головном свойстве или щелчок на знаке минус около него, и список подсвойств свернется.

Страница событий (Events) составляет вторую часть Инспектора Объектов. На ней указаны все события, на которые может реагировать выбранный объект. Например, если вам надо выполнить какие-то действия в момент создания формы (обычно это различные операции настройки), то вы должны выделить событие OnCreate. Рядом с именем этого события откроется окно с выпадающим списком. Если вы уже написали в своем приложении какие-то обработчики событий и хотите при событии OnCreate использовать один из них, вы можете выбрать необходимый обработчик из выпадающего списка. Если же вам надо написать новый обработчик, то сделайте двойной щелчок на пустом окне списка. Вы попадете в окно Редактора Кода, в котором увидите текст:

procedure TForm1.FormCreate(Sender: TObJect);
begin

end;

Курсор будет расположен в пустой строке между ключевыми словами begin и end. Увиденный вами код — это заготовка обработчика события, которую автоматически сделала Delphi. Вам остается только в промежутке между begin и end написать необходимые операторы.
Если вы сделали эти операции, то вернитесь в Инспектор Объектов, выделите в нём, например, событие OnActivate и нажмите в нем кнопку выпадающего списка. Вы увидите в нем введенный вами ранее обработчик события OnCreate. Если вам надо использовать тот же самый обработчик и в событии OnActivate, просто выберите его из списка. Таким образом вы м о жете избежать дублирования в программе одних и тех же фрагментов кода.

Пользуясь Инспектором Объектов, вы можете получить контекстную справку по свойствам или событиям. Для этого выделите в окне Инспектора Объектов интересующее вас свойство или событие и нажмите клавишу F1.

Начиная с Delphi 5, в Инспектор Объектов введена возможность фильтрации свойств и событий и возможность группировать их по категориям. Для того чтобы воспользоваться этими возможностями, щелкните в окне Инспектора Объектов правой кнопкой мыши. Во всплывшем меню вы можете выбрать раздел View. Вам будет показан ряд категорий свойств и событий. Около каждой категории имеется индикатор. Вы можете включить индикаторы только у некоторых категорий и тогда в Инспекторе Объектов вы увидите события и свойства только указанных категорий. Выбор раздела Toggle переключит видимость разделов: те, которые были видимы, станут невидимы и наоборот. Выбор раздела Аll сделает видимыми все свойства и события, а выбор раздела None сделает все события и свойства невидимыми. Внизу окна Инспектора Объектов указывается, сколько свойств или событий невидимо в данный момент.

В том же меню, всплывающем при щелчке правой кнопкой мыши в окне Инспектора Объектов, вы можете выбрать раздел Arrange и в нем установить одну из двух возможностей: by Name — упорядочить свойства и события в алфавитной последовательности их имен, или by Category — упорядочить их по категориям. При упорядочивании по категориям форма представления событий и свойств кардинально меняется. В окне отображаются категории с символами «+», при щелчке на которых раскрывается список элементов, относящихся к данной категории. При этом некоторые свойства могут попасть одновременно в несколько категорий. Но это не имеет значения: вы можете менять их значения в любой категории и они синхронно изменятся во всех остальных категориях.

Описанные возможности Инспектора Объектов по фильтрации и упорядочиванию информации существенно упрощают работу с трудно обозримым множеством свойств, присущих многим компонентам библиотеки.

Читайте также:  Nvidia geforce now активация

Очень полезной особенность. Инспектора Объектов в Delphi 7 и 6 является отображение компонентов, на которые имеются ссылки в данном компоненте. Тем, кто только начинает знакомиться с Delphi, это, может быть, не совсем понятно. Так что поясню. Дело в том, что одни компоненты часто ссылаются на другие, используемые для каких-то целей. Например, на форме обычно располагается компонент главного меню MainMenu, на который ссылается форма. А этот компонент, в свою очередь, ссылается на список изображений — компонент ImageList. И подобных ссылок на присоединенные компоненты и объекты в приложениях довольно много. В Инспекторе Объектов Delphi 7 и в, во-первых, свойства, в которых могут содержаться ссылки на другие компоненты или объекты, выделяются красным цветом. А главное — если в подобном свойстве действительно записана ссылка, то около этого свойства появляется символ "+". Если щелкнуть на нем, то раскроется список свойств присоединенного компонента. Эти свойства выделяются зеленым цветом, чтобы не путать их со свойствами самого компонента.

Таким образом, не выходя из окна Инспектора Объектов и не делая лишних движений, можно задать свойства целой цепочки присоединенных объектов. Очень удобно.
Присоединенные объекты присутствуют и на странице событий Инспектора Объектов. Таким образом, и обработчики событий цепочки присоединённых компонентов можно задавать, не выходя из окна Инспектора Объектов.

Всё, что представлено на этом сайте, копировать запрещено!

Есть в делфи ObjectInspector. Хочу сделать такой же для своих целей. Нет ли где случайно готовых исходников, которые можно творчески переработать? ) или из чего его лучше делать (нашел компонент TValueListEditor). Причем идея в том, чтобы сделать его в отдельной форме, а потом как то эту форму прилеплять к основной или влеплять в основную (как в делфи и сделано).

Т.е. требуется окно в котором будут отображаться свойства (колонки Property, Value). События не нужны. пока что. От типа значения должны зависеть свойсва колонки "Value". Т.е. если тип значения boolean, то в ячейке можно поставить только галку. Сами свойства, описания типов и значений хранятся в другом месте, нужен цивилизованный редактор их. Ищу добрых людей которые сэкономят мне пару дней жизни, которые мне придется самому делать кривую версию оного, и подарят ссылку на исходник ))

Погуглил ничего не нашел, кроме описания как пользоваться дельфийским. Может кто нить сказать что спросить у гугла хотя бы? ) или ссылку на чтонибудь подобное, чтобы было с чего начать


Вова ( 2013-03-05 03:49 ) [1]

мда, я даж нашел пример, только че то там 3 строчки ))


Ega23 © ( 2013-03-05 08:05 ) [2]


> сэкономят мне пару дней жизни

Бггггггг
Пару месяцев — не хошь? И то, еси ты достаточно квалифицирован для этого.


brother © ( 2013-03-05 09:26 ) [3]

писал подобное для визуального редактирования рекордов — бррр . ))


Inovet © ( 2013-03-05 09:40 ) [4]

> [2] Ega23 © (05.03.13 08:05)
> Пару месяцев — не хошь? И то, еси ты достаточно квалифицирован для этого.

Чё там делать? Кампаненту кинул на форму да и всё. Ты ссылку на кампаненту давай.


O’ShinW © ( 2013-03-05 09:58 ) [5]

см JEDI,
TJvInspector


O’ShinW © ( 2013-03-05 10:02 ) [6]


> Inovet © (05.03.13 09:40) [4]

именно так и получается 🙂

type
TForm1 = class(TForm)
jvnspctr1: TJvInspector;
btn1: TButton;
procedure btn1Click(Sender: TObject);
private < Private declarations >
public < Public declarations >
end;

var
Form1: TForm1;

procedure TForm1.btn1Click(Sender: TObject);
begin
jvnspctr1.InspectObject := btn1;
end;


Дмитрий С © ( 2013-03-05 15:11 ) [7]


> Ega23 © (05.03.13 08:05) [2]

За пару дней реально самому сделать.


Ega23 © ( 2013-03-05 15:15 ) [8]


> За пару дней реально самому сделать.

Сильно сомневаюсь.


брат Птибурдукова ( 2013-03-05 15:18 ) [9]

Ага, со всякими вложенными типами и множествами — ну прям пара дней.


Ega23 © ( 2013-03-05 15:29 ) [10]


> Ага, со всякими вложенными типами и множествами — ну прям
> пара дней.

Да просто отрисовка — уже гемор.


O’ShinW © ( 2013-03-05 16:22 ) [11]

на второй день бросил только бросил
когда подобное было нужно,

стал искать готовое
или готов был пересмотреть интерфейс.
Но нашел у джедаев


Ega23 © ( 2013-03-05 16:27 ) [12]


> на второй день бросил

вот-вот. Геморроя там — вагон и тележка.


Юрий Зотов © ( 2013-03-05 16:40 ) [13]

> Дмитрий С © (05.03.13 15:11) [7]

Да что там мелочиться-то? За пару часов. Вместе со всеми радакторами.


Rouse_ © ( 2013-03-05 19:27 ) [14]

На сколько я помню времязатраты по нашей реализации Object Inspector, который должен выглядеть один в один с 2010-ой дельфей с соответствующим функционалом ушло что-то в районе полутора месяцев, правда отображает все что угодно начиная от банальной поддержки RTTI и до кастомизации через собственные наборы свойств.
Такша задачка та еще..


Вова ( 2013-03-05 19:48 ) [15]

Пошел по пути JEDI ) пока безуспешно, потому что на рад 8.0 он не ставится, какого то там ему "System.Types.dcu" не хватает, говорят, что это из папки Program FilesEmbarcaderoRAD Studio9.0source
tlsys, а у меня 8.0 ) надо искать новый делфи (


Вова ( 2013-03-05 19:49 ) [16]

Читайте также:  365 Праздников на каждый день

та если не заморачиваться, то можно за 5 минут ) я уже даже сделал, правда вот ему абсолютно пофиг че ты в него вбиваешь, это не торт конечно )


Ega23 © ( 2013-03-05 19:54 ) [17]


> Rouse_ © (05.03.13 19:27) [14]
>
>ушло что-то в районе полутора месяцев

Угу. И это не считая редакторов свойств.


Юрий Зотов © ( 2013-03-05 20:03 ) [18]

> Ega23 © (05.03.13 19:54) [17]
> Rouse_ © (05.03.13 19:27) [14]

"Маленькую Delphi" я писал где-то полгода. И хотя это был не просто Object Inspector, а полная IDE, трудоемкость сабжа себе представляю. О днях там не может быть и речи, о месяцах надо говорить.


Вова ( 2013-03-05 20:39 ) [19]

а может кто нить скажет релиз JEDI который под Embarcadero RAD Studio XE пойдет? че то делфи геморней переставлять )


Вова ( 2013-03-05 20:41 ) [20]


Вова ( 2013-03-05 21:23 ) [21]

походу 2 дня только JEDI устанавливать ))


O’ShinW © ( 2013-03-05 21:28 ) [22]


> релиз JEDI который под Embarcadero RAD Studio XE пойдет?

бери последний-предпоследний, читай аннотацию
если нет, значит .. нет 🙂

Вообще, этот ОИ стоил еще пару дней, под допиливание
И что самое обидное — не юзается практически. (у меня логи велись месяца два, куда юзеры тыкают и что набирают)
Потом восстанавливал действия, смотрел.

Не юзают, практически, вообще.
То ли не так сделал, то ли кнопки "сделать зашибись" нет 🙂
Кастомизация не прижилась. Требуется , наоборот, нечто простое. Аля
>кнопки "сделать зашибись"


O’ShinW © ( 2013-03-05 21:29 ) [23]


> походу 2 дня только JEDI устанавливать ))
>

с фига ли?!
У меня был релиз (завтра скажу какой, не у компа пока) там 3 батника надо было запустить — и все 🙂


Юрий Зотов © ( 2013-03-05 21:32 ) [24]

> O"ShinW © (05.03.13 21:28) [22]
> Не юзают, практически, вообще.

Аналогично. "Маленькую Delphi" тоже юзали немногие. Но зато те, кто юзали — тащились. Похоже, и у твоих юзеров то же самое.


Вова ( 2013-03-05 22:48 ) [25]


> с фига ли?!
> У меня был релиз (завтра скажу какой, не у компа пока) там
> 3 батника надо было запустить — и все 🙂

ну я начал с 3.47 закончилось это тем, что jcl ставится, а jvcl вылетает на старте с той ошибкой нехватающего файла. потом 3.40 ни ставится ни первая ни вторая ) попробовал первую от 3.47 вторая все равно не поставилась, но процесс шел, потом на чемто заткнулось. Ставил install.batom все. Ща ставлю XE2 ))


Rouse_ © ( 2013-03-05 23:28 ) [26]


> Юрий Зотов © (05.03.13 21:32) [24]
> Аналогично. "Маленькую Delphi" тоже юзали немногие. Но зато
> те, кто юзали — тащились. Похоже, и у твоих юзеров то же
> самое.

Я юзал у Зотыча дома, подтверждаю работает и достаточно сильно впечатляет.
ЗЫ: Юрч, тебе посвящается: http://alexander-bagel.blogspot.ru/2013/03/draw-over-twincontrol.html
как и просил все инсинуирующие связи с убрал 🙂


Вова ( 2013-03-06 00:08 ) [27]

на xe2 3.47 встало, осталось только понять как его TJvInspector курить )


Германн © ( 2013-03-06 02:28 ) [28]


> Юрий Зотов © (05.03.13 21:32) [24]
>
> > O"ShinW © (05.03.13 21:28) [22]
> > Не юзают, практически, вообще.
>
> Аналогично.

Наверно у многих были такие наработки, которые предполагались быть широко востребованы. Но в итоге оказались мало кому нужными.


brother © ( 2013-03-06 07:08 ) [29]

[26] интересно, но какой практический смысл рисовать поверх контролов?


Rouse_ © ( 2013-03-06 10:20 ) [30]


brother © ( 2013-03-06 10:37 ) [31]


O’ShinW © ( 2013-03-06 11:09 ) [32]

там же прочитал 🙂


> Юрий Зотов © (05.03.13 21:32) [24]

Твое бы посмотрел завсегда
Показать можно?


Юрий Зотов © ( 2013-03-06 11:51 ) [33]

> O"ShinW © (06.03.13 11:09) [32]

Для этого придется инсталлировать здоровенное приложение, BDE, Interbase и две БД. Да и со сборкой дистрибутива, скорее всего, возникнут проблемы, потому что многое вспоминать придется.

Если хочешь, могу скинуть скриншоты (хотя я их уже выкладывал, поэтому проверь — может, они у тебя уже и так есть).

понедельник, 28 июля 2008 г.

Свойства объектов

Итак, как вы уже знаете, язык который мы изучаем называется Object Pascal. И это значит, что вся работа сводится на управление этими самыми объектами.

Каждый компонент, который вы помещаете на форму, имеет свое отражение в окне Инспектора Объектов (Object Inspector). Как вы помните, Object Inspector имеет две “странички” — “Properties” (Свойства) и “Events” (События). Создание программы в Delphi сводится к “нанесению” компонентов на форму (которая, кстати, также является компонентом) и настройке взаимодействия между ними путем:

1. изменения значения свойств этих компонентов.

2. написания адекватных реакций на события.

Как Вы уже успели, наверное, заметить, свойство является важным атрибутом компонента. Для пользователя (программиста) свойство выглядит как простое поле какой-либо структуры, содержащее некоторое значение. Однако, в отличие от “просто” поля, любое изменение значения некоторого свойства любого компонента сразу же приводит к изменению визуального представления этого компонента. Свойства служат двум главным целям. Во-первых, они определяют внешний вид формы или компонента. А во-вторых, свойства определяет поведение формы или компонента.

Читайте также:  Geforce gtx 680 zotac

Существует несколько типов свойств, в зависимости от их “природы”, т.е. внутреннего устройства.

Простые свойства — это те, значения которых являются числами или строками. Например, свойства Left и Top принимают целые значения, определяющие положение левого верхнего угла компонента или формы. Свойства Caption и Name (из примера прошлого урока) представляют собой строки и определяют заголовок и имя компонента или формы.

Перечислимые свойства — это те, которые могут принимать значения из предопределенного набора (списка). Простейший пример — это свойство типа Boolean, которое может принимать значения True или False (истинно или ложно). Например свойство Enabled для кнопки Button будет означать, может ли пользователь или нет нажать на нее. Если установлено False, то кнопка становится серой, недоступной. Т.е. свойство кнопки Enabled может принитать только два значения и не более.

Вложенные свойства — это те, которые поддерживают вложенные значения (или объекты). Object Inspector изображает знак “+ ” слева от названия таких свойств. Имеется два вида таких свойств: множества и комбинированные значения. Object Inspector изображает множества в квадратных скобках. Если множество пусто, оно отображается как [] . Установки для вложенных свойств вида “множество” обычно имеют значения типа Boolean . Наиболее распространенным примером такого свойства является свойство Style с вложенным множеством булевых значений. Комбинированные значения отображаются в Инспекторе Объектов как коллекция некоторых величин, каждый со своим типом данных. Некоторые свойства, например, Font , для изменения своих значений имеют возможность вызвать диалоговое окно. Для этого достаточно щелкнуть маленькую кнопку с тремя точками в правой части строки Инспектора Объектов, показывающей данное свойство.

Delphi позволяет легко манипулировать свойствами компонента как в режиме проектирования, так и в режиме выполнения программы соответственно программно.

В режиме проектирования манипулирование свойствами осуществляется с помощью Дизайнера Форм (Forms Designer или как говорилось выше проектировщик форм) или, как Вы уже видели, на страничке “Properties” Инспектора Объектов. Например, для того чтобы изменить свойства Height (высоту) и Width (ширину) кнопки, достаточно “зацепить” мышкой за любой ее угол и раздвинуть до нужного представления. Того же результата можно добиться, просто подставив новые значения свойств Height и Width в окне Object Inspector.

С другой стороны, в режиме выполнения пользователь (программист) имеет возможность не только манипулировать всеми свойствами, отображаемыми в Инспекторе Объектов, но и управлять более обширным их списком. В следующем разделе мы рассмотрим, как это делается.

Управление свойствами визуальных компонентов в режиме выполнения

Все изменения значений свойств компонент в режиме выполнения должны осуществляться путем прямой записи строк кода на языке Паскаль. В режиме выполнения невозможно использовать Object Inspector. Хотя добраться до него возможно и возможно поменять его, но изменения вступят в силу только после перекомпиляции проекта.

Компиляция — это процесс перевода вашей программы в машинный код. В данном случае это процесс создания исполняемого EXE файла.

Однако, доступ к свойствам компонентов довольно легко получить программным путем. Все, что вы должны сделать для изменения какого-либо свойства — это написать простую строчку кода в редакторе кода аналогично следующей:

где Component — интересующий вас компонент. Например Button1. Название компонента указано в свойстве Name.

Вышеприведенная строка устанавливает ширину (Width) компонента в значение 40 пикселей. Если свойство Width компонента еще не было равно 40 к моменту выполнения данной строки программы, Вы увидите, как компонент визуально изменит свою ширину.

Естественно, что изменить просто так свойство нельзя. Его надо изменять только в ответ на какое-либо событие. Например на клик мышкой по кнопке. Для этого создается одноименная процедура обработки события. Рассмотрим пример.

Разместим в проектировщике форм Form1 кнопку Button1. Напишем реакцию на событие нажатия по этой кнопке.

Запускаем Delphi. В меню File выбираем New Application. Открывается новый проект. В проектировщике форм устанавливаем кнопку Button. Выделяем ее одинарным щелчком мыши. Здесь и далее для того, чтобы добраться до свойств необходимого объекта, нужно выделить его. Свойства выделенного немедленно отображаются в Object Inspector. Установим свойство Width для кнопки Button1 равное 200. Кнопка немедленно расширяется на заданную ширину. Теперь установим другую ширину для этой же кнопки, но уже программно. Переключаем Object Inspector на страницу Events (события). Мы видим полный перечень доступных во время выполнения событий для этой кнопки. Нас интересует реакция на событие нажатия On Click. Необходимо создать процедуру обработки этого нажатия, иначе это действие будет проигнорировано программой. Дважды щелкаем мышкой в поле, правее надписи On Click или нажимаем на Ctrl+Enter. Delphi автоматически создает заголовок процедуры обработки события.

procedure TForm1.Button1Click(Sender: TObject);
begin

end;
Курсор установлен между операторными скобками begin и end. Это означает, что весь текст программы, относящийся к реакции на данное событие должно быть размещено только между ними.

Запускаем программу на выполнение (F9). Смотрим на результат своей работы.

Object Inspector является удобным способом выполнения в режиме проектирования того, что может быть осуществлено программным путем в режиме выполнения. Заданные свойства объектов считаются начальными и присутствуют на момент запуска программы. Более того, как уже было сказано выше, у компонента могут быть свойства, не отображаемые в окне Инспектора Объектов, которые доступны только в момент выполнения программы.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

code