Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / изменение метода grid в процессе выполнения / 15 сообщений из 15, страница 1 из 1
23.08.2006, 11:38
    #33936915
Алексей О
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
изменение метода grid в процессе выполнения
есть объектик grid подстраивающийся под просматриваемую таблицу - в методе init просматривается описание таблицы и создается и настривается нужное количество колонок.
захотелось использовать DblClick event - описал его и на уровне grid и на уровне первой колонки и на уровне текста первой колонки - не отрабатывае. Догадываюсь, что метод теряется в процессе выполнения, когда я настраиваю grid.
а можно переопределить метод в процессе выполнения , ведь свойства мы переопределяем?
...
Рейтинг: 0 / 0
23.08.2006, 11:42
    #33936938
Проходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
изменение метода grid в процессе выполнения
Свойства - это данные, они не исполняются. Методы - исполняемый код.
Лучше написать класс колонки и его в свой грид и подставлять.
...
Рейтинг: 0 / 0
23.08.2006, 11:48
    #33936960
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
изменение метода grid в процессе выполнения
DblClick на НЕ пустом GRID срабатывает на Control, который в колонке (обычно TextBox). Так, что вам придеться изпользовать еще свой класс Column и класс TextBox в классе Column. А в классе GRID установить свойства Member Class и MemberClassLibrary.

С уважением, Алексей
...
Рейтинг: 0 / 0
23.08.2006, 12:56
    #33937272
Алексей О
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
изменение метода grid в процессе выполнения
создать класс column кажется невозможно - это не самостоятельный объект, а вот свой класс textbox сделал и прописал туда событие DblClick да еще и click и rightclick.
при создании новой колонки в гриде удаляю старый text1 создаю свой из своего класса и... опять эти события не отрабатывают.
что может им помешать?
...
Рейтинг: 0 / 0
23.08.2006, 13:02
    #33937303
Проходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
изменение метода grid в процессе выполнения
создать класс column кажется невозможно - это не самостоятельный объект

Начиная с 8-ки можно.
...
Рейтинг: 0 / 0
23.08.2006, 13:07
    #33937325
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
изменение метода grid в процессе выполнения
Алексей Осоздать класс column кажется невозможно - это не самостоятельный объект, а вот свой класс textbox сделал и прописал туда событие DblClick да еще и click и rightclick.
при создании новой колонки в гриде удаляю старый text1 создаю свой из своего класса и... опять эти события не отрабатывают.
что может им помешать?
1. Какая версия у вас VFP?
2. Приведите код добавления нового TextBox (и удаления старого).
С уважением, Алексей.
...
Рейтинг: 0 / 0
23.08.2006, 13:27
    #33937409
Алексей О
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
изменение метода grid в процессе выполнения
у меня VFP 6
код исполнияется в init формы в которой размещен grid
c_column="column"+alltrim(str(i_column))
this.grid1.&c_column..removeobject("text1")
this.grid1.&c_column..addobject("text1","grid_text")

и на самом деле предложенный метод работает
:-)
мне мешало
this.grid1.&c_column..text1.enabled= .f.
а нужна она мне было для того что-бы нельзя было редактировать прямо в гриде, а readonly - генерирует лишнее сообщение.
но гдето здесь я читал как погасить его - сейчас поищу, или подскажите (если не трудно)
...
Рейтинг: 0 / 0
23.08.2006, 13:43
    #33937474
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
изменение метода grid в процессе выполнения
1. Ну я бы еще добавил после AddObject:
this.grid1.&c_column..text1.visible= .T.
2. Мне кажется удобнее ссылаться на колонки через коллекцию Columns, чем использовать макроподстановку

Код: plaintext
1.
2.
3.
4.
5.
6.
FOR m.i =  1  TO THIS.Grid1.ColumnCount
     WITH THIS.Grid1.Columns(m.i)
          .RemoveObject("Tex1")
          .AddObject("text1","grid_text")
          .Text1.Visible = .T.
     ENDWITH
ENDFOR

С уважением, Алексей
...
Рейтинг: 0 / 0
23.08.2006, 14:24
    #33937626
alex11100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
изменение метода grid в процессе выполнения
Код: plaintext
1.
2.
3.
4.
5.
6.
for each loColumn in thisform.Grid.Columns
    for each loControl in  loColumn.Controls
        ...
    endfor
    loColumn.add...
endfor

пользуйтесь конструкцией for each
...
Рейтинг: 0 / 0
23.08.2006, 14:53
    #33937753
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
изменение метода grid в процессе выполнения
alex11100
Код: plaintext
1.
2.
3.
4.
5.
6.
for each loColumn in thisform.Grid.Columns
    for each loControl in  loColumn.Controls
        ...
    endfor
    loColumn.add...
endfor

Не советую для VFP 6.0
В старых версиях цикл FOR EACH ... приводил к утечке (leak) памяти.
С уважением, Алексей.
...
Рейтинг: 0 / 0
23.08.2006, 15:04
    #33937808
alex11100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
изменение метода grid в процессе выполнения
ну раз классами пишет
и колонки подменяет, надеюсь там не 6

с 6 с визуальными классами не поработаешь
(код перегруженный не смотрится)
...
Рейтинг: 0 / 0
23.08.2006, 15:06
    #33937825
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
изменение метода grid в процессе выполнения
Алексей Оу меня VFP 6
С уважением, Алексей.
...
Рейтинг: 0 / 0
23.08.2006, 15:14
    #33937871
alex11100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
изменение метода grid в процессе выполнения
ну возможно в сервиспаках поправили
там кажется их 4 было или больше
...
Рейтинг: 0 / 0
23.08.2006, 15:49
    #33938025
Алексей О
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
изменение метода grid в процессе выполнения
ну специально сервис паки не ставил и что входило в дистриб не смотрел, но в данном случае пишу на 6-ке хотя знаком и с более свежими.
это все конечно хорошо. спасибо за советы.
но я всетаки не нашел как погасить сообщение "the control is read-only"
это вообще возможно в 6-ке?
...
Рейтинг: 0 / 0
23.08.2006, 16:12
    #33938124
Алексей О
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
изменение метода grid в процессе выполнения
ну и в этом решение нашел - не ставлю readonly, а в методе keypress заканчиваю свою обработку командой nodefa и в объект нажатые кнопочки не попадают. странно лишь то что этой командочки не оказалось в родном help'е
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / изменение метода grid в процессе выполнения / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]