:: Visual Foxpro, Foxpro for DOS
Создание формы программным способом
lemenev
Автор

Сообщений: 113
Дата регистрации: 23.06.2022
Новую форму можно создавать визуальными средствами, а можно программно с помощью CREATEOBJECT('form') или с помощью предварительно созданного класса DEFINE CLASS form1 AS form. С визуальными средствами у меня проблем нет, а с программным созданием возникают вопросы.
Допустим, я хочу создать простую, но не совсем примитивную форму, на которой было бы несколько надписей, несколько полей ввода, грид, несколько кнопок. Хочу, чтобы это всё хоть как-то «смотрелось». Например, как в приложении.

На форуме много примеров программного создания форм. Вопросы к тем, кто использует подобный подход.

1. Где вы берёте координаты расположения и все размеры элементов формы. Или долго- долго буквально по пикселям подбираете нужные значения, постоянно запуская на выполнение, чтобы увидеть, что получается?
2. Помните ли вы на память имена всех свойств и методов всех контролов?
3. Помните ли вы на память значения всех свойств? Например, я хочу всем элементам формы приписать свойство якорь (Anchor), или что-то прокрасить.
4. А если для всего подобного приходится визуальными средствами создавать форму, размещать на ней элементы и смотреть интересующее в окне Properties, то чего это всё стоит?
Ratings: 0 negative/0 positive
Re: Создание формы программным способом
akvvohinc

Сообщений: 4224
Откуда: Москва
Дата регистрации: 11.11.2008
lemenev
С визуальными средствами у меня проблем нет, а с программным созданием возникают вопросы.
Главный вопрос - какая необходимость заставляет вас использовать "программный способ" создания форм.

Когда-то визуальных средств создания SCREEN (в дальнейшем FORM) в Фоксе не существовало, а их создание как раз и было вызвано, в первую очередь, тем, чтобы облегчить жизнь программистам.
Так что для возврата "в пещеры" должны быть очень веские причины.

А у вас, как я понимаю, имеется лишь "чисто академический" интерес к вопросу.

Если же по каким-то причинам вы желаете избавиться от файлов SCX в пользу PRG, то ничто не мешает сначала создать форму визуально, а затем перевести код в PRG. Но понятно, что дальнейшее сопровождение таких форм будет сопровождено с описываемыми вами трудностями.

Кстати, я не выяснял, но вполне вероятно, существуют генераторы кода SCX->PRG и PRG->SCX.
Очевидно, что создать первый особых проблем не составляет, второй - чуть сложнее, но тоже ничего сверхъестественного.
Ratings: 0 negative/0 positive
Re: Создание формы программным способом
PaulWist

Сообщений: 14622
Дата регистрации: 01.04.2004
Всё просто.

1. Рисуешь форму в дизайнере
2. File - SaveAsClass
3. Открываешь библиотеку классов, куда сохранил форму Tools - ClassBrowser.
3.1. В ClassBrowser жмёшь на 4 кнопку View class code

PS для простых форм код будет работать, для сложных придётся кое что править.


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

Сообщений: 464
Откуда: Одинцово
Дата регистрации: 17.12.2002
Dynamic Forms github.com


------------------
Глупость - это не отсутствие ума, это такой ум.
Ratings: 0 negative/0 positive
Re: Создание формы программным способом
lulgu

Сообщений: 1838
Дата регистрации: 30.11.2016
akvvohinc
Кстати, я не выяснял, но вполне вероятно, существуют генераторы кода SCX->PRG и PRG->SCX.
Очевидно, что создать первый особых проблем не составляет, второй - чуть сложнее, но тоже ничего сверхъестественного.

Немножко добавлю.
Форму можно открыть непосредственно в ClassBrowser (меню "тип файлов" внизу) и сохранить в кодах.
Для обратного преобразования можно найти поиском программу PrgToVcx, но работа с ней не так уж проста.
Проще подключать .prg с формой через SET PROCEDURE.
Ratings: 0 negative/0 positive
Re: Создание формы программным способом
lulgu

Сообщений: 1838
Дата регистрации: 30.11.2016
lemenev
С визуальными средствами у меня проблем нет

Сомнительное утверждение, на хвастовство смахивает.

В VFP9 работают в .vcx, это ООП, с .prg работают как в FPD.
Это разные идеологии программирования.

В VFP .prg имеет смысл использовать:
- как процедурные файлы для утилит общего назначения;
- для законченных специфичных модулей или объектов, когда решение в .vcx громоздко;
- может еще что-то найдется.
Ratings: 2 negative/0 positive
Re: Создание формы программным способом
of63

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
> когда решение в .vcx громоздко

Лулгу, лично для тебя ) VCX - это просто классический набор "ООП" программирования, а именно - предоставляются обьекты "свойства и методы", которые можно клонировать. Предоставлены средства колонирования (ну, в VFP клонировния обьектов не сделали), но можно сделать искусственно, как обычно, копируютс\ только указатели на обьекты... все от си-шной парадигмы (небольшой набор операторов, которые может делать процессор, но только в стандартных фразах)

Доб. Все "программирование" сводится только к упрощению кода, но не к качественно новому кодирования (как кодирование квантовых обьектов, в ку-битах). Ничего нового по дороге программирования вы не увидите.



Исправлено 1 раз(а). Последнее : of63, 08.09.22 17:19
Ratings: 0 negative/0 positive
Re: Создание формы программным способом
lulgu

Сообщений: 1838
Дата регистрации: 30.11.2016
Оффа, это другая идеология программирования, а ты про ООП рассуждаешь как древний FPD-ник.

ЗЫ. Тебе надо бы найти переводчика твоих кодов, и твои решения можно было бы сразу отправлять на GitHub.
Ratings: 2 negative/0 positive
Re: Создание формы программным способом
of63

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Луглу, ОГП - это и есть "современность" (методы + свойсва в одном образовании.

Мои коды - тривиальны, просто их много (подпрограмм). Из них построены тоже тривиальные подпрограммы, и даже "классы", но в исходниках - все тривиально, нативно

Доб. > это другая идеология программирования,

У тебя какая? (без политоса)

> и твои решения можно было бы сразу отправлять на GitHub.
я не читаю коды прогеров, комментарии читаю, писдеш "о" )

() Ну, может, стоило "почитать"... а именно какой код?!

Хороший код - он "сразу виден", типа квадрата Малевича. мтк в математике все кодЫ...



Исправлено 4 раз(а). Последнее : of63, 08.09.22 18:02
Ratings: 0 negative/0 positive
Re: Создание формы программным способом
lulgu

Сообщений: 1838
Дата регистрации: 30.11.2016
Ничего необычного.
Для начала попробуй в своих кодах освоить TasTrade, это учебное приложение, твоя тематика.

ЗЫ. Или ты просто опять потрындеть хочешь?
Ratings: 0 negative/0 positive
Re: Создание формы программным способом
of63

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Ты и не трындишь, в моих "понятиях"

Музыку предложи, свою, например )

() освоить TasTrade, это учебное приложение
ты себя убиваешь



Исправлено 1 раз(а). Последнее : of63, 08.09.22 18:31
Ratings: 0 negative/0 positive
Re: Создание формы программным способом
leonid

Сообщений: 3204
Откуда: Рига
Дата регистрации: 03.02.2006
lulgu
с .prg работают как в FPD.

О, господи. Какое невежество!
Ratings: 0 negative/2 positive
Re: Создание формы программным способом
lulgu

Сообщений: 1838
Дата регистрации: 30.11.2016
leonid
lulgu
с .prg работают как в FPD.

О, господи. Какое невежество!

Просвети, можешь на своих примерах.

ЗЫ. Дурак сказать ума не надо.
Ratings: 0 negative/0 positive
Re: Создание формы программным способом
Ydin

Сообщений: 7648
Откуда: Киев
Дата регистрации: 16.12.2005
lulgu
ЗЫ. Дурак сказать - ума не надо.
По-детски!
Цитата:
Прощание. Перрон вокзала,
Глядят глаза понуро вниз.
И тут она ему сказала:
За мной, мой милый, не гонись.

1. На создании формы SCX (VCX) есть инструменты, где Фокс тебе помогает в Modi Form (Modi Class), там Дизайнеры. Но надо почитать.
2. Без него тоже можно. Но надо читать больше. А доходит до сознания быстрее, если проходил пункт 1.
А что лучше? От мозгов и усердия зависит, от першения в горле и нехватки кислорода.
IF Читаешь и сразу все понятно
- Ветер в парус
ELSE
- п.1
. п.2
ENDIF



Исправлено 2 раз(а). Последнее : Ydin, 09.09.22 21:19
Ratings: 0 negative/0 positive
Re: Создание формы программным способом
lulgu

Сообщений: 1838
Дата регистрации: 30.11.2016
Еще один просветитель.

ЗЫ. Из prg хотя бы научились вылезать, только звон ...
Ratings: 2 negative/0 positive
Re: Создание формы программным способом
Ydin

Сообщений: 7648
Откуда: Киев
Дата регистрации: 16.12.2005
lulgu
Еще один просветитель.
ЗЫ. Из prg хотя бы научились вылезать, только звон ...

Так с prg же и начинают. Традиционно.
Лулгулушка, рассуди ты нас, стариков, сердешный!
Уже ж и не помним ни хрена.

А ты ("Вы") хоть молод (или молодая), но вон сколько в словопрениях с ИК опытом обогатилось то. На зависть!

Цитата:
А чай не водка, много не выпьешь



Исправлено 2 раз(а). Последнее : Ydin, 09.09.22 21:34
Ratings: 0 negative/0 positive
Re: Создание формы программным способом
lulgu

Сообщений: 1838
Дата регистрации: 30.11.2016
Ydin

Так с prg же и начинают.

Вы, заумные просветители, и сейчас там сидите, где начинали четверть века назад.
Ratings: 2 negative/0 positive
Re: Создание формы программным способом
of63

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Не четверть, а уже 0.5 а с ДОС-а (86-го процессора), а многие здесь и до с того "прекрасного" момента. И сейчас мы тебя просвещяем, а не ты нас.
Ratings: 0 negative/0 positive
Re: Создание формы программным способом
sphinx

Сообщений: 31188
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
lulgu
Ydin

Так с prg же и начинают.

Вы, заумные просветители, и сейчас там сидите, где начинали четверть века назад.

Лично я не возражаю. Но если коллегам выложить, КАК надо - это будет лучше тысячи слов. Да и я поучусь, мне не зазорно.


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: Создание формы программным способом
Каратаев

Сообщений: 3977
Откуда: Алматы
Дата регистрации: 04.12.2001
lemenev
Где вы берёте координаты расположения и все размеры элементов формы. Или долго- долго буквально по пикселям подбираете нужные значения, постоянно запуская на выполнение, чтобы увидеть, что получается?
Это же рассчитывается програмно. Размеры формы ведь известны. Размеры добавляемых объектов тоже. А дальше простой расчёт. Вот, например, выдрал из своей программы:
********************** Добавляем объект ***********************
IF TYPE("oToolsSpr.Name") == "C"
This.addobject("myTools",oToolsSpr.Name)
This.Container1.Anchor = 0
This.Grid1.Anchor = 0
This.cmdtoexcel1.Anchor = 0
This.Height = This.Height + This.myTools.Height + 10
WITH This.myTools
.Top = This.Container1.Top + This.Container1.Height + 5
.Left = (This.Width - .Width)/2
.anchor = 14
.Visible = .T.
ENDWITH
IF PEMSTATUS(This.myTools, 'myKeyPress',5) = .T.
=BINDEVENT(This,'KeyPress',This.myTools,'myKeyPress')
ENDIF
This.Container1.Anchor = 14
This.Grid1.Anchor = 165
This.cmdtoexcel1.Top = This.Container1.Top
This.cmdtoexcel1.Anchor = 4
* This.Container1.Visible = .F.
ENDIF
Тут добавляется контейнер с кнопками, по аналогии можно и любой другой объект добавить.


------------------
Никогда не бывает настолько плохо, чтобы не могло быть еще хуже.
Ratings: 0 negative/0 positive


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

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

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