Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Вызов метода на DblClick из любого столбца Grid  [new]
Kozerog
Member

Откуда: М О
Сообщений: 126
Нужно по нажатию DblClick в любом столбце Grid запустить метод Click() кнопки из этой формы. Как сделать это простым способом ?
30 май 03, 22:18    [217255]     Ответить | Цитировать Сообщить модератору
 Re: Вызов метода на DblClick из любого столбца Grid  [new]
karly
Guest
Click грида срабатывает при щелчке ВНЕ зоны данных.
Для того, чтобы срабатывал Click на данных, нужно
писать код в Grid1.Column1.TEXTBOX1.Click()

Это должно быть написано В КАЖДОЙ колонке.
Проще всего это сделать, если у тебя 8-я
версия Фокса. Там можно указать свой класс
textbox для грида. В остальных версиях
можно применить один "хакерский" прием -
открыть форму, как таблицу, и заменить
нужные значения. Но для начала лучше
все сделать ручками :)
30 май 03, 23:43    [217270]     Ответить | Цитировать Сообщить модератору
 Re: Вызов метода на DblClick из любого столбца Grid  [new]
chagoserg
Member

Откуда: Rostov Don
Сообщений: 157
позвольте не согласиться - свой класс textbox для грида можно указать в ЛЮБОЙ версии VFP ;)
31 май 03, 08:59    [217321]     Ответить | Цитировать Сообщить модератору
 Re: Вызов метода на DblClick из любого столбца Grid  [new]
Kozerog
Member

Откуда: М О
Сообщений: 126
Как раз вот "ручками" в каждой колонке GRID как предлагает karly
надоело ! Не по "программолюдски" это... Особенно когда колонок много.

Mожет есть что-то похожее на SetAll или программно ?
31 май 03, 11:30    [217341]     Ответить | Цитировать Сообщить модератору
 Re: Вызов метода на DblClick из любого столбца Grid  [new]
karly
Guest
Ну что ж, если ты уже попрактиковался в написании "ручками"... ;)

Создай класс на основе textbox, например TextBoxClk,
и сохрани его в библиотеке myLib.vcx.
Сделай резервную копию формы ;)
Затем напиши коротенькую программу

**********************************************
#DEFINE PARENT_NAME "FORM1.GRID1.COLUMN" && Здесь укажешь правильные имена

use myForm.scx
Replace Class with "TextBoxClk", ClassLoc with "myLib.vcx" ;
for UPPER(Class) == "TEXTBOX" and UPPER(Parent) = PARENT_NAME

use in myForm
**********************************************

Обрати внимание на строгое равенство названий класса и нестрогое - родительского объекта. Если библиотека классов лежит в другой директории,
то ее нужно указывать вот так "..\ClassLibs\myLib.vcx"

Все, пожалуй :)

Программку стоит запускать после добавления столбцов в грид.

В 8-й версии можно просто указать, какой класс использовать в гриде.

P.S. Если chagoserg владеет другими приемами автоматизации -
охотно посмотрю.
31 май 03, 21:32    [217524]     Ответить | Цитировать Сообщить модератору
 Re: Вызов метода на DblClick из любого столбца Grid  [new]
Kozerog
Member

Откуда: М О
Сообщений: 126
=> karly

Извините за серость !

< #DEFINE PARENT_NAME "FORM1.GRID1.COLUMN" && Здесь укажешь правильные имена >

это куда ?

Если в форме PageFrame c 5 страницами, на каждой GRID, в котором нужно осуществлять указанный вызов DBLCLICK ?

Восьмой версией не пользовался. Все на 6.0 SP5.
Есть ли веские причины переходить на 8. Семь пробовал, но вернулся на 6, обнаружив отсутствие привычных инструментов(например: WIZARD\SETUP).
1 июн 03, 11:25    [217638]     Ответить | Цитировать Сообщить модератору
 Re: Вызов метода на DblClick из любого столбца Grid  [new]
karly
Guest
Открой форму,как таблицу, и посмотри содержимое полей.
Многое станет на свои места :)

Если у тебя во всех гридах должен исполняться один и тот же код,
то можно условие переписать вот так

Replace ... For Upper(Class) == "TEXTBOX" and "COLUMN" $ Upper(Parent)

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

А в #DEFINE я текст вынес, чтобы было понятнее ;) и удобнее в будущем редактировать.
Это как раз на случай, если у разных гридов должна быть разная реакция на DblClick.
Т.е. для грида на первой закладке нужно написать что-то вроде

#DEFINE PARENT_NAME "FORM1.PAGEFRAME1.PAGE1.GRID1.COLUMN"

По поводу отсутствия Setup Wizard - теперь вместо него Install Shield Express.
Шаг, так сказать, навстречу общепринятым стандартам :)
Зато появились всякие IntelliSense, функции для работы с XML, и протчая, и протчая...
1 июн 03, 13:19    [217662]     Ответить | Цитировать Сообщить модератору
 Re: Вызов метода на DblClick из любого столбца Grid  [new]
Kozerog
Member

Откуда: М О
Сообщений: 126
=>karly

Спасибо! Получилось по Вашему.

Есть особенность, если в старом GRID1.COLUMN.TEXT1.DBLCLICK()

остается просто хотя бы пробел или что-то от себя, то родительский метод
не работает. Т.е. метод толжен быть установлен DEDAULT.
1 июн 03, 20:00    [217721]     Ответить | Цитировать Сообщить модератору
 Re: Вызов метода на DblClick из любого столбца Grid  [new]
karly
Guest
2 Kozerog

Так и должно работать. Если указан свой метод, то метод родительского класса не выполняется.
Чтобы выполнить его "насильно", в тексте метода нужно написать
DoDefault()
1 июн 03, 23:34    [217751]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить