:: Visual Foxpro, Foxpro for DOS
Как можно воспользоваться описанием переменной для Thisform.Command1.ToolTipText ?
greek_fire
Автор

Сообщений: 20
Дата регистрации: 10.11.2009
У меня не получилось найти , как можно воспользоваться описанием переменной для Thisform.Command1.ToolTipText?
Это можно как бы обойти, что я сделал, но как то не уверен, что это не криво.
Ну должно быть у Visual Foxpro соответствующие инструменты
Описание проблемы.
Есть метод AddProperty, который добавляет объекту новое свойство:
Object.AddProperty(cPropertyName [, eNewValue [, nVisibility [, cDescription]]])
Например:
Thisform.AddProperty('_b','+',1,'Любой текст. Описание нового свойства,ограничено 255 символами. Например Метка на задвоенные коды')

Читаем:
s1=Thisform._b && Получаем значение '+'
s2= TYPE('Thisform._b') && Получаем значение 'C'
Остались два параметра nVisibility и cDescription

Как можно воспользоваться уже существующим описанием переменной например для Thisform.Command1.ToolTipText, а не дублировать ?
Например условно
s4=description
а не
s4='Любой текст. Описание нового свойства,ограничено 255 символами.Например Метка на задвоенные коды')
Соответственно
s3=nVisibility


------------------
Ratings: 0 negative/0 positive
Re: Как можно воспользоваться описанием переменной для Thisform.Command1.ToolTipText ?
akvvohinc

Сообщений: 4257
Откуда: Москва
Дата регистрации: 11.11.2008
greek_fire
Остались два параметра nVisibility и cDescription
Если верить Help, то эти 2 параметра нельзя использовать в Run-Time.
Попробуйте, например, задать nVisibility отличным от 1.

Цитата:
Как можно воспользоваться уже существующим описанием переменной например для Thisform.Command1.ToolTipText, а не дублировать ?
Например условно
s4=description
Насколько я понимаю, Description, который задается для свойства в Design-time, не для чтения в Run-time.
Конечно, вы можете его прочитать, открыв файл формы как таблицу - его можно найти в поле Reserved3 в записи, относящейся к объекту, которому вы добавили это свойство (если такой способ не считаете извращением).
---------

Но я не понял главное - какая связь между ToolTipText кнопки и добавляемым на форму свойством.
Но даже если такая связь зачем-то должна быть, то что мешает задавать всё, что нужно, через значение свойства?



Исправлено 2 раз(а). Последнее : akvvohinc, 19.12.22 09:41
Ratings: 0 negative/0 positive
Re: Как можно воспользоваться описанием переменной для Thisform.Command1.ToolTipText ?
akvvohinc

Сообщений: 4257
Откуда: Москва
Дата регистрации: 11.11.2008
Хотя вот сейчас попробовал - если nVisibility ставить всегда 1, то Description принимается в метод AddProperty.
------
Но в любом случае вы можете в качестве свойства использовать массив, в элементы которого и записывать Value, Visibility и Description (и ещё много чего, если требуется).
Тогда, видимо, и получится то, что вам было нужно:
Цитата:
Как можно воспользоваться уже существующим описанием переменной
то есть один раз задали Description в привязке к свойству, а затем пользуетесь, когда требуется. Например:
thisform.property1[3]



Исправлено 3 раз(а). Последнее : akvvohinc, 19.12.22 10:28
Ratings: 0 negative/0 positive
Re: Как можно воспользоваться описанием переменной для Thisform.Command1.ToolTipText ?
greek_fire
Автор

Сообщений: 20
Дата регистрации: 10.11.2009
В любом случае спасибо. Я не увидел пока решение, и вот почему.

"[quote akvvohinc]Хотя вот сейчас попробовал - если nVisibility ставить всегда 1, то Description принимается в метод AddProperty."
------

Description конечно принимается. И что с того, что с ним делать и зачем тогда ввели, непонятно. Я думаю, что есть функция, которая возвращает это значение. В Хелпе и где только мог, не нашел.

"Но в любом случае вы можете в качестве свойства использовать массив, в элементы которого и записывать Value, Visibility и Description (и ещё много чего, если требуется)."

Вот что получается, создаем переменную методом ThisForm.AddProperty и еще плюс одну переменную да еще не просто переменную, а целый массив для этой же переменной. Я этого делать не буду. Мне интересно одна переменная.

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

Ну конечно сервис , для себя, что все переменные подписаны, и для пользователя, при наведении курсора на ThisForm.Text1.ToolTipText, ThisForm.Combo1.ToolTipText, ThisForm.Text1.ToolTipText. Ведь в любом случае в результате выбора значение присваивается переменной. Мен удобно описание этого значение взять как значение Description этой же переменой.
По этому спросил, может кто знает.
Ratings: 0 negative/0 positive
Re: Как можно воспользоваться описанием переменной для Thisform.Command1.ToolTipText ?
akvvohinc

Сообщений: 4257
Откуда: Москва
Дата регистрации: 11.11.2008
Цитата:
Я думаю, что есть функция, которая возвращает это значение.
Тогда вам придётся искать помощника, который думает так же, и искать вместе.
А раз Help вы уже проштудировали, то... не знаю даже, где она может быть зарыта.

А вообще странно, что фраза в Help Available only at design-time вас не наводит ни на какие мысли.
Меня, например, она убеждает в том, что в Run-time оно (описание) Not Available, иначе зачем это уточнение в Help? Как вы себе это объясняете?

Цитата:
Вот что получается, создаем переменную методом ThisForm.AddProperty и еще плюс одну переменную да еще не просто переменную, а целый массив для этой же переменной. Я этого делать не буду. Мне интересно одна переменная.
Методом AddProperty вы создаете не переменную, а свойство.
Созданное методом AddProperty свойство в Фоксе представляет собой (может хранить) лишь скалярное значение или массив значений (если я ошибаюсь, то приведите пример свойства иного рода.)
А поэтому если вам требуется хранить и значение, и описание, но под одним именем, то вам подойдёт лишь массив.

Цитата:
Мне интересно одна переменная.
Если вам интересны именно "шашечки", а не "ехать", то вы можете сохранить в скалярном свойстве любое количество значений через разделители (или всё-таки сделать свойство-массив). Ну, и написать UDF, которая будет возвращать любое из сохраненных в свойстве значений.
---------

Ну, а для любителей экзотики - с VFP 6 появилась возможность в Run-time пользоваться методами свойств WriteExpression() и ReadExpression().
С их помощью можно записать для свойства некоторое выражение, которое вы можете использовать для хранения "описания свойства", например:
this.AddProperty('Prop1') && создали свойство
this.WriteExpression('Prop1',["Описание свойства"]) && записали выражение для свойства
this.Prop1 = 105.23 && присвоили значение (надо делать после WriteExpression, так как он "нулит" значение свойства)
Теперь, имея, как вы и заказывали, "ровно одну переменную" с именем Prop1, вы можете получать её значение:
? this.Prop1
А используя метод ReadExpression() (вы хотели функцию - вот она!), - описание свойства:
? EVAL(SUBSTR(this.ReadExpression('Prop1'),2)) && убираем символ "=", добавляющийся автоматически в начало выражения

Можно сделать и чуть иначе:
this.AddProperty('Prop1') && создали свойство
this.AddProperty('Prop1',105.23,1,["Описание свойства"]) && на втором проходе заносим в него значение и описание
? this.Prop1
? EVAL(SUBSTR(this.ReadExpression('Prop1'),2))

При этом метод AddProperty:
LPARAMETERS cPropertyName, eNewValue, nVisiblity, cDescription
IF TYPE('this.'+cPropertyName)!='U'
this.WriteExpression(cPropertyName,cDescription)
ENDIF
Ratings: 0 negative/0 positive
Re: Как можно воспользоваться описанием переменной для Thisform.Command1.ToolTipText ?
akvvohinc

Сообщений: 4257
Откуда: Москва
Дата регистрации: 11.11.2008
greek_fire
Ну конечно сервис , для себя, что все переменные подписаны, и для пользователя, при наведении курсора на ThisForm.Text1.ToolTipText, ThisForm.Combo1.ToolTipText, ThisForm.Text1.ToolTipText.
Если честно, то яснее не стало.
О каких подписанных переменных речь, и при чем здесь пользователь, наводящий курсор на ToolTipText?
Всегда полагал, что ToolTipText - текст, появляющийся при наведении на некоторый объект, то есть подсказка. Так вы хотите иметь описание для подсказки, то есть подсказка к подсказке?

Если всё же хотите, чтоб я что-то понял, то приведите пример использования описания свойства в своем приложении.
Предположим, вы создали свойство, имеющее значение и описание.
Что дальше? Как и для каких целей значение и описание будут использоваться?

Почему бы просто не создать объект на основе Empty, закинув в него все необходимые вам свойства?



Исправлено 1 раз(а). Последнее : akvvohinc, 21.12.22 08:38
Ratings: 0 negative/0 positive
Re: Как можно воспользоваться описанием переменной для Thisform.Command1.ToolTipText ?
of63

Сообщений: 25406
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Тоже не понял...

""
Есть метод AddProperty, который добавляет объекту новое свойство:
Object.AddProperty(cPropertyName [, eNewValue [, nVisibility [, cDescription]]])
Например:
Thisform.AddProperty('_b','+',1,'Любой текст. Описание нового свойства,ограничено 255 символами. Например Метка на задвоенные коды')

Читаем:
s1=Thisform._b && Получаем значение '+'
s2= TYPE('Thisform._b') && Получаем значение 'C'
Остались два параметра nVisibility и cDescription

Ну, можно прочитать и свойства элемента обьекта "nVisibility и cDescription", в ... как ее... GETPEMSTATUS, но зачем? Как всегда вопрос: спроси то "что надо", а не "правильно ли я делаю это так". Есть наработки, "нарративы" (модное слово, суть оценка своей и чужой оценке предмета). Пока мы не поймем желания (видеоэффекта, или неведомой тонкости храниения инфы в AddProperty, или Фоксового ограничения на Caption в 255 символов, и ок 4кб в ТТТ, вроде), то и мало что сможем сказать
Ratings: 0 negative/0 positive
Re: Как можно воспользоваться описанием переменной для Thisform.Command1.ToolTipText ?
akvvohinc

Сообщений: 4257
Откуда: Москва
Дата регистрации: 11.11.2008
of63
Ну, можно прочитать и свойства элемента обьекта "nVisibility и cDescription", в ... как ее... GETPEMSTATUS, но зачем?
Всё по-порядку - ты напиши, как прочитать Description свойства, а потом ТС объяснит тебе, зачем ему это нужно.

PS
cDescription - это не "свойство элемента объекта", а атрибут свойства объекта (относится к Property наряду с его значением).
Ratings: 0 negative/0 positive
Re: Как можно воспользоваться описанием переменной для Thisform.Command1.ToolTipText ?
of63

Сообщений: 25406
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Я верю в фокс, и то, что записали в обьект, то можно и считать обратно значение. Это не так, бывает, у хулоруких организаторов ЯП... Если это не так, то я напрягаюсь...

cDescription - сам бы взяд, и разобрался с 4м необязатенльным параметрм AddProp, и нам бы рассказал, )



Исправлено 1 раз(а). Последнее : of63, 22.12.22 22:37
Ratings: 0 negative/0 positive
Re: Как можно воспользоваться описанием переменной для Thisform.Command1.ToolTipText ?
of63

Сообщений: 25406
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
akvvohinc
of63
Ну, можно прочитать и свойства элемента обьекта "nVisibility и cDescription", в ... как ее... GETPEMSTATUS, но зачем?
Всё по-порядку - ты напиши, как прочитать Description свойства, а потом ТС объяснит тебе, зачем ему это нужно.

PS
cDescription - это не "свойство элемента объекта", а атрибут свойства объекта (относится к Property наряду с его значением).

Конкретизируй
Доб, в смысле - можно ли его прочитать,изменнить?



Исправлено 1 раз(а). Последнее : of63, 22.12.22 22:46
Ratings: 0 negative/0 positive
Re: Как можно воспользоваться описанием переменной для Thisform.Command1.ToolTipText ?
akvvohinc

Сообщений: 4257
Откуда: Москва
Дата регистрации: 11.11.2008
Цитата:
Я верю в фокс, и то, что записали в обьект, то можно и считать обратно значение.
Метод Addproperty создает свойство объекта, а не объект, а Description - не является значением этого свойства.
Цитата:
Конкретизируй
Доб, в смысле - можно ли его прочитать, изменить?
Тебе виднее - ты же написал, что можно прочитать и свойства элемента обьекта "nVisibility и cDescription"
Я лишь хотел узнать, как именно это можно сделать.
Ratings: 0 negative/0 positive
Re: Как можно воспользоваться описанием переменной для Thisform.Command1.ToolTipText ?
of63

Сообщений: 25406
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
> Object.AddProperty(cPropertyName [, eNewValue [, nVisibility [, cDescription]]])
из этого

Веря в разрабов фокса (и в их веру в физику), то они должны дать возможность не только записать, но и прочитать, "симметрия" операций, типа...... Как SET PRINTER, и SET("PRINTER", ...) )



Исправлено 1 раз(а). Последнее : of63, 23.12.22 01:03
Ratings: 0 negative/0 positive
Re: Как можно воспользоваться описанием переменной для Thisform.Command1.ToolTipText ?
akvvohinc

Сообщений: 4257
Откуда: Москва
Дата регистрации: 11.11.2008
of63
Веря в разрабов фокса (и в их веру в физику), то они должны дать возможность не только записать, но и прочитать
Простой и аналогичный (по крайней мере, для nVisibility) пример:
LOCAL varname
Команда создает переменную с Visibility = Local. Она, так же как и свойство, может хранить скалярное значение или массив значений.
Какая (обратная) функция дает возможность узнать (прочитать) Visibility этой переменной?

И три "сопутствующих" вопроса к разрабам Фокса, в которых ты так веришь:
1) почему при создании Property функцией ADDPROPERTY(), в отличие от метода AddProperty, нет возможности задать Visibility и Description свойства?
2) почему создание Property методом AddProperty, в отличие от функции ADDPROPERTY(), возможно не для всех объектов?
3) почему при создании переменных, в отличие от свойств, создаваемых методом AddProperty, нельзя указать Description?
Ratings: 0 negative/0 positive
Re: Как можно воспользоваться описанием переменной для Thisform.Command1.ToolTipText ?
PaulWist

Сообщений: 14659
Дата регистрации: 01.04.2004
akvvohinc
LOCAL varname
Команда создает переменную с Visibility = Local. Она, так же как и свойство, может хранить скалярное значение или массив значений.
Какая (обратная) функция дает возможность узнать (прочитать) Visibility этой переменной?

Если понял о чём речь, то Type/VarType


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Как можно воспользоваться описанием переменной для Thisform.Command1.ToolTipText ?
akvvohinc

Сообщений: 4257
Откуда: Москва
Дата регистрации: 11.11.2008
PaulWist
Если понял о чём речь, то Type/VarType
Нет, Visibility - это Local, Private и Public.

Для Property это (из Help):
nVisibility
Specifies the visibility of the new property. Available for use at design-time, however, a value of 1 can be specified at runtime.

nVisibility  Visibility
     1         Public
     2         Protected
     3         Hidden



Исправлено 1 раз(а). Последнее : akvvohinc, 23.12.22 09:18
Ratings: 0 negative/0 positive
Re: Как можно воспользоваться описанием переменной для Thisform.Command1.ToolTipText ?
PaulWist

Сообщений: 14659
Дата регистрации: 01.04.2004
Ааа, только list memory приходит в голову.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Как можно воспользоваться описанием переменной для Thisform.Command1.ToolTipText ?
akvvohinc

Сообщений: 4257
Откуда: Москва
Дата регистрации: 11.11.2008
Ты и Олег натолкнули меня на мысль - проверить функцию AMEMBERS().
И оказалось, что я (искренне) заблуждался (поверил на слово ТС, что он проштудировал Help ) - с её помощью можно получить "Описание свойства", добавленного методом AddProperty!
(ну, и тех свойств, что были заданы вручную, конечно, тоже).

Так что разрабы Фокса здесь не подкачали - зря я на них катил бочку.

greek_fire
Я думаю, что есть функция, которая возвращает это значение. В Хелпе и где только мог, не нашел.
Оказалось, что такая функция всё же есть:
AMEMBERS(Array, Object, 3)

Далее искать по имени свойства и типу, и смотреть элемент Array[*,4]



Исправлено 5 раз(а). Последнее : akvvohinc, 23.12.22 11:29
Ratings: 0 negative/2 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 12 (Гостей: 12)

© 2000-2024 Fox Club 
Яндекс.Метрика