Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Re:Grid -> вызов процедуры по двойному клику в строке / 9 сообщений из 9, страница 1 из 1
27.01.2010, 08:46
    #36432719
Aklg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Re:Grid -> вызов процедуры по двойному клику в строке
необходимо чтобы по двойному клику по строке в Гриде вызывалась процедура (в частном случае - модальная форма ввода/редактирования). При этом сам Грид формируется динамически - в связи с чем я не могу для TextBox добавить в событие DblClick - свой вызов... Если какой-нибудь способ (ну типа THISFORM.Grid1.SetAll) чтоб реализовать задачу
P.S. Думаю что это точно можно сделать в RunTime - вопрос только каким образом?
...
Рейтинг: 0 / 0
27.01.2010, 09:20
    #36432787
Kruchinin Pahan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Re:Grid -> вызов процедуры по двойному клику в строке
Aklgнеобходимо чтобы по двойному клику по строке в Гриде вызывалась процедура (в частном случае - модальная форма ввода/редактирования). При этом сам Грид формируется динамически - в связи с чем я не могу для TextBox добавить в событие DblClick - свой вызов... Если какой-нибудь способ (ну типа THISFORM.Grid1.SetAll) чтоб реализовать задачу
P.S. Думаю что это точно можно сделать в RunTime - вопрос только каким образом?
Посмотрите на BINDEVENT.

Хотя, если у вас это частое явление, то лучше подключить свой клас текстбокса.
...
Рейтинг: 0 / 0
27.01.2010, 09:20
    #36432788
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Re:Grid -> вызов процедуры по двойному клику в строке
Вам необходимо вначале создать библиотеку виз.классов и создать в ней
свои классы:
- грид
- текстбокс, который будет лежать в колонках

у текстбокса должен быть раработан метод даблклик:
стандартный для всех колонок, либо видоизменяемый от каких-то параметров

после динамического создания грида необходимо пробежать по всем колонам
и заменить базовый класс текстбокс на свой,
либо сделать это в ините колонки самого класса грида.

биндивент использовать не советую.

модальные формы также необходимо использовать аккуратно,
в Вашем случае для редактирования вполне возможно использовать немодальные формы

примеры реализации - здесь:
http://sql.ru/forum/actualthread.aspx?tid=726331
...
Рейтинг: 0 / 0
27.01.2010, 10:30
    #36432925
Aklg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Re:Grid -> вызов процедуры по двойному клику в строке
Большое спасибо за участие.
По поводу BINDEVENT - пролопатил Help но не догнал реальную реализацию в моем случае...
По поводу второго способа...

*--- Создаю свой класс где определяю событие...
PUBLIC TexBoxDblClick
DEFINE CLASS TexBoxDblClick AS TextBox
PROCEDURE DblClick
THISFORM.Commandgroup1.Command2.Click()
ENDPROC
*THIS.VISIBLE = .T.
ENDDEFINE
*---
Далее в Ините формы с Гридом делаю следующее...

*--- Заполняем Grid.Clomns(i)....
FOR j=1 TO THISFORM.nColumn

*THISFORM.Grid1.Columns(j).RemoveObject("Text1")
THISFORM.Grid1.Columns(j).AddObject("TexBoxDblClick", "TextBox")
THISFORM.Grid1.Columns(j).TexBoxDblClick.Visible = .T.
THISFORM.Grid1.Columns(j).CurrentControl = "TexBoxDblClick"
*THISFORM.Grid1.Columns(j).Sparse = .F.

ENDFOR

В итоге все проходит без ошибок, однако ничего не происходит...???

... Где мой "ляп" ? подскажите пожалуйста что я сделал не так или что я не сделал?
...
Рейтинг: 0 / 0
27.01.2010, 10:37
    #36432943
Re:Grid -> вызов процедуры по двойному клику в строке
Aklg,
поставить гриду AllowCellSelection = .f. и прописать код в DblClick() грида.
...
Рейтинг: 0 / 0
27.01.2010, 10:42
    #36432959
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Re:Grid -> вызов процедуры по двойному клику в строке
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
local loColumn
FOR each loColumn in ....Grid.Columns
  with loColumn
    *.RemoveObject("Text1")
    .AddObject("TexBoxDblClick", "MyTextBox") 
    .TexBoxDblClick.Visible = .T.
    .CurrentControl = "TexBoxDblClick"
    *.Sparse = .F.
   endwith
ENDFOR

нужно создать класс MyTextBox, в котором написать метод DblClick
и т.д. ...
...
Рейтинг: 0 / 0
27.01.2010, 10:48
    #36432975
Aklg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Re:Grid -> вызов процедуры по двойному клику в строке
.... Огромный респект ПРОХОДЯЩему !!!!!!!!!!!
все работает...
я подразумеваю что и DEFINE CLASS и ADDOBJECT - тут совсем и не нужен - пока не пробовал, сейчас посмотрим
Еще раз спасибо всем за участие!!!
...
Рейтинг: 0 / 0
27.01.2010, 10:59
    #36433010
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Re:Grid -> вызов процедуры по двойному клику в строке
авторя подразумеваю что и DEFINE CLASS и ADDOBJECT - тут совсем и не нужен

делайте класс, и учитесь работать с классами.

не нужно решать задачу "по-верху".
так как такие решения содержат множество недостатков.

в идеале разрабатывать приложение с использованием базовых классов
не стоит, так как это будет трудно сопровождаемая и дорабатываемая
разработка.

поэтому Вам сейчас нужно освоить методику создания собственных классов
и использования этих классов
...
Рейтинг: 0 / 0
27.01.2010, 11:03
    #36433024
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Re:Grid -> вызов процедуры по двойному клику в строке
авторвсе работает...

попробуйте из ячейки грида скопировать текс в ворд.
а затем спросите пользователей удобно ли им будет
работать с Вашей программой,
когда им потребуется копипастить значения для поиска и т.д.,
из формы в форму и т.д.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Re:Grid -> вызов процедуры по двойному клику в строке / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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