powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / тоолбар
1 сообщений из 1, страница 1 из 1
тоолбар
    #34016745
IgorProgrammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вин-2000
Лис-8

Сохронение место расположения тоолбара

Вроде как работает
Код: 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.
my_form = create("ss")
my_form.Show
ss = create("sditb1",'standart')
ss.Visible=.T.
READ EVENTS

DEFINE CLASS ss AS Form
	ShowWindow =  2 
	AutoCenter = .T.
	PROCEDURE QueryUnload
		IF TYPE("standart")="O" AND !ISNULL(standart)
			standart.sohr_toolbar
			RELEASE standart
		ENDIF
	ENDPROC
	PROCEDURE destroy
		CLEAR EVENTS
	ENDPROC
ENDDEFINE

DEFINE CLASS sditb1 AS toolbar

	Caption = ""
	Height =  29 
	Left =  2 
	Top =  3 
	Width =  278 
	ShowWindow =  1 
	NOd_left =  0 
	NOd_top =  0 
	NOd_height =  0 
	NOd_width =  0 
	d_left =  0 
	d_top =  0 
	dock_position =  0 
	old_dock_position =  0 
	Mouse_Move = .F.
	Name = "vrem"

	ADD OBJECT cmd1 AS commandbutton WITH ;
		Top =  3 , ;
		Left =  5 , ;
		Height =  23 , ;
		Width =  23 , ;
		Caption = "1", ;
		ToolTipText = "", ;
		SpecialEffect =  2 , ;
		ForeColor = RGB( 0 , 255 , 0 ), ;
		Name = "cmd1"

	ADD OBJECT cmd2 AS commandbutton WITH ;
		Top =  3 , ;
		Left =  5 , ;
		Height =  23 , ;
		Width =  23 , ;
		Caption = "2", ;
		ToolTipText = "", ;
		SpecialEffect =  2 , ;
		ForeColor = RGB( 0 , 255 , 0 ), ;
		Name = "cmd2"

	PROCEDURE Init
		PARAMETER name_tool
		PUBLIC &name_tool
		&name_tool = This
		THIS.Name = name_tool
		IF !FILE(name_tool+'.txt')
			This.Dock( 0 )
			RETURN
		ENDIF
		my_doc_p = FILETOSTR(name_tool+'.txt')
		my_and = LEN(my_doc_p) - LEN(STRTRAN(my_doc_p,CHR( 2 ),''))
		FOR my_t =  1  TO my_and
			my_nach = IIF(my_t= 1 , 1 ,AT(CHR( 2 ),my_doc_p,my_t- 1 )+ 1 )
			my_sikoko = IIF(my_t= 1 ,AT(CHR( 2 ),my_doc_p)- 1 ,AT(CHR( 2 ),my_doc_p,my_t)-my_nach)
			my_vip = SUBSTR(my_doc_p,my_nach,my_sikoko)
			&my_vip
			RELEASE my_vip
		ENDFOR
		my_left_chast = IIF(This.old_dock_position = - 1 ,'NO','')
		This.dock(This.old_dock_position,This.&my_left_chast.d_left,This.&my_left_chast.d_top)
		my_left_chast = IIF(This.dock_position = - 1 ,'NO','')
		This.dock(This.dock_position,This.&my_left_chast.d_left,This.&my_left_chast.d_top)
		my_left_chast = IIF(This.old_dock_position = - 1 ,'NO','')
		This.dock(This.old_dock_position,This.&my_left_chast.d_left,This.&my_left_chast.d_top)
		my_left_chast = IIF(This.dock_position = - 1 ,'NO','')
		This.dock(This.dock_position,This.&my_left_chast.d_left,This.&my_left_chast.d_top)
	ENDPROC

	PROCEDURE dblClick
		my_position = This.DockPosition
		my_left_chast = IIF(my_position = - 1 ,'NO','')
		This.my_pologenie(my_left_chast)
		my_left_chast = IIF(This.old_dock_position = - 1 ,'NO','')
		This.ustan_pologenie(This.old_dock_position,my_left_chast,.T.)
		This.old_dock_position = my_position
		NODEFAULT
	ENDPROC

	PROCEDURE MouseDown
		LPARAMETERS nButton, nShift, nXCoord, nYCoord
		IF This.DockPosition # - 1 
			This.Mouse_Move = .T.
		ENDIF
	ENDPROC

	PROCEDURE MouseUp
		LPARAMETERS nButton, nShift, nXCoord, nYCoord
		IF This.DockPosition = - 1  AND This.Mouse_Move
			This.ustan_pologenie(- 1 ,'NO')
		ENDIF
		This.Mouse_Move = .F.
	ENDPROC

	PROCEDURE Undock
		my_left_chast = IIF(This.DockPosition = - 1 ,'NO','')
		This.my_pologenie('')
		This.old_dock_position = This.DockPosition
		NODEFAULT
	ENDPROC

	PROCEDURE BeforeDock
		LPARAMETERS nLocation
		IF This.DockPosition=- 1  AND nLocation#- 1 
			This.my_pologenie('NO')
			This.old_dock_position = This.DockPosition
		ENDIF
	ENDPROC

	PROCEDURE my_pologenie
		PARAMETERS dop_pol
		IF This.left< 0  OR This.top< 0 
			RETURN
		ENDIF
		This.&dop_pol.d_left = This.left
		This.&dop_pol.d_top = This.top
		IF !EMPTY(dop_pol)
			This.&dop_pol.d_height = This.height
			This.&dop_pol.d_width = This.width
		ENDIF

	PROCEDURE ustan_pologenie
		PARAMETERS polog, dop_pol, top_left_true
		IF top_left_true
			This.dock(polog,This.&dop_pol.d_left,This.&dop_pol.d_top)
		ENDIF
		IF !EMPTY(dop_pol)
			IF This.&dop_pol.d_height# 0  AND This.&dop_pol.d_width# 0 
				This.height = This.&dop_pol.d_height+ 2 
				This.width = This.&dop_pol.d_width+ 2 
			ENDIF
		ENDIF

	PROCEDURE sohr_toolbar
		my_left_chast = IIF(This.DockPosition = - 1 ,'NO','')
		This.my_pologenie(my_left_chast)
		STORE '' TO toolbars
		toolbars = name_tool+'.NOd_left='+ALLTRIM(STR(This.NOd_left))+CHR( 2 )+;
				name_tool+'.NOd_top='+ALLTRIM(STR(This.NOd_top))+CHR( 2 )+;
				name_tool+'.NOd_height='+ALLTRIM(STR(This.NOd_height))+CHR( 2 )+;
				name_tool+'.NOd_width='+ALLTRIM(STR(This.NOd_width))+CHR( 2 )+;
				name_tool+'.d_left='+ALLTRIM(STR(This.d_left))+CHR( 2 )+;
				name_tool+'.d_top='+ALLTRIM(STR(This.d_top))+CHR( 2 )+;
				name_tool+'.old_dock_position='+ALLTRIM(STR(This.old_dock_position))+CHR( 2 )+;
				name_tool+'.dock_position='+ALLTRIM(STR(This.DockPosition))+CHR( 2 )
		STRTOFILE(toolbars,name_tool+'.txt')
	ENDPROC
ENDDEFINE

Но уж сильно накручено... Да и колупался я долго...
А хочется что б работал как в МС-офисе.
Меня интересует можно ли все эт сделать более проще...
Особенно меня интересует метод UnDock.
Почему он не срабатывает при перетаскивании а перед MouseUp.
И как это обошли разработчики МС-офиса
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / тоолбар
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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