|
|
|
Как изменить свойство класса ?
|
|||
|---|---|---|---|
|
#18+
Есть некий класс использующий меню. Для меню нельзя употреблять this и thisform. Как изменить при выборе в меню свойство класса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2005, 18:03:30 |
|
||
|
Как изменить свойство класса ?
|
|||
|---|---|---|---|
|
#18+
В начале кода определите переменную и присвойте ей значение ссылки на объект (форму). Например: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2005, 18:35:46 |
|
||
|
Как изменить свойство класса ?
|
|||
|---|---|---|---|
|
#18+
Спасибо. Идея насчет переменной хороша. Я буду объявлять в load класса, что-бы класс был независим от формы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2005, 19:13:13 |
|
||
|
Как изменить свойство класса ?
|
|||
|---|---|---|---|
|
#18+
Делать косвенную ссылку через переменную имеет смысл, только в том случае, если экземпляр класса вызывается непосредственно из метода формы и уничтожается ДО уничтожения формы. В противном случае проблемы обеспечены. Обычно в таких случаях делают ссылку на метод активной в данный момент формы. Примерно так: Код: plaintext 1. 2. 3. 4. Кроме этого обязательно устанавливают условие SKIP FOR для таких пунктов меню. Это условие вызывает функцию, которая делает примерно такую проверку Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Т.е. пункт меню определяется примерно так: Код: plaintext 1. 2. 3. 4. 5. Если процесс построения меню происходит в событии ACTIVATE-формы, а уничтожение по DEACTIVATE-формы, то функция в SKIP FOR не обязательна, поскольку меню будет обслуживать только и исключительно _VFP.ActiveForm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2005, 21:26:33 |
|
||
|
Как изменить свойство класса ?
|
|||
|---|---|---|---|
|
#18+
Для ВладимирМ ВладимирМДелать косвенную ссылку через переменную имеет смысл, только в том случае, если экземпляр класса вызывается непосредственно из метода формы и уничтожается ДО уничтожения формы. В противном случае проблемы обеспечены. Я привел пример контекстного меню класса (формы, ... ). Это же ясно из: RELEASE POPUPS f_menu. Какие могут быть тут последствия ? Очевидно, что вопрос "И_Я_хочу_Знать" задавал об использовании меню, инкапсулированного в классе (форме) И_Я_хочу_Знать Есть некий класс использующий меню. Для меню нельзя употреблять this и thisform Ваш же пример, ВладимирМ, скорее относится к построению меню, код которого выполнятся за пределами класса, например, главное меню приложения. С уважением, Алексей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2005, 09:06:16 |
|
||
|
Как изменить свойство класса ?
|
|||
|---|---|---|---|
|
#18+
Спасибо Всем !!! Aleksey-Kвопрос "И_Я_хочу_Знать" задавал об использовании меню, инкапсулированного в классе (форме) Да это правда и я ответ ВладимирМ пока использовать не буду, но запишу в записную книжку на будующее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2005, 11:55:07 |
|
||
|
Как изменить свойство класса ?
|
|||
|---|---|---|---|
|
#18+
Проверил - не получается в случае, если у меня formset. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2005, 18:28:35 |
|
||
|
Как изменить свойство класса ?
|
|||
|---|---|---|---|
|
#18+
Нифига не получается. Имя *.prg не совпадает thisformset.name. Как найти полный путь до класса ? Хочу доработать класс до уровня бросил на форму и забыл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2005, 20:18:47 |
|
||
|
Как изменить свойство класса ?
|
|||
|---|---|---|---|
|
#18+
Что-то я не понял смысла твоего кода. Если нужна ссылка с полной иерархией от текущего объекта, то это Код: plaintext Если надо определить есть ли у данного объекта объект-контейнер (parent), то это Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2005, 21:47:00 |
|
||
|
Как изменить свойство класса ?
|
|||
|---|---|---|---|
|
#18+
ВладимирМ Код: plaintext 1. 2. 3. 4. 5. Обрати внимание что skip отработает только на момент определения bar. Я бы описал функцию, определяющую доступен пункт меню в момент вызова и после этого вызывал метод. f("AddNew", "_VFP.ActiveForm.AddNew()") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2005, 08:50:43 |
|
||
|
Как изменить свойство класса ?
|
|||
|---|---|---|---|
|
#18+
glamisОбрати внимание что skip отработает только на момент определения bar. Нет. SKIP вычисляется каждый раз в момент активизации того POPUP-меню в котором прописан этот BAR-пункт. Т.е. в момент раскрытия выпадающего меню. Я привел пример из работающей программы. Можешь сам сделать тестовый примерчик и проверить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2005, 10:57:04 |
|
||
|
Как изменить свойство класса ?
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответ. ВладимирМЧто-то я не понял смысла твоего кода. Если нужна ссылка с полной иерархией от текущего объекта, то это Код: plaintext Да код был предназначен для определения полного пути. Спасибо за функцию. Но эта функция как и мой код не работает, если название файла формы не совпадает с именем формы. Как узнать название файла формы? А что будет после компиляции? Стартовый файл main.prg. Например MyForm.scx содержит форму Form1. Полный путь по SYS(1272,this) = "Form1.MyButton", а надо "MyForm.MyButton" Как это получить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2005, 12:38:08 |
|
||
|
Как изменить свойство класса ?
|
|||
|---|---|---|---|
|
#18+
И_Я_хочу_Знать Например MyForm.scx содержит форму Form1. Полный путь по SYS(1272,this) = "Form1.MyButton", а надо "MyForm.MyButton" Как это получить? Получить имя файла можно из функции SYS(16), но это не имеет смысла. Ты же обращаешся к методу не файла, а той формы, с которой работаешь. По SYS(1272) использовано свойство Name. Но обращение к форме идет через переменную, содержащую ссылку на эту форму. В общем случае эта переменная может и НЕ совпадать ни со свойством Name, ни с именем файла scx. Все зависит от способа вызова этой формы. PS: А какой глубокий смысл давать свойству Name формы значение отличное от имени файла SCX? Ну, кроме горячего желания создать себе дополнительные проблемы? Измени значение свойства Name на имя файла - и все! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2005, 12:47:51 |
|
||
|
Как изменить свойство класса ?
|
|||
|---|---|---|---|
|
#18+
ВладимирМ Получить имя файла можно из функции SYS(16), но это не имеет смысла. Ты же обращаешся к методу не файла, а той формы, с которой работаешь. Да спасибо из этой функции я смогу получить имя. ВладимирМPS: А какой глубокий смысл давать свойству Name формы значение отличное от имени файла SCX? Ну, кроме горячего желания создать себе дополнительные проблемы? Измени значение свойства Name на имя файла - и все! Никакого. Обычно дают осмысленное имя файлу, а об имени формы обычно не заботятся. По умолчанию - Form1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2005, 13:15:11 |
|
||
|
Как изменить свойство класса ?
|
|||
|---|---|---|---|
|
#18+
Hi И_Я_хочу_Знать! Сделай форму, и затем из командного окна выполни (именно так - запусти 3 формы!) DO FORM Form1 DO FORM Form1 DO FORM Form1 потом напиши Form1.Backcolor = 0 И попробуй поменять цвет ДРУГОЙ запущенной формы Form1. Ради смеха можешь даже закрыть "уже перекрашенную" форму. Думаю после этого охота обращаться к форме по имени НЕЯВНО создаваемой переменной-ссылки заметно поубавится. А когда ты запишешь данный код в prg, а код Form1.Backcolor поместишь скажем в кнопку на этой форме и всё это запустишь (и выяснишь что такая неявная переменная ещё и PRIVATE, и к моменту нажатия на кнопку уже давно как уничтожена) - то твоё желание пользовать такие приёмы и вовсе исчезнет - и ты найдёшь таки более правильные и стабильные способы обращаться к разнообразным формам :) Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2005, 04:38:04 |
|
||
|
Как изменить свойство класса ?
|
|||
|---|---|---|---|
|
#18+
Спасибо за совет. Попробовал. Да здесь есть над чем подумать. Возможно я жеско программирую, но у меня невозможно в запустить программу 2 раза(mutex.prg) также как и форму(недоступно меню после входа в форму). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2005, 12:58:07 |
|
||
|
|

start [/forum/search_topic.php?author=Yahmos&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
9ms |
get forum list: |
21ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
63ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
68ms |
get tp. blocked users: |
1ms |
| others: | 400ms |
| total: | 599ms |

| 0 / 0 |
