powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Поскажите по Anchor у объектов и From Resize
3 сообщений из 3, страница 1 из 1
Поскажите по Anchor у объектов и From Resize
    #35733491
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет!

Такая ситуация: есть на форме PageFrame. Во время исполнения формы кол-во страниц может увеличиваться. Проблема в том, что при создании новой страницы все объекты на странице не анкоряццо :), т.е. если во время исполнения юзер увеличил форму в размерах, все объекты на _существующих_ страницах PageFrame-а ведут себя по соответствию с их св-вом Anchor, т.е. увеличиваются смещаются и т.п. Когда появляется новая страница на ней все объекты появляются в их изначальном положении и размере, т.е. на них как-бы не подействовало увеличение формы, оно и понятно - объекты тогда еще не существовали.

Вопрос - как на добавляемой странице всем объектам сказать что форма изменилась в размерах чтобы те соответственно по св-ву Anchor себя сместили/изменили в размерах?

Я это делал так: запоминаю текущие размеры формы, уменьшаю размеры формы до минимума, добавляю страницу, возвращаю форме размеры. Получается некрасиво и время от времени прога почему-то падает с жалобой на якобы нереальные размеры.

Сейчас я сделал иначе - при добавлении страницы все размеры и положения объектов копируются (перебором всех объектов в цикле) с первой страницы (страница в классе), но опять проблема - время от времени программа падает с сообщением что мол линк на объект невалидный. Там у него как-то получается ссылка без точек, т.е. вместо PageFrame1.Page1.lbl1 получается типа PageFrame1Page1lbl1 и падение...

мож это как-то попроще можно оформить?

спасибо

вфп9
...
Рейтинг: 0 / 0
Поскажите по Anchor у объектов и From Resize
    #35734007
homik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы добавил в форму св-во, в котором храню нормальные размеры формы.
А в ините листа проверка реалных размеров формы и нормальных размеров. При несовпадении - вызывать ресайз листа.

"Сейчас я сделал иначе - при добавлении страницы все размеры и положения объектов копируются (перебором всех объектов в цикле) с первой страницы (страница в классе), но опять проблема - время от времени программа падает с сообщением что мол линк на объект невалидный. Там у него как-то получается ссылка без точек, т.е. вместо PageFrame1.Page1.lbl1 получается типа PageFrame1Page1lbl1 и падение..."

У вас что-то в консерватории.
Пользуйте
авторВозвращается иерархия объекта для указанного объекта. Не доступна в режиме Design Time.
SYS(1272, oObjectName)
...
Рейтинг: 0 / 0
Поскажите по Anchor у объектов и From Resize
    #35735288
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Врядли там что-то по иерархии. Пришлось ввести проверку на существование аналогичного объекта на добавляемой странице, т.к. падения случались вроде бы именно там. Т.е. видимо ссылка в loThisPageChildObj получалась битая (без точек-разделителей) или m.loMainPageChildObj.Name возвращало хз че.
Код: 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.
   * ссыла на основную (первую) страницу
   loMainPage = this.Parent.Pages( 1 )

   * проходим по всем объектам в основной странице и 
   * берем у них значения атрибутов Width/Height/Top/Left
   FOR EACH loMainPageChildObj IN m.loMainPage.Objects

	 * ссыла на такой же объект на текущей странице, если есть
	 IF PEMSTATUS(this,m.loMainPageChildObj.Name, 5 )
	    loThisPageChildObj = GETPEM(this,m.loMainPageChildObj.Name)
	 ELSE
	    loThisPageChildObj = .NULL.
	 ENDIF
	 
	 * если такой же объект найден
	 IF VARTYPE(m.loThisPageChildObj)='O'

		* если у объекта есть св-во Якорь - запомним и занулим
		lnAchorWas =  0 
		IF PEMSTATUS(m.loMainPageChildObj,'Anchor', 5 )
		   lnAchorWas = m.loThisPageChildObj.Anchor
		   m.loThisPageChildObj.Anchor =  0 
		ENDIF

		loThisPageChildObj.Width = loMainPageChildObj.Width
		loThisPageChildObj.Height = loMainPageChildObj.Height
		loThisPageChildObj.Top = loMainPageChildObj.Top
		loThisPageChildObj.Left = loMainPageChildObj.Left

		* возвращаем якорь, если тот был выставлен
		IF m.lnAchorWas >  0 
		   m.loThisPageChildObj.Anchor = m.lnAchorWas
		ENDIF

	  ENDIF
	 
   ENDFOR

А по поводу запоминать где-то размеры формы - именно так я и делал первым способом.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Поскажите по Anchor у объектов и From Resize
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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