:: Visual Foxpro, Foxpro for DOS
Перемещение объектов на форме
AngelOKES
Автор

Сообщений: 828
Дата регистрации: 08.02.2012
Вопрос очень простой, но ответ я на него пока найти не могу:
Можно ли дать пользователю возможность перемещать объекты на форме с дальнейшим запоминанием положений, чтобы при последующем открытии пользователь видел объекты на тех местах, на которые он их поставил, ну и конечно чтобы была возможность сбросить пользовательские настройки если он сильно заигрался..
Пока не пойму куда копать, может кто сталкивался?
Ratings: 0 negative/0 positive
Re: Перемещение объектов на форме
PaulWist

Сообщений: 14625
Дата регистрации: 01.04.2004
Открываешь форму как таблицу, в ней и структура данных есть и сами настройки формы, изобретать ничего не надо.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Перемещение объектов на форме
Дмитрий Петров

Сообщений: 3071
Откуда: Пермь
Дата регистрации: 09.07.2001
Я делал класс, который на ините обходит форму и
востанавливает положение и размеры всех контролов на форме. На дестрой сохраняет в локальную дбф.
Сейчас поищу

На работе не оказалось.. Дома гляну
PS
А про перетаскивание- в свойствах контролов на форме устанавливаешь DragMode= automatic

а у самой формы в методе DragDrop ловишь положение перетаскиваемого объекта
LPARAMETERS oSource, nXCoord, nYCoord
oSource.Left=nXCoord
oSource.Top=nYCoord



Исправлено 2 раз(а). Последнее : Дмитрий Петров, 30.07.15 12:32
Ratings: 0 negative/0 positive
Re: Перемещение объектов на форме
AngelOKES
Автор

Сообщений: 828
Дата регистрации: 08.02.2012
А подробнее? Можно пример, как мне открыть форму как таблицу при выполнении программы?
Ratings: 0 negative/0 positive
Re: Перемещение объектов на форме
AngelOKES
Автор

Сообщений: 828
Дата регистрации: 08.02.2012
Спасибо! Уже понял с чего начать, а изменение размера или поворот сделать в контекстном меню
Ratings: 0 negative/0 positive
Re: Перемещение объектов на форме
PaulWist

Сообщений: 14625
Дата регистрации: 01.04.2004
Моя реплика относилась к :

AngelOKES
...с дальнейшим запоминанием положений...


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Перемещение объектов на форме
h.i.a.

Сообщений: 4002
Откуда: Мурманск/Спб/Мск
Дата регистрации: 18.11.2005
AngelOKES
Можно ли дать пользователю возможность перемещать объекты на форме с дальнейшим запоминанием положений, чтобы при последующем открытии пользователь видел объекты на тех местах, на которые он их поставил, ну и конечно чтобы была
А смысл? Это не стандартный GUI и таких реализаций я не помню ни в одной программе. Запоминается обычно:
1. Положение / размер окна (При этом контроллы с настроенным anchor выстраиваются сами в зависимости от размера окна)
2. Положение горизонтальных/вертикальных сплиттеров (но их еще в фоксе нужно для начала запилить самому + организовать взаимодействие с остальными контроллами формы.)
3. Состояние колонок грида: Последовательность, ширина, состояние visible.

А таскать по форме всякие кнопки/текстбоксы, да еще сохранять их положение честно говоря не вижу смысла, имхо баловство это.


------------------
Ratings: 0 negative/0 positive
Re: Перемещение объектов на форме
Дмитрий Петров

Сообщений: 3071
Откуда: Пермь
Дата регистрации: 09.07.2001
2 h.i.a
Судя по вопросам автора на sql.ru, он собрался блок схемы какие то рисовать.
Полигоны, линии. По крайней мере по его вопросам я сделал именно такой вывод
Ratings: 0 negative/0 positive
Re: Перемещение объектов на форме
h.i.a.

Сообщений: 4002
Откуда: Мурманск/Спб/Мск
Дата регистрации: 18.11.2005
Тогда автору, конечно хоть пару слов потратить, что делает какой-то вариант графического редактора... Чтоб тут телепатию не практиковать.


------------------
Ratings: 0 negative/0 positive
Re: Перемещение объектов на форме
AngelOKES
Автор

Сообщений: 828
Дата регистрации: 08.02.2012
Да, вы правильно меня поняли, так и есть мнемосхемы рисовать на форме и ещё сделать возможность масштабирования (тут совсем пока беда) и конечно же количество объектов на форме изначально нет совсем, то есть их нужно создать, это будут обычные кнопки и линии и естественно каждый элемент этой схемы очень важен!
Ratings: 0 negative/0 positive
Re: Перемещение объектов на форме
AngelOKES
Автор

Сообщений: 828
Дата регистрации: 08.02.2012
Нет мне не нужен графический редактор и рисовать по сути мне не нужно, мне нужны именно объекты, чтобы можно было например подсвечивать или как-то выделять нужные объекты, при чём 2 варианта, автоматические рисование (так скажем по умолчанию) и пользовательский (чтобы можно было передвинуть элементы в более удобное положение для пользователя (но возможно это и не обязательно, но желательно)
Ratings: 0 negative/0 positive
Re: Перемещение объектов на форме
Дмитрий Петров

Сообщений: 3071
Откуда: Пермь
Дата регистрации: 09.07.2001
А в чем конкретно трудности возникли?
Не знаете как добавить объект на форму?
Давайте конкркретней
Ratings: 0 negative/0 positive
Re: Перемещение объектов на форме
AngelOKES
Автор

Сообщений: 828
Дата регистрации: 08.02.2012
Ну вначале этого дела были сложности и такие, сейчас пока работаю, думал может у кого-то был подобный опыт, так скажем обменяться опытом. Но проект большой получается, структуры разные и надо проработать общую логику работы
Ratings: 0 negative/0 positive
Re: Перемещение объектов на форме
AngelOKES
Автор

Сообщений: 828
Дата регистрации: 08.02.2012
не могу понять как мне создать процедуру выхода из ComboBox (MyList1), если создавать как класс, то там нельзя указывать те объекты которых ещё нет.

frmMyForm2 = Createobject('frmMyForm') && Create a Form
frmMyForm2.AddObject('MyList1','ComboBox')
frmMyForm2.AddObject('cQuit1','cQuit')
FormMax(frmMyForm2,550,793,800)
frmMyForm2.Show
frmMyForm2.Init
With frmMyForm2.cQuit1
.Top = frmMyForm2.Height/2-.Height/2
.Left = frmMyForm2.Width/2-.Width/2
.Caption = ''
.Cancel = .T.
.Height = 25
.Visible =.T.
Endwith
With frmMyForm2.MyList1
.Top=5
.Left=5
.Width=100*nW
.RowSourceType=2
.BoundColumn=2
.BoundTo=.t.
.FontName='Courier New'
.FontSize=10*nW
.ColumnCount=2
.RowSource='SprMKR'
.Value=mmkr
.Visible =.T.
Endwith
Read Events && Start event processing
Define Class frmMyForm As Form
Caption = ''
Width=793
Height=550
Closable = .F.
Procedure DragDrop
Lparameters oSource, nXCoord, nYCoord
oSource.Left=nXCoord
oSource.Top=nYCoord
Procedure Init
Public nW, aaa, mmkr
Store 0 To nW, aaa
Store '01' To mmkr
aaa=SQLConnect('abon')
bb="select nr, mkr from Raion_ot"
SQLExec(aaa,bb,'SprMKR')
nW=Iif(Sysmetric(1)=800,1,(Sysmetric(21)-7)/793)
Enddefine
Define Class cQuit As CommandButton
Procedure Click
Clear Events
Enddefine



Исправлено 1 раз(а). Последнее : AngelOKES, 10.08.15 13:51
Ratings: 0 negative/0 positive
Re: Перемещение объектов на форме
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
AngelOKES
может у кого-то был подобный опыт, так скажем обменяться опытом.
Был. Не советую. Вообще не советую на фоксе это делать - крайне муторно. И работает медленно уже при паре сотен объектов на форме.
AngelOKES
как мне создать процедуру выхода из ComboBox (MyList1), если создавать как класс, то там нельзя указывать те объекты которых ещё нет.
Ничего не понял. Что такое "процедура выхода из комбо"?
А обращаться к "неизвестным" объектам на форме можно кучей разных способов (по разному тормозящих, кстати, в разных случаях - была тема сравнения скорости такого "непрямого" доступа). GETPEM, Form.Objects/Controls (при том можно по индексу перебирать а можно циклом FOR EACH), EVALUATE() и, наконец, макро.
Но ещё раз повторюсь - если в программе на форме будет более сотни подобных "рисованных объектов" то КРАЙНЕ не советую использовать фокс для реализации. И да - масштабирование, прокрутка холста, "выделение объектов" (в т.ч. групповое) - это геморрой с большой буквы Г.


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Перемещение объектов на форме
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
AngelOKES
Да, вы правильно меня поняли, так и есть мнемосхемы рисовать на форме и ещё сделать возможность масштабирования (тут совсем пока беда) и конечно же количество объектов на форме изначально нет совсем, то есть их нужно создать, это будут обычные кнопки и линии и естественно каждый элемент этой схемы очень важен!
А не попробовать ли , вместо фокса, сразу рисовать на ворде, например.
Или поискать, спец проги, бесплатные.

Если конечно, стоит серьезная задача. А не "что бы потренироваться"


------------------
Ratings: 0 negative/0 positive
Re: Перемещение объектов на форме
AngelOKES
Автор

Сообщений: 828
Дата регистрации: 08.02.2012
Мне необходимо прописать процедуру LostFocus() на объект MyList1, но не в создании класса, а так скажем на лету, я просто не понимаю возможно ли это. В классе я конечно могу прописать все нужные мне процедуры, но хотелось бы узнать есть ли другой путь (мне нужен другой путь!)

Аспид
А не попробовать ли , вместо фокса, сразу рисовать на ворде, например.
Или поискать, спец проги, бесплатные.

Если конечно, стоит серьезная задача. А не "что бы потренироваться"

Нет в ворде я рисовать умею, есть такой опыт, но всё что я хотел бы реализовать никак не совместимо с вордом, и да пускай объектов будет не то что пару сотен, пускай будет тысяча, но каждый элемент для меня очень важен (отображение детальной информации, поведение при перемещении, выделение цветом и т.д.)



Исправлено 1 раз(а). Последнее : AngelOKES, 11.08.15 06:38
Ratings: 0 negative/0 positive
Re: Перемещение объектов на форме
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
AngelOKES
Мне необходимо прописать процедуру LostFocus() на объект MyList1, но не в создании класса, а так скажем на лету, я просто не понимаю возможно ли это.
Можно например попробовать через BINDEVENT() навесить из какого-то заранее имеющегося фиктивного метода. Когда-то делал подобное для создаваемого на лету экземпляра класса.
А вообще говоря, в фоксе, как уже и заметили - всего при паре сотен элементов и действительно ведь большие тормоза начинаются. Так что насколько оправдана сама такая задача?


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)




Исправлено 1 раз(а). Последнее : Crispy, 11.08.15 07:10
Ratings: 0 negative/0 positive
Re: Перемещение объектов на форме
pasha_usue

Сообщений: 3650
Откуда: Е-бург
Дата регистрации: 06.10.2006
BINDEVENT
Ratings: 0 negative/0 positive
Re: Перемещение объектов на форме
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
AngelOKES
объектов будет не то что пару сотен, пускай будет тысяча, но каждый элемент для меня очень важен (отображение детальной информации, поведение при перемещении, выделение цветом и т.д.)
Тогда не стоит мучаться. Не взлетит. По определению)
Ищи другое.


------------------
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 26 (Гостей: 26)

© 2000-2024 Fox Club 
Яндекс.Метрика