powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / DragOver()
6 сообщений из 6, страница 1 из 1
DragOver()
    #34201604
men dea
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из одного Грида в другой переношу (by Drag) ячейку. Хочу, чтобы в момент пролета над вторым Гридом, каким-то образом выделялись его ячейки под переносимым контролом. Например, жирным шрифтом или цветом.
Но с ячейками Грида не выходит.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Thisform.Grid1.Column1.Text1.DragOver()

LPARAMETERS oSource, nXCoord, nYCoord, nState

Do Case
Case nState= 0 
	Thisform.grid1.column1.text1.FontBold =.T.
Case nState= 1 
	Thisform.grid1.column1.text1.FontBold =.F.
Endcase
this.refresh
А вот, если это будет некий Thisform.text1 ,то все получается. Что не так делаю?
...
Рейтинг: 0 / 0
DragOver()
    #34201785
Проходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Увидел вот этот жуткий case

Код: plaintext
1.
2.
3.
4.
5.
Do Case
Case nState= 0 
	Thisform.grid1.column1.text1.FontBold =.T.
Case nState= 1 
	Thisform.grid1.column1.text1.FontBold =.F.
Endcase
и не смог пройти мимо

Код: plaintext
Thisform.grid1.column1.text1.FontBold = (nState= 0 )

Мне это кажется более понятным, более быстродействющим, более лаконичным.
...
Рейтинг: 0 / 0
DragOver()
    #34201793
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Используйте OleDragDrop + GridHitTest
...
Рейтинг: 0 / 0
DragOver()
    #34203057
men dea
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проходящему: case был сделан для удобства. там можно легко изменять свои желания. Если бы менял цвет, то вашей конструкцией так легко не обойтись.

PaulWist Я это пробовал, но у меня не получилось. Научите, плз, куда что ставить.
...
Рейтинг: 0 / 0
DragOver()
    #34203610
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
men deaкуда что ставить.

С выделением отдельной ячейки сам доточишь.

Код: 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.
PUBLIC o
o = CREATEOBJECT('frm')
o.show()

DEFINE CLASS frm as Form 
name = 'frm'
width =  375 
PROCEDURE load
CREATE CURSOR test (f1 i, f2 i)
FOR i =  1  TO  100 
	INSERT INTO test VALUES (i,  10  - i)
ENDFOR 
GO TOP IN test 
ENDPROC 
PROCEDURE init
WITH this
	.AddObject('cmd1','cmd')
	.cmd1.top =  24 
	.cmd1.left =  12 
	.cmd1.visible = .t. 

	.AddObject('grd1','grd')
	.grd1.top =  12 
	.grd1.left =  132 
	.grd1.visible = .t. 
	 
ENDWITH 
ENDPROC 
ENDDEFINE 

DEFINE CLASS cmd as CommandButton 
name = 'cmd'
Caption = 'Тащи меня на грид'
oledragmode =  1 
height =  25 
width =  110 
ENDDEFINE 

DEFINE CLASS grd as Grid 
name = 'grd'
columncount =  2 
oledropmode =  1 
HighlightStyle  =  2 
Highlight = .t.
AllowCellSelection = .t.
width =  241 

PROCEDURE oledragdrop
LPARAMETERS oDataObject, nEffect, nButton, nShift, nXCoord, nYCoord
LOCAL laArr[  1  ], lnEll 

DO CASE
	CASE oDataObject.GetFormat( "VFP Source Object" )
* пытаемся получить ссылку на обьект
		aa = oDataObject.GetData( "VFP Source Object", @laArr )
		WAIT WINDOW 'Уф - донесли' NOWAIT 
		NODEFAULT
	ENDCASE 
ENDPROC 

PROCEDURE oledragover
LPARAMETERS oDataObject, nEffect, nButton, nShift, nXCoord, nYCoord, nState

* Проверяем 
IF oDataObject.GetFormat( "VFP Source Object" )
	WAIT WINDOW 'Несём, что надо' nowait
	* пытаемся выделить то что под курсором
	LOCAL nWhere_Out, nRelRow_Out, nRelCol_Out,	nView_Out 
	
	nWhere_Out =  0 
	nRelRow_Out =  0 
	nRelCol_Out =  0 
	nView_Out =  0 
	WITH this
	IF .GridHitTest(nXCoord, nYCoord ;
   , @nWhere_Out , @nRelRow_Out , @nRelCol_Out , @nView_Out)
   

		IF nWhere_Out =  3 
		   .ActivateCell(nRelRow_Out, nRelCol_Out)
		   .Refresh()
   
		ENDIF 
	ENDIF 
	ENDWITH 

ELSE
	WAIT WINDOW 'Не то' nowait
ENDIF 
ENDPROC 
ENDDEFINE 
...
Рейтинг: 0 / 0
DragOver()
    #34204673
men dea
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
for PaulWist:

спасибо за код.
Все получилось. Только с OLEDrag-методами не понравилось. Как-то неудобно хватать записи для перетаскивания, не с первого раза "цепляются", и наглядность при перетаскивании теряется. Вернулся к своему варианту без OLE. Благодаря вашему куску с GridHitTest все привел в работоспособность.
:)
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / DragOver()
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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