|
EditGroup
|
|||
---|---|---|---|
#18+
Как написать класс типа CommandGroup, но чтобы вместо кнопок при изменении нового свойства EditCount появлялись Эдиты? Припустим создали новый класс (BaseClass='Container'), добавили свойство EditCount.... Что дальше? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2003, 12:30 |
|
EditGroup
|
|||
---|---|---|---|
#18+
Ну лично я в таких случаях делаю класс на основе PageFrame со свойством Tabs=.F. (т.е. без визуального отображения закладок) Т.е. действия примерно такие: -) Создаешь класс на основе PageFrame из 2 страниц и устанавливаешь ему свойство Tabs=.F. (для лучшего визуального эффекта еще можно скрыть Border (толщина 0, тип - невидимый )) -) На первой странице этого PageFrame кладешь набор кнопок -) На второй - набор EditBox Программное перключение между страницами PageFrame осуществляется изменением свойства ActvePage, т.е. This.ActivePage=1 - открыть первую страницу This.ActivePage=2 - открыть вторую страницу Т.е. можно использовать значение стандартного свойства ActivePage как признак того, что именно открыто или нужно открыть. Хотя никто не мешает ввести для этой цели дополнительное свойство (можно с событием ASSIGN для немедленной реакции в случае изменения.) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2003, 13:11 |
|
EditGroup
|
|||
---|---|---|---|
#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. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2003, 13:15 |
|
EditGroup
|
|||
---|---|---|---|
#18+
А с ClassDesigner как это сделать? Мне нужен класс (из файла *.vcx) который работает также как и CommandGroup, т.е. чтобы была возможность в FormDesigner'е в окне Properties в проектном времени изменить свойство EditCount, например на 5, и в форме появилось 5 эдитов. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2003, 13:34 |
|
EditGroup
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
посади этот код на какую-нибудь клавишу, например Код: plaintext
зайди в дизайнер, выдели свой контейнер (код который я привел для ручного создания в методе Init убери) и нажми f12 - любуйся результатами своего труда:) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2003, 13:52 |
|
EditGroup
|
|||
---|---|---|---|
#18+
да, идентификацию нужного контрола можно ужесточить: Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2003, 14:02 |
|
EditGroup
|
|||
---|---|---|---|
#18+
Мы, наверное, друг друга не поняли... Вот мой вопрос: Мне нужен класс (из файла *.vcx) который работает также как и CommandGroup, т.е. чтобы была возможность в FormDesigner'е в окне Properties в проектном времени изменить свойство EditCount, например на 5, и в форме появилось 5 эдитов. Я делал так: 1. Создал класс на основе Container. Открылся ClassDesigner. 2. В этом дизайнере из меню Class нажал NewProperty, имя новому свойству дал EditCount, поставил флажки Access Method и Assign Method. Фокс создал два метода EditCount_access и EditCount_assign 3. В методе EditCount_assign я написал: LPARAMETERS vNewVal FOR i = fCounts+1 TO vNewVal Num=ALLTRIM(STR(i)) this.AddObject('ED'+Num,'EditBox') this.ED&Num..height=20 this.ED&Num..Left=10 this.ED&Num..Top=(this.ED&Num..Height+10)*i this.ED&Num..Visible=.T. ENDFOR fCounts=vNewVal THIS.listscount = m.vNewVal В Init PUBLIC fCounts fCounts=0 В рантайме все работает ( Click какой то кнопки: Thisform.EditGroup1.EditCount=5. Результат: в Container'е 5 эдитов). В проэктномном времени: Выделяю свой Container, в окне Properties в строке EditCount пишу цыфру 5. Результат: ничего не изменилось...(А в CommandGroup - меняется). ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2003, 15:35 |
|
EditGroup
|
|||
---|---|---|---|
#18+
Я прекрасно тебя понял, но, к сожалению, vfp не предоставляет такой возможности. Так что, либо используй обходной путь связанный c использованием построителя, либо пишы activex. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2003, 15:50 |
|
EditGroup
|
|||
---|---|---|---|
#18+
Вообще-то MS заикнулось о том, что Design-time события (а это как раз то, чего Вы хотите) будут введены в VFP9 (правда говорилось при этом о Report Designer'е только почему-то). Как утверждали некоторые товарищи на конфе впавшего в кому Фоксклуба, в VB такая фича давно есть, а фокса вот всё никак не разродится :( ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2003, 16:22 |
|
|
start [/forum/topic.php?fid=41&fpage=418&tid=1598094]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
30ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
others: | 277ms |
total: | 411ms |
0 / 0 |