Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2007.11.04;
Скачать: [xml.tar.bz2];

Вниз

Присвоить свойство из строки   Найти похожие ветки 

 
Den303 ©   (2007-08-21 11:54) [0]

Доброго времени суток!

Такой вопрос: есть набор свойств в текстовом виде (из xml), нужно задать свойства контрола из этого файла.
Короче, как задать свойство компонента, которое хранится в виде строки?

Рыл в сторону FindComponent, но он находит только контрол, а не его свойства.


 
Сергей М. ©   (2007-08-21 11:56) [1]


> находит только контрол, а не его свойства


а какие св-ва тебя интересуют  - приватные, защищенные, публичные, опубликованные ?


 
Den303 ©   (2007-08-21 12:03) [2]

Только публичные, грубо говоря создаю форму из xml, нужны такие вещи, как Top... Name... Сaption... Font.Style...


 
Сергей М. ©   (2007-08-21 12:05) [3]


> нужны такие вещи, как Top... Name... Сaption... Font.Style


Это не публичные, а опубликованные свойства.

Для работы с оными имеется набор функций в составе typinfo.pas


 
den303 ©   (2007-08-21 12:07) [4]

Спасибо за разъяснения.

Какие конкретно для моего вопроса функции, не подскажете?


 
den303 ©   (2007-08-21 12:11) [5]

Пробую присвоить свойство через SetPropValue - ругается на Invalid Typecast :-(


 
Сергей М. ©   (2007-08-21 12:11) [6]

SetPropValue()


 
Сергей М. ©   (2007-08-21 12:13) [7]


> ругается на Invalid Typecast


Ну а как не "ругаться", если ты, к примеру, целочисленному свойству пытаешься задать строковое значение ?)


 
den303 ©   (2007-08-21 12:13) [8]

Точнее, даже на Invalid Class Typecast. Не пойму, в чём дело


 
den303 ©   (2007-08-21 12:18) [9]

SetPropValue((sender as TControl),ObjectsValueList.Strings.Names[ObjectsValueList.Row-1],ObjectsValueList.Strings.ValueFromIndex[ObjectsValueList.Row-1]);

Sender - TLabel
ObjectsValueList - TValueListEditor,
ObjectsValueList.Strings.Names[ObjectsValueList.Row-1] - к примеру, меняю Top, в текстовом виде нормально (надпись "Top").
ObjectsValueList.Strings.ValueFromIndex[ObjectsValueList.Row-1] - значение, в текстовом виде нормально (надпись "50").


 
Юрий Зотов ©   (2007-08-21 12:18) [10]

> den303 ©   (21.08.07 12:13) [8]

1. Определяем тип свойства (см. TypInfo).
2. Преобразуем строку в значение этого типа.
3. Вызываем SetPropValue.


 
den303 ©   (2007-08-21 13:25) [11]

TNX за ответы.

Нашёл (после обеда сразу голова заработала :o) ) ошибку, оказывается, Sender был TValueListEditor, недосмотрел. Всё работает, пасиб


 
Den303 ©   (2007-08-21 14:30) [12]

Чтоб новую ветку не создавать, кину ещё вопросец:
Как disable"ить конкретную строку в ValueListEditor?


 
Сергей М. ©   (2007-08-21 15:38) [13]


> Как disable"ить конкретную строку в ValueListEditor?


Никак.


 
den303 ©   (2007-08-21 15:54) [14]


> Никак.

А как у Борланда в Object Inspector получилось? Тож так хочу :o)


 
Сергей М. ©   (2007-08-21 15:57) [15]


> den303 ©   (21.08.07 15:54) [14]


Скриншот покажи)..


 
den303 ©   (2007-08-21 16:05) [16]

>Сергей М. ©   (21.08.07 15:57) [15]

Мож выразился неправильно...
Короче, как в Object Inspector при щелчке на пункте Font, к примеру.


 
Сергей М. ©   (2007-08-21 16:08) [17]


> Короче, как в Object Inspector при щелчке на пункте Font,
>  к примеру.


И что там при этом заdisableно ?

Скриншот покажи ..


 
den303 ©   (2007-08-21 16:18) [18]


> Сергей М. ©   (21.08.07 16:08) [17]


Я же сказал, что, возможно, выразился неправильно.
Переформулирую вопрос: как сделать ReadOnly конкретную строку в ValueListEditor?


 
Сергей М. ©   (2007-08-21 16:18) [19]


> как сделать ReadOnly конкретную строку в ValueListEditor?
>
>


Никак.


 
den303 ©   (2007-08-21 16:26) [20]

>Сергей М. ©   (21.08.07 16:18) [19]

А в Борланде как сделали?


 
Сергей М. ©   (2007-08-21 16:29) [21]


> в Борланде как сделали?
>


Сделали ЧТО ?!

Скриншот покажи)..


 
den303 ©   (2007-08-21 16:47) [22]


> Сергей М. ©   (21.08.07 16:29) [21]


Создание скриншота вопроса den303 собственными руками. Инструкция.

1. Запускаете Delphi. К номеру версии просим не прикапываться; желательна 7 версия, как и в первоисточнике, хотя и не принципиально.
2. Помещаете Label со вкладки Standard на форму (не забудьте создать форму!).
3. Устанавливаете фокус (нет-нет, никакого отношения к фокусникам это не имеет, не стоит пытаться прикопаться к словам; это всего лишь фокус ввода) на Label (TLabel, Label1, как угодно).
4. В инспекторе объектов ставите фокус на Font. Пытаетесь ввести что нибудь. Не получается.
5. Инструкция закончена.
6. Внимание, вопрос: как сделать аналогичную функциональность? Хотя неважно, я уже клавиши перехватываю.


 
Юрий Зотов ©   (2007-08-21 16:57) [23]

> den303 ©   (21.08.07 16:47) [22]

1. Установить фокус ВВОДА на TLabel может все-таки ТОЛЬКО фокусник. К словам, конечно, прикапываться не стоит, но и употреблять ТЕРМИНЫ надо по их назначению. Или не употреблять их совсем, чтобы никого не путать.
:о)

2. В среде Delphi это делается с помощью редактора свойства (см. метод GetAttributes). Покольку в run-time среды Delphi у нас нет, то и такого способа тоже нет. Поэтому можно делать хоть перехватом клавиш, хоть как угодно еще.


 
Плохиш ©   (2007-08-21 17:01) [24]

ValueListEditor1.ItemProps[...].ReadOnly := true;


 
den303 ©   (2007-08-21 17:06) [25]


> Юрий Зотов ©   (21.08.07 16:57) [23]

ОК, спасибо за замечания. Я не знаю, как по другому назвать фокус на лейбле. Он же таки есть. Конечно не фокус ввода, но фокус :o)
И вообще, к словам прикапываться не есть гуд. Мы все не боги и делаем ошибки.


> Плохиш ©   (21.08.07 17:01) [24]

Это пробовал, но, по какой-то причине, всё равно происходят события OnKeyDown и OnSetEditText


 
Плохиш ©   (2007-08-21 17:16) [26]


> всё равно происходят события OnKeyDown и OnSetEditText

Какое это имеет отношение к куче букав из [22]?


 
den303 ©   (2007-08-21 17:17) [27]


> Плохиш ©   (21.08.07 17:16) [26]

А это я не Вам :o)


 
den303 ©   (2007-08-21 17:19) [28]


> Плохиш ©   (21.08.07 17:16) [26]

А это ([22]) я не Вам :o)


 
Плохиш ©   (2007-08-21 17:26) [29]


> den303 ©   (21.08.07 17:19) [28]

ItemProps...ReadOnly реализует функциональность, описанную в [22] и нигде не говориться, что указанные события не будут активизироваться. К тому же требование о запрещении OnKeyDown вообще отражает нелицеприятным образом знания требующего основ используемого языка программирования.


 
Юрий Зотов ©   (2007-08-21 18:07) [30]

> den303 ©   (21.08.07 17:06) [25]

> как по другому назвать фокус на лейбле

Это не фокус, это выделение. Лейбл ВЫДЕЛЕН (или ВЫБРАН) в дизайнере формы. В ToolsAPI оно так и называется - SelectionList (ведь выбрать можно и несколько компонентов одновременно).


 
Den303 ©   (2007-08-22 08:45) [31]

> Плохиш ©   (21.08.07 17:26) [29]

ОК, тогда следующий вопрос: в каком обработчике "моего Object Inspector" писАть функцию изменения объекта (к примеру, изменение Caption в реальном режиме времени)? Я пишу в OnKeyDown. Приходится ведь запрещать ручками изменение и проверять в обработчике события. Неужто нет родного свойства запрета изменений?

>Юрий Зотов ©   (21.08.07 18:07) [30]
ОК, спасибо ещё раз, буду знать :o)


 
Плохиш ©   (2007-08-22 11:22) [32]


> ОК, тогда следующий вопрос: в каком обработчике "моего Object
> Inspector" писАть функцию изменения объекта (к примеру,
> изменение Caption в реальном режиме времени)?

OnGetEditText  и OnSetEditText, если включена опция goEditing или
OnSelectCell, если эта опция выключена.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2007.11.04;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.52 MB
Время: 0.046 c
15-1191484124
Ломброзо
2007-10-04 11:48
2007.11.04
Есть ли в природе такой девайс?


4-1177749589
R.O.O.T
2007-04-28 12:39
2007.11.04
Управлять TMainMenu TPoupMenu удаленного приложения


2-1192101439
snake-as
2007-10-11 15:17
2007.11.04
Переместить объект на форме


2-1192289232
PiOnEr
2007-10-13 19:27
2007.11.04
Изменить Caption...


15-1191599936
Leonid Troyanovsky
2007-10-05 19:58
2007.11.04
Whois





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский