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

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


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

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

ЗВН, что-то я тебя не совсем понял. Что ты имеешь ввиду?
...
Рейтинг: 0 / 0
Хелп
    #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
Хелп
    #32221912
Flex2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S. Конечно же в гриде Columncount в данном случае должно быть равным 3.
...
Рейтинг: 0 / 0
Хелп
    #32222166
I_l_I A M u JI b
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я есть только начинать программировать на FoxPro и, поэтому не понимать неторых (может быть элементарных) вещей.

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


Как в форме метод создать знаю, а в Grid'e как ?
Если не трудно, объясните, pls.
...
Рейтинг: 0 / 0
Хелп
    #32222198
Crip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если vfp8 , то обработку события можно прибить по BINDEVENT
...
Рейтинг: 0 / 0
Хелп
    #32222202
I_l_I A M u JI b
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет в 6.0
...
Рейтинг: 0 / 0
Хелп
    #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
Хелп
    #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
Хелп
    #32222761
NE_Dimon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Рискну предположить - а может, Ваши действия не подпадают под понятие машины двойное нажатие кнопки мыши , ведь скорость Dblclick устанавливается Виндами и может быть разной.

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

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


Как некоторые уже успели подметить RecordSource постоянно переназначается.
Может быть вся проблема в этом.
А может в глюках каких-то доселе не веданных !!!
...
Рейтинг: 0 / 0
Хелп
    #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
Хелп
    #32223305
NE_Dimon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дебаггер не может обнаружить что происходит, т.к фокс в данной ситуации никак на DbClick не реагирует

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


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


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