powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / как подцепить активный Row в Gride
13 сообщений из 38, страница 2 из 2
как подцепить активный Row в Gride
    #34112532
Solmyr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чево-то у меня все спуталось.
Вы ведь после выполнения процедуры поиска должны позиционироваться на найденной строке в гриде? У вас это выполняется?
...
Рейтинг: 0 / 0
как подцепить активный Row в Gride
    #34112536
valeryka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот уперся в форму как в ворде и других вариантов видеть не желаем.

Подумай слегка, гораздо удобнее вообще не использовать поисковую форму.
...
Рейтинг: 0 / 0
как подцепить активный Row в Gride
    #34112625
Solmyr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Согласен с valeryka.
Можно просто окошко сделат ь на самом гриде, там где кнопки ок и т.д. например, тогда ваще прыгать не придется. Видел уже такие весчи, нормально смотрятся.
...
Рейтинг: 0 / 0
как подцепить активный Row в Gride
    #34112651
valeryka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Solmyr

Еще проще - используется поле заголовка grid с таймером или без по ENTER
...
Рейтинг: 0 / 0
как подцепить активный Row в Gride
    #34112965
Strong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SolmyrЧево-то у меня все спуталось.
Вы ведь после выполнения процедуры поиска должны позиционироваться на найденной строке в гриде? У вас это выполняется?

Да после поиска происходит рефреш грида.
найденая запись подсвечивается.

valeryka
Вот уперся в форму как в ворде и других вариантов видеть не желаем.
Подумай слегка, гораздо удобнее вообще не использовать поисковую форму.


Может и грид не использовать тогда?
В данном случае нужна именно такая форма. Проблема только в том что иногда она перекрывает подсвеченную строчку грида.

valeryka2 Solmyr

Еще проще - используется поле заголовка grid с таймером или без по ENTER

Это как так?
...
Рейтинг: 0 / 0
как подцепить активный Row в Gride
    #34113003
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пример не мой
...
Рейтинг: 0 / 0
как подцепить активный Row в Gride
    #34113021
valeryka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подменяешь название поля на набираемый текст,
по таймеру либо по ENTER сбрасываешь обратно,
а уж, какой код повесишь на поиск твое дело.
...
Рейтинг: 0 / 0
как подцепить активный Row в Gride
    #34113329
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Честно говоря не знаю поможет или нет.

Посмотри пример, надо запустить код и на строчке грида набрать какую-нибудь цифру, затем нажать Enter (делался для 5-ки, правда в 9-ке этот код работает не корректно при определенных условиях)

Код: 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.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
PUBLIC oForm  
  oForm = CREATEOBJECT('searchingrid')  
  oForm.show( 1 )  
    
  DEFINE CLASS searchingrid AS form  
  	Caption = "Form1"  
  	Name = "Form1"  
    
  	ADD OBJECT grids1 AS grids WITH ;  
  		Height =  229 , ;  
  		Left =  12 , ;  
  		Top =  12 , ;  
  		Width =  349 , ;  
  		Name = "Grids1"  
    
    
  	PROCEDURE Load  
  		LOCAL i  
  		IF !USED('test')  
  			CREATE CURSOR test (Id i, Texts c( 30 ))  
  			FOR i =  1  TO  1000   
  				INSERT INTO test (Id, texts) VALUES (i, TRANSFORM(i))  
  			ENDFOR   
  		ENDIF
  		GO TOP IN test
  		   
  	ENDPROC  
    
    
  	PROCEDURE Init  
  		WITH this.grids1  
  			.ColumnCount =  2   
  			DODEFAULT()   
  			.RecordSource = 'test'  
  			.Column1.ControlSource = "Test.Id"  
  			.Column1.readonly = .t.  
  			.Column2.ControlSource = "Test.Texts"  
  			.Column2.readonly = .t.  
  		ENDWITH   
  	ENDPROC  
    
    
  ENDDEFINE  
    
    
 **************************************************  
  DEFINE CLASS textboxs AS textbox  
  	Height =  23   
  	SelectOnEntry = .T.  
  	Width =  287   
  	NullDisplay = "'Нет'"  
  	Name = "textboxs"  
    
  	PROCEDURE KeyPress  
  		LPARAMETERS nKeyCode, nShiftAltCtrl  
    
 		* Проверяем на ReadOnly  
  		if this.ReadOnly and (IsAlpha(chr(nKeyCode)) or IsDigit(chr(nKeyCode)) )  
  			do case  
  				case allt(upper(this.parent.baseClass)) = 'COLUMN'  
 				* родитель колонка  
  					if !empty(this.controlSource)  
  						KEYBOARD chr(lastkey()) PLAIN CLEAR  
    
 						* источник данных не пустой  
 							* Cсоздаем обьект QuickSearchGrid и перадаем ссылку на родительский Grid  
  							if type('this.parent.parent.Quick') = 'O' and !isnull(this.parent.parent.Quick)  
  							else  
  								this.parent.parent.Quick = createobject('QuickSearchGrid',this)   
 								* Определяем тип выражения  
  								do case  
  									case type('this.value') $ 'C M'  
  										this.parent.parent.Quick.txt1.value = ''  
  									case type('this.value') $ 'N Y'  
  										this.parent.parent.Quick.txt1.value = val(chr(nKeyCode))  
  									case type('this.value') $ 'D'  
  										this.parent.parent.Quick.txt1.value = ctod(chr(nKeyCode))  
  									case type('this.value') $ 'T'  
  										this.parent.parent.Quick.txt1.value = ctoT(chr(nKeyCode))  
  								endcase  
  							endif  
  							this.parent.parent.Quick.show( 2 )  
    
  							this.parent.parent.Quick.txt1.setfocus()  
  							this.parent.parent.Quick.txt1.refresh()  
    
  							this.parent.parent.Quick.top =  thisform.top + mrow(thisform.name)*FONTMETRIC( 1 )  
  							this.parent.parent.Quick.left = thisform.left + mcol(thisform.name)*FONTMETRIC( 6 )  
    
  						endif  
  				endcase  
  			endif  
  	ENDPROC  
    
    
  ENDDEFINE  
    
 **************************************************  
  DEFINE CLASS grids AS grid  
    
  	DeleteMark = .F.  
  	Height =  200   
  	RecordMark = .F.  
  	SplitBar = .F.  
  	Width =  320   
  	GridLineColor = RGB( 192 , 192 , 192 )  
  	Name = "grids"  
    
 	*-- Свойство для привязки быстрого поиска  
  	quick = .F.  
  	PROCEDURE Init  
  		local i, lens  
  		lens =  0 . 9  * this.width/this.columnCount  
  		lens = iif(lens <  70 , 70 ,lens)  
 		* заменяем поля ввода на свои  
  		for i =  1  to this.columnCount  
 		* установка св - в колонок  
    
  			this.columns(i).width = lens  
  			if this.columns(i).currentcontrol $ 'Text1'  
  				this.columns(i).removeobject('text1')  
  				this.columns(i).addobject('textboxs1','textboxs')  
  				this.columns(i).currentcontrol = 'textboxs1'  
  				this.columns(i).bound = .t.  
  				this.columns(i).alignment =  3   
  				this.columns(i).selectonentry = .t.  
  				with this.columns(i).textboxs1  
  					.visible = .t.  
  					.borderstyle =  0   
  					.margin =  0   
  				endwith  
  				this.columns(i).Header1.alignment =  2   
  			endif  
  		endfor  
  	ENDPROC  
    
  ENDDEFINE  
    
  DEFINE CLASS quicksearchgrid AS toolbar  
    
  	Caption = "Быстрый Поиск"  
  	Height =  29   
  	Left =  0   
  	Top =  0   
  	Width =  203   
  	ShowWindow =  1   
  	Name = "quicksearchgrid"  
    
 	*-- Ссылка на Grid который вызвал поиск  
  	parentgrid = .F.  
    
    
  	ADD OBJECT txt1 AS txt WITH ;  
  		Alignment =  1 , ;  
  		Height =  23 , ;  
  		Left =  5 , ;  
  		SelectOnEntry = .F., ;  
  		StatusBarText = "Быстрый поиск", ;  
  		ToolTipText = "Быстрый поиск", ;  
  		Top =  3 , ;  
  		Width =  193 , ;  
  		Name = "TXT1"  
    
    
  	PROCEDURE Init  
  		Lparameters ParentGrid  
 		* Ссылка на TextBox в Grid который вызвал поиск  
  		if parameters() =  1   
  			This.ParentGrid = ParentGrid  
  		endif  
  	ENDPROC  
  ENDDEFINE  
    
    
  DEFINE CLASS txt AS TextBoxs  
  	Height =  23   
  	SelectOnEntry = .T.  
  	Width =  287   
  	NullDisplay = "'Нет'"  
  	Name = "txt"  
    
  	PROCEDURE KeyPress  
  		LPARAMETERS nKeyCode, nShiftAltCtrl  
  		do case  
  			case nKeyCode =  13   
 			* нажали ввод. Ищем запись удовлетв. условию.  
  				set exact off  
 		*set step on  
  		LOCAL cc  
  				do case  
  					case type('this.value') = 'C' or type('this.value') = 'M'  
 					* для поиска в символьных данных  
  						cc = [locate for LIKEC(UPPER('*] + upper(allt(this.value )) + [*'),UPPER(] + allt(this.parent.parentGrid.controlSource) + [))]  
  						&cc  
 		*				locate for upper(left(allt(eval(this.parent.parentGrid.controlSource)),len(allt(this.value)) )) = upper(allt(this.value ))  
  					case type('this.value') = 'N' or type('this.value') = 'Y'  
 					* для поиска в числовых данных  
  						cc = 'locate for ' + allt(this.parent.parentGrid.controlSource) + ' = ' + allt(str(this.value, 15 , 5 ))  
  						&cc  
  					case type('this.value') = 'T'  
 					* для поиска в данных ДатаТайм  
  						cc = 'locate for ' + allt(this.parent.parentGrid.controlSource) + ' = ' + '{' + allt(ttoc(this.value)) + '}'  
  						&cc  
  					case type('this.value') = 'D'  
 					* для поиска в данных Дата  
  						cc = 'locate for ' + allt(this.parent.parentGrid.controlSource) + ' = ' + '{' + allt(dtoc(this.value)) + '}'  
  						&cc  
  					otherwise  
  						locate for eval(this.parent.parentGrid.controlSource) = this.value   
  				endcase  
  				if found()  
  					this.parent.parentGrid.parent.parent.afterrowcolchange()  
  				endif  
  				this.parent.parentGrid.parent.parent.Quick = null  
  				set exact on  
  			CASE nKeyCode =  27  and nShiftAltCtrl =  0   
 			* нажали esc  
  				this.parent.parentGrid.parent.parent.Quick = null  
    
  		endcase  
    
  		this.parent.parentGrid.setfocus()  
  	ENDPROC  
    
    
  	PROCEDURE LostFocus  
  		this.keypress( 13 , 0 )  
  	ENDPROC  
    
    
  ENDDEFINE  
    
...
Рейтинг: 0 / 0
как подцепить активный Row в Gride
    #34113426
Strong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex11100пример не мой

Спасибо за помощь но не нашел где там перемещение формы в зависимости от текущей строчки грида.


valerykaПодменяешь название поля на набираемый текст,
по таймеру либо по ENTER сбрасываешь обратно,
а уж, какой код повесишь на поиск твое дело.

а если пользователь ошибся в первой букве слова как букву удалить?
векспесить все слово?

PaulWistЧестно говоря не знаю поможет или нет.

Посмотри пример, надо запустить код и на строчке грида набрать какую-нибудь цифру, затем нажать Enter (делался для 5-ки, правда в 9-ке этот код работает не корректно при определенных условиях)


Это как раз примерно то что у меня, только здесь форма поиска также заслоняет текущую строчку.
...
Рейтинг: 0 / 0
как подцепить активный Row в Gride
    #34113634
valeryka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а если пользователь ошибся в первой букве слова как букву удалить?
векспесить все слово?



А сколько пользователь набирает по твоему букв для поиска, ведь не пишет он там роман.

По моему опыту обходится 5-6 символами.
...
Рейтинг: 0 / 0
как подцепить активный Row в Gride
    #34114394
Strong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
valeryka
а если пользователь ошибся в первой букве слова как букву удалить?
векспесить все слово?



А сколько пользователь набирает по твоему букв для поиска, ведь не пишет он там роман.

По моему опыту обходится 5-6 символами.

ну вот человек набрал 5 символов, глядь а первую букву напутал, и вместо того чтобы стандартно перейти на 4 символа влево и заменить одну! букву он вынужден удалять все слово и потом печатать его снова. Хороший интерфейс ничего не скажешь, удобно.... К тому же поиск достаточно тривиальная операция а в Вашем примере вместо привычного для пользователя интерфейса применяется замена определенной надписи уже несущей смысловую нагрузку. Не дай бог пользователь решит что он правит название чего либо.
В общем для меня лично подобный вариант неприемлим.
...
Рейтинг: 0 / 0
как подцепить активный Row в Gride
    #34114472
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Strong Это как раз примерно то что у меня, только здесь форма поиска также заслоняет текущую строчку

Измени координаты, что бы не заслонялась текущая строка - делов-то.

Код: plaintext
1.
this.parent.parent.Quick.top =  thisform.top + mrow(thisform.name)*FONTMETRIC( 1 )  +  20 
this.parent.parent.Quick.left = thisform.left + mcol(thisform.name)*FONTMETRIC( 6 )  +  20  
...
Рейтинг: 0 / 0
как подцепить активный Row в Gride
    #34114721
valeryka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не дай бог пользователь решит что он правит название чего либо.


Править чего либо надо на формах редактирования, а не где попало
...
Рейтинг: 0 / 0
13 сообщений из 38, страница 2 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / как подцепить активный Row в Gride
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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