|
|
|
Вопрос по Grid
|
|||
|---|---|---|---|
|
#18+
Ответьте, кто может, пожалуйста. В grid вставляю элемент своего класса (комбинированная кнопка с полем ввода), после этого видна только активная ячейка (имеется в виду с данными). Если поставить Sparse в .F., то на первый взгляд вроде-бы ничего, но при попытке изменить размер колонки, в которую вставлен элемент, начинается ерунда. Размер элемента меняется только для активной ячейки (события Resize переописано в классе вставляемого объекта), при прокрутке таблицы влево-вправо элементы отрисовываются некорректно (события рисования нигде не переописаны), да и выглядит это не очень красиво - сплошные кнопки. Кто знает, как реализовать вставку элемента корректно с отображением содержимого неактивной ячейки в обычном текстовом поле, желательно при Sparse=.T., и чтобы он отрабатывал изменение размеров. Дополнительный вопрос - можно ли во время работы программы записывать методы её экранных элементов (не в design-mode)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2005, 23:36 |
|
||
|
Вопрос по Grid
|
|||
|---|---|---|---|
|
#18+
Для вставки таких комбинированных объектов в столбец Grid следует использовать не объект Container, а объект Control. По сути, это то же самое, но к элементам лежащим внутри Control нельзя обратиться извне Control. Хотя, возможно еще одним решением может быть разделение кнопки и поля ввода по разным столбцам Grid. Т.е. без объединяющего контейнера. Насчет динамического формирования метода. Для версии VFP8 и выше существует функция BindEvents(), которая увязывает событие и метод. Т.е. при наступлении некоего события должен быть выполнен также и указанный метод. Для младших версий единственный выход - это предварительное создание класса нужного объекта с нужными событиями и методами. В программе используется экземпляр этого класса. Например, объект Column для Grid. В данном форуме уже рассматривалась проблема как создать класс Colunm. Он может быть создан только программно. Нет возможности создать его через дезайнер классов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2005, 12:36 |
|
||
|
Вопрос по Grid
|
|||
|---|---|---|---|
|
#18+
ВладимируМ. Немного не понял ответ. Основной вопрос я решил при Sparse=.F. Данные корректно отображаются. Просто при всех соответствующих событиях написал Grid.Refresh. А что произойдёт, если вставляемый комбинированный объект будет в родителе класса Control? В чём будет отличие визуально (работает, поэтому не хочется трогать)? кроме того, мне в принципе требуется извне доступ к отдельным объектам комбинированного объекта. А вот второй вопрос хотел задать ещё раз (он не относится к первому) - имелось в виду можно ли программно написать метод (не при создании класса), т.е. менять код метода, также, как свойство (хотя бы только код пустого метода)? BindEvents вряд ли спасёт положение, с тем же успехом я могу просто в классе заготовить избыточное количество методов и выполнять их по ситуации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2005, 00:44 |
|
||
|
Вопрос по Grid
|
|||
|---|---|---|---|
|
#18+
Hi Алекс_Лена_Лиза! Бог ты мой, сколько вас тута :) > В чём будет отличие визуально Попробуй :) Хотя IMHO ничего "сложного" в грид лучше не пихать. Себе дороже. > А вот второй вопрос хотел задать ещё раз Дык чего экономишь то :) Задал бы в отдельной ветке. Так удобнее :) > можно ли программно написать метод Нет, в Runtime нельзя "написать метод". Всё что можно - сводится к: - макроподстановке - созданию, компиляции и исполнению кода. Т.е. ExecScript() начиная с VFP7 или создание файла+COMPILE+DO ... в VFP6 SP3 или runcode.prg в более древних. Естественно, что в ЛЮБОМ случае (если НЕ пользоваться BindEvents конечно) требуется кой какая "системная поддержка" со стороны используемых классов - т.е. на базовых классах сделать никак нельзя - на своих классах - через вызов какого-либо "менеджера динамически генерируемого кода" - можно. у и как общее замечание. IMHO диамическая генерация ВСЕГО кода методов нужна в 0.000001% случаев - т.е. ПРАКТИЧЕСКИ - никогда. Максимум что "генерируется в рантайме" это мелкие куски кода - тексты SQL запросов например, обращения к динамически созданным контролам и т.п. Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2005, 01:33 |
|
||
|
Вопрос по Grid
|
|||
|---|---|---|---|
|
#18+
Igor Korolyov Hi Алекс_Лена_Лиза! и как общее замечание. IMHO диамическая генерация ВСЕГО кода методов нужна в 0.000001% случаев - т.е. ПРАКТИЧЕСКИ - никогда. Максимум что "генерируется в рантайме" это мелкие куски кода - тексты SQL запросов например, обращения к динамически созданным контролам и т.п. Posted via ActualForum NNTP Server 1.1 Ясен пень, я не хотел генерировать всё приложение с нуля. Вопрос был задан так на всякий случай. В принципе подойдёт макроподстановка свойства (возможно частичная) в метод, где свойство меняется извне класса. Контролы и SQL и так динамические в проекте, просто класс может быть использован во многих формах и каждая могла бы вызвать один и тот же метод класса, но код этого метода был бы разный. Сделать это можно многими способами, но хотелось узнать нет ли стандартного. Спасибо за пояснение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2005, 12:44 |
|
||
|
Вопрос по Grid
|
|||
|---|---|---|---|
|
#18+
Попробовал Control как родительский класс. Визуально отличий не заметил. Работает также (при Sparse=.T. по-прежнему данные светятся только у активной ячейки, у остальных пустое поле), только пришлось дописывать метод класса для изменения свойства ControlSource у объекта Text1 внутри класса. В чём должны были проявиться изменения? Можно ли сделать так, чтобы у активной ячейки был внедрённый собственный класс (как сейчас), а у неактивной - стандартный Text1? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2005, 13:39 |
|
||
|
Вопрос по Grid
|
|||
|---|---|---|---|
|
#18+
Можно ли сделать так, чтобы у активной ячейки был внедрённый собственный класс (как сейчас), а у неактивной - стандартный Text1? Почему бы и нет. Свойство DynamicCurrentControl у Column-а не зря придумано ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2005, 14:26 |
|
||
|
Вопрос по Grid
|
|||
|---|---|---|---|
|
#18+
Burn Почему бы и нет. Свойство DynamicCurrentControl у Column-а не зря придумано Это конечно классно и я уже раньше пытался его использовать, но как туда записать имя моего Control - на попытку сделать это программно он ругается со страшной силой (хотя такая же запись для CurrentControl работает). Запись типа DynamicCurrentControl='THISFORM.Grid2.Column1.Proba1' (где Proba1 - имя внедрённого класса - название самого класса, естественно, другое) не проходит - не ругается, но и не реагирует. Какой вообще должен быть формат записи у этого свойства и поможет ли оно в моём случае - разве оно не заставить изменить значения для всей колонки и результат будет как и раньше - для активной ячейки все данные светятся, а остальные пустые? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2005, 14:59 |
|
||
|
Вопрос по Grid
|
|||
|---|---|---|---|
|
#18+
а у меня всё проходит делаю тексбокс с измененым цветом в выбраном состоянии и кидаю на колонку .Теперь там два объекта . В свойстве пишу iif(recno()%2=0,text1,mytext) и почему-то работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2005, 15:22 |
|
||
|
Вопрос по Grid
|
|||
|---|---|---|---|
|
#18+
В общем то, конечно, виноваты мои кривые ручки. Я писал 'Proba1', а надо было '"Proba1"'. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2005, 15:46 |
|
||
|
Вопрос по Grid
|
|||
|---|---|---|---|
|
#18+
А как можно в запрос DynamicCurrentControl подсунуть сравнение с активной ячейкой? В этом свойстве кроме Recno() ещё что-нибудь можно проверить? Запоминание предыдущей активной ячейки помогает не очень хорошо, т.к. его RECNO() меняется несколько позже после события AfterRowColumnChange (хотя ещё не все возможности исчерпаны). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2005, 16:14 |
|
||
|
Вопрос по Grid
|
|||
|---|---|---|---|
|
#18+
Посмотри здесь Как выделить всю активную строку Grid Думаю, сможешь адаптировать описанное там решение к твоему случаю. По сути, то же самое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2005, 16:28 |
|
||
|
Вопрос по Grid
|
|||
|---|---|---|---|
|
#18+
Всё таки не смог добиться корректной работы. При попытке отследить номер активной строки то, что надо подсвечивается только при втором возникновении события AfterRowColumnChange, а при попытке добавить проверку колонки вообще перестало появляться то, что надо. Результат - определяю координаты ячейки - и вешаю сверху кнопку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2005, 18:24 |
|
||
|
|

start [/forum/topic.php?fid=41&gotonew=1&tid=1594272]: |
0ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
179ms |
get topic data: |
11ms |
get first new msg: |
6ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
| others: | 211ms |
| total: | 509ms |

| 0 / 0 |
