Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Хелп / 20 сообщений из 20, страница 1 из 1
30.07.2003, 10:10
    #32221782
I_l_I A M u JI b
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хелп
Люди помогите !!!
Ставлю в Grid'e в тексте реакцию на событие dbclick.
Почему-то не работает

Если это важно, то RecordSource Type = 1
...
Рейтинг: 0 / 0
30.07.2003, 10:15
    #32221788
George K.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хелп
а событие чего делает?
...
Рейтинг: 0 / 0
30.07.2003, 10:37
    #32221823
I_l_I A M u JI b
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хелп
какое, DbClick ?
двойное нажатие кнопки мыши
А вызывается процедура, которая производит некоторые операции со значением в ячейке Grid'a. Но дело не в ней, туда хоть что ставь - не работает
...
Рейтинг: 0 / 0
30.07.2003, 10:46
    #32221846
ЗВН
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хелп
Если RecordSourse переназначается,
тогда как-бы grid не помнит методов,
т.е. я так понимаю fox строитgrid заново


может я не угадал!

У себя проблему я решил по другому, я не переназначал источник
а наоборот менял содержимое в cursor-е на который настроен grid
тогда методы сохраняются
...
Рейтинг: 0 / 0
30.07.2003, 10:52
    #32221863
I_l_I A M u JI b
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хелп
"У себя проблему я решил по другому, я не переназначал источник
а наоборот менял содержимое в cursor-е на который настроен grid
тогда методы сохраняются"

ЗВН, что-то я тебя не совсем понял. Что ты имеешь ввиду?
...
Рейтинг: 0 / 0
30.07.2003, 11:12
    #32221902
Flex2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хелп
Делается так:
Определяешь свой класс на основе базового текстбокса в MyClassLIB.PRG
Код: plaintext
1.
2.
3.
4.
5.
DEFINE CLASS MyText as Tetxbox
* Тут свойсва ему определяешь, какми хочешь его видеть
Procedure DblClick
* Тут пишешь то что хочешь делать
EndProc
ENDDEFINE


В гриде создаешь свой метод подстановки элемента в COLUMN, ну допустим
AddMyFild:
В нем прописываешь следующий код :

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Lparameter tnColumn, lcField
with this.columns(tnColumn)
  .RemoveObject( "Text1" )
  .AddObject( "Text1" , "MyText" )
  .Text1.BorderColor = RGB( 115 , 204 , 186 )
  .CurrentControl =  "Text1" 
  .controlsource    = ALLT(lcField)
  .FontName =  "Tahoma" 
  .FontSize =   8 
endwith



В ините грида, прописываешь
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SET PROCEDURE TO MyClassLIB  ADDITIVE
with this
    .RecordSourceType =  1 
    .RecordSource =  "MyAlias" 
   .AddMyFild( 1 , "Field1" ) &&  -  вот тут создал колонку с тексбоксами на основе 
   .AddMyFild( 2 , "Field2" ) && своего класса 
   .AddMyFild( 3 , "Field3" )
Endwith


Как бы ты не переопределял потом источники, будет срабатывать.
...
Рейтинг: 0 / 0
30.07.2003, 11:18
    #32221912
Flex2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хелп
P.S. Конечно же в гриде Columncount в данном случае должно быть равным 3.
...
Рейтинг: 0 / 0
30.07.2003, 12:59
    #32222166
I_l_I A M u JI b
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хелп
Я есть только начинать программировать на FoxPro и, поэтому не понимать неторых (может быть элементарных) вещей.

Так например:
"В гриде создаешь свой метод подстановки элемента в COLUMN, ну допустим
AddMyFild:"


Как в форме метод создать знаю, а в Grid'e как ?
Если не трудно, объясните, pls.
...
Рейтинг: 0 / 0
30.07.2003, 13:06
    #32222198
Crip
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хелп
Если vfp8 , то обработку события можно прибить по BINDEVENT
...
Рейтинг: 0 / 0
30.07.2003, 13:08
    #32222202
I_l_I A M u JI b
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хелп
Нет в 6.0
...
Рейтинг: 0 / 0
30.07.2003, 14:26
    #32222362
Flex2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хелп
1 путь. Создаешь библитеку классов свою VCX.
В ней создаешь класс на основе базового класса GRID.
Открытваешь его и с помошью меню Сlass|New method cоздаешь свой метод ну и соответвенно редактируешь какие нить базовые.
А потом на форму тянешь на базовый а из своей библитеки.

2 путь. Создаешь MYCLASS.PRG. там прописываешь следующий код.

* Для грида
Код: 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.
Define class myGRD as grid
Procedure Init 
with this
    .ColumnCount =  0   && При старте нет колонок
    .Top  =  0 
    .Left  =  0 
    .Width =  20     
    .Height =  20 
endwith
EndProc

Procedure  AddMyFild
Lparameter  lcField
Local  lnColumnCnt
lnColumnCnt = this.ColumnCount+ 1 
.addcolumn(lnColumnCnt)
 with this.columns(lnColumnCnt)
  .RemoveObject( "Text1" )
  .AddObject( "Text1" , "MyText" )
  .Text1.BorderColor = RGB( 115 , 204 , 186 )
  .CurrentControl =  "Text1" 
  .controlsource    = ALLT(lcField)
  .FontName =  "Tahoma" 
  .FontSize =   8 
endwith
this.ColumnCount = lnColumnCnt  
endproc
enddefine

* Тут для своего Textbox
DEFINE CLASS MyText as Textbox
* Тут свойсва ему определяешь, какими хочешь его видеть
Procedure DblClick
* Тут пишешь то что хочешь делать
EndProc
ENDDEFINE


Создаешь форму.
В Init формы прописывешь код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
SET PROCEDURE TO MYCLASS ADDITIVE
this.Adproperty( "GRD" , createobject( "myGRD" ))
with this.GRD
    .RecordSourceType =  1 
    .RecordSource =  "MyAlias" 
   .AddMyFild( "FieldName1" )  
   .AddMyFild( "FieldName2" ) 
   .AddMyFild( "FieldName3" )
Endwith


В принципе все.
...
Рейтинг: 0 / 0
30.07.2003, 15:48
    #32222542
Aijik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хелп
I_l_I A M u JI b

А мож Вы поподробнее проблему-то распишете? Вы же практически ничего не рассказали про вашу ситуацию... Когда работает, а когда нет? Сразу слетает или после чего-то? Слет методов обычно происходит из-за автоматической перестройки грида, когда приисходит закрытие или переназначание источника RecordSource (вторю ЗВН). То это или нет выяснится, когда Вы поподробнее про ситуацию распишете. Лечится контролируемым сносом RecordSource и ControlSource колонок, а потом ихним восстановлением (например, используя св-во Tag):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
ThisForm.Grid1.Tag = ThisForm.Grid1.RecordSource
FOR EACH oColumn IN ThisForm.Grid1.Columns
  oColumn.Tag = oColumn.ControlSource
ENDFOR

Grid1.RecordSource =  ""
FOR EACH oColumn IN ThisForm.Grid1.Columns
  oColumn.ControlSource = " "
ENDFOR

<Действия, вызывающие перестройку грида>

ThisForm.Grid1.RecordSource = ThisForm.Grid1.Tag 
FOR EACH oColumn IN ThisForm.Grid1.Columns
   oColumn.ControlSource  = oColumn.Tag 
ENDFOR
...
Рейтинг: 0 / 0
30.07.2003, 17:13
    #32222761
NE_Dimon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хелп
Рискну предположить - а может, Ваши действия не подпадают под понятие машины двойное нажатие кнопки мыши , ведь скорость Dblclick устанавливается Виндами и может быть разной.

Но дело не в ней, туда хоть что ставь - не работает
Если причина не в вышеизложенном, то рекомендую проверить, что присходит, через дебаггер. (Совсем ничего не просходит при отсутствии кода в нужном месте).
...
Рейтинг: 0 / 0
30.07.2003, 18:01
    #32222879
I_l_I A M u JI b
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хелп
Значит, ситуация следующая:
Есть у меня таблица Par_Table.В ней содержутся множественные названия других, так сказать,дочерних таблиц (никакой связи между ними нет). Некий процесс находит соответствующую запись в Par_table и, загружает соответствующую таблицу
в Grid. Мне нужно чтобы по DbClick на ячейку вылетало
Wait Window "ЗАРАБОТАЛО!!!"
Дебаггер не может обнаружить что происходит, т.к фокс в данной ситуации никак на DbClick не реагирует

2 NE_Dimon
Неужели можно перепутать одиночный клик с двойным ?!


Как некоторые уже успели подметить RecordSource постоянно переназначается.
Может быть вся проблема в этом.
А может в глюках каких-то доселе не веданных !!!
...
Рейтинг: 0 / 0
31.07.2003, 03:22
    #32223142
ЗВН
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хелп
Пишу код в событие dblClick например в Thisform.column1.text1

добавляю методы в форму и запукаю их в init
*!* это удобно, когда таблица нормализована и надо выписать накладную
*!* т.е. создается рабочий курсор, буферезация всякая ненужна при работе с
ним


thisform.creat_curs()
thisform.grid_set()

*!*Первый создает курсор
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Creat cursor CursTAble(id i, NAme c( 40 ))

select Fild1 as ID, fild2 as name
from OurTable into CursTemp

select CursTemp
scan
scatter name ЗВН
    select CursTAble
    append blank 
    gather name ЗВН
select CursTemp
endscan


Второй метод "Grid_set"

Код: 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.
lcFieldName =  "CursTAble" 
thisform.Grid1.RecordSource = lcFieldName
thisform.Grid1.ScrollBars =  2 
thisform.Grid1.RecordSourceType =  1 
thisform.Grid1.GridLineColor	=rgb( 164 , 164 , 164 )
thisform.Grid1.FontSize	= 8 
thisform.Grid1.DeleteMark	=.f.
thisform.Grid1.ColumnCount	= 5 
ThisForm.Grid1.width = 480 

thisform.Grid1.Column1.ControlSource = [&lcFieldname..id]
thisform.Grid1.Column2.ControlSource = [&lcFieldname..name]


thisform.Grid1.Column1.Width 	= 40 
thisform.Grid1.Column2.Width 	=  200 

thisform.Grid1.Column1.Header1.Caption 	= [Код]
thisform.Grid1.Column2.Header1.Caption 	= [Наименование]

thisform.Grid1.SetAll( "AlignMent" , 2 , "Header" ) 

* Можно выровнять
thisform.Grid1.Column1.AlignMent 	=  0 
thisform.Grid1.Column2.AlignMent 	=  1 


Теперь можно изменять содержимое CursTAble, накладывать фильтры и т.п.

thisform.grid1.refresh
RowSourse менять не надо!!!
методы слетают только при повторном переназначении!!!
...
Рейтинг: 0 / 0
31.07.2003, 10:24
    #32223305
NE_Dimon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хелп
Дебаггер не может обнаружить что происходит, т.к фокс в данной ситуации никак на DbClick не реагирует

Я делал так. В событие, которое обязательно наступит в результате моих действий, писал что-то типа "ftrsfhdx". При отладке программа, ессно, затыкалась и спрашивала (в дебаггере), что ей делать. А дальше по-шагово просматриваешь, что там происходит. В этом случае я бы написал "ftrsfhdx" в GotFocus для грида. Это-то событие должно происходить, надеюсь
...
Рейтинг: 0 / 0
31.07.2003, 16:14
    #32224081
I_l_I A M u JI b
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хелп
Ну, Спасибо, люди добры !!!
Все ОК
...
Рейтинг: 0 / 0
31.07.2003, 17:31
    #32224223
NE_Dimon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хелп
Ну, Спасибо, люди добры !!!
Все ОК


Что ОК-то ? Че было, колись давай, интересно же.
...
Рейтинг: 0 / 0
31.07.2003, 18:32
    #32224323
NE_Dimon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хелп
Ну точно, не иначе как DblClick в Виндах глючил
...
Рейтинг: 0 / 0
01.08.2003, 12:59
    #32224930
I_l_I A M u JI b
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хелп
Сделал все как вы написали (Flex2, ЗВН, Aijik)
Нифига не пошло !!!
Fox переставил. Почему-то мне вдруг показалось, что это может помочь.
Пошло-поехало. В чем проблема была ? Да хрен ее разбери. Не понял. Глюки.
Может быть у меня ?!
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Хелп / 20 сообщений из 20, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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