OberonCore https://forum.oberoncore.ru/ |
|
Как правильно изменить размеры вьюшки-окна после ее создания https://forum.oberoncore.ru/viewtopic.php?f=24&t=2152 |
Страница 1 из 1 |
Автор: | Виталий [ Четверг, 03 Декабрь, 2009 16:00 ] |
Заголовок сообщения: | Как правильно изменить размеры вьюшки-окна после ее создания |
Господа, доброго всем. Встал вопрос, как после открытия вьюшки менять ее размеры, допустим создаю так: Код: PROCEDURE prepare; BEGIN m:=TextModels.dir.New(); txt.ConnectTo(m); v:=TextViews.dir.New(m); Views.OpenAux(v,"Результат"); END prepare; И вот окошко которое открывается слишком большое. В Делфи Width и Heigth а как в ББ? |
Автор: | Илья Ермаков [ Четверг, 03 Декабрь, 2009 16:04 ] |
Заголовок сообщения: | Re: Как правильно изменить размеры вьюшки-окна после ее создания |
Обычно v.context.SetSize(w, h) Для корневой вьюшки с ходу не уверен (хотя она не корневая, а вложенная в невидимый Documents.View). |
Автор: | Виталий [ Четверг, 03 Декабрь, 2009 16:36 ] |
Заголовок сообщения: | Re: Как правильно изменить размеры вьюшки-окна после ее создания |
SetSize пробовал. И используя костанты миллиметров из Рorts пробовал... Ничего не происходит, окно открывается попрежнему с таким же размером. |
Автор: | Илья Ермаков [ Четверг, 03 Декабрь, 2009 16:45 ] |
Заголовок сообщения: | Re: Как правильно изменить размеры вьюшки-окна после ее создания |
Тогда надо на вьюшку вручную наворачивать Documents.View и открывать уже его, настраивая у него размер (как через меню Toolds-Document Size). А то среда сама оборачивает Вашу вьюшку с размерами документа по-умолчанию. |
Автор: | Виталий [ Четверг, 03 Декабрь, 2009 16:55 ] |
Заголовок сообщения: | Re: Как правильно изменить размеры вьюшки-окна после ее создания |
Ок. Понял. Спасибо. |
Автор: | Евгений Темиргалеев [ Четверг, 03 Декабрь, 2009 17:06 ] |
Заголовок сообщения: | Re: Как правильно изменить размеры вьюшки-окна после ее создания |
Размер окна зависит от размера документа, который контейнер для корневого отображения. Т.что context.SetSize по смыслу не подходит. Models docu писал(а): PROCEDURE (c: Context) SetSize (w, h: INTEGER)
NEW, EMPTY Просит контейнер адаптировать размер отображения c к заданным ширине и высоте. Контейнер может выполнять или не выполнять этот запрос. |
Автор: | Евгений Темиргалеев [ Четверг, 03 Декабрь, 2009 17:29 ] |
Заголовок сообщения: | Re: Как правильно изменить размеры вьюшки-окна после ее создания |
Помню что подобное вроде делал... Нашел - может пригодится Код: PROCEDURE InitPage*;
CONST mm = Ports.mm; VAR v: V.View; c: Models.Context; d: Documents.Document; dm: Models.Model; w, h, l, t, r, b: INTEGER; decorate: BOOLEAN; BEGIN v := V.Focus(); IF v # NIL THEN c := v.context; ASSERT(c IS Documents.Context, 20); d := c(Documents.Context).ThisDoc(); dm := d.ThisView().ThisModel(); d.PollPage(w, h, l, t, r, b, decorate); Models.BeginModification(Models.invisible, dm); d.SetPage(w, h, 10 * mm, 15 * mm, w - 10 * mm, h - 10 * mm, Documents.decorate); Models.EndModification(Models.invisible, dm) END END InitPage; |
Автор: | Иван Горячев [ Пятница, 04 Декабрь, 2009 02:18 ] | ||
Заголовок сообщения: | Re: Как правильно изменить размеры вьюшки-окна после ее создания | ||
Ну тут два варианта. Если требуется изменить именно размер корневой вьюшки (читай документа) через некоторое время после её создания, то либо как указал Евгений, либо смотрите StdCmds.SetLayout/InitLayoutDialog Если требуется изменить только размер окна - есть Windows.Window.SetSize: Код: MODULE MyWinsize; IMPORT Windows; PROCEDURE Do*; VAR w : Windows.Window; BEGIN w := Windows.dir.First(); IF w # NIL THEN w.SetSize(200, 200) END END Do; END MyWinsize. А вообще держите:
|
Автор: | Виталий [ Пятница, 04 Декабрь, 2009 08:07 ] |
Заголовок сообщения: | Re: Как правильно изменить размеры вьюшки-окна после ее создания |
О-о-о спасибо. Модуль Windows подходит. А имея переменную View или Model можно получить Window, в которой вьюшка отображается. т.е. обратно идти от вьюхи к родительскому окну? |
Автор: | Иван Горячев [ Пятница, 04 Декабрь, 2009 08:27 ] |
Заголовок сообщения: | Re: Как правильно изменить размеры вьюшки-окна после ее создания |
В общем случае нельзя, поскольку одна модель может показываться в разных окнах. Если модель/отображение корневые, то проще пройти по всем окнам и проверить их, как у меня сделано в BbtWindows.StdLogWindow. |
Автор: | Виталий [ Пятница, 04 Декабрь, 2009 10:34 ] |
Заголовок сообщения: | Re: Как правильно изменить размеры вьюшки-окна после ее создания |
Ыгы... Ладно возьму на заметку. Спасибо. |
Автор: | Info21 [ Пятница, 04 Декабрь, 2009 12:44 ] |
Заголовок сообщения: | Re: Как правильно изменить размеры вьюшки-окна после ее создания |
Виталий писал(а): О-о-о спасибо. Модуль Windows подходит. ЕНе надо без нужды лезть в Windows!!!!Почему-то никто не сказал про свойства, а там есть про размеры (SetProp или как-то так, см. документацию к View). |
Автор: | Иван Горячев [ Пятница, 04 Декабрь, 2009 13:23 ] |
Заголовок сообщения: | Re: Как правильно изменить размеры вьюшки-окна после ее создания |
Свойства влияют на документы (модели, вьюшки). А если человеку нужно изменить именно размер окна - ему прямая дорога в Windows. Это же не HostWindows, в который действительно лучше не соваться. Да, окна - чужеродный элемент в ББ, но что поделать если они есть и приходится с ними работать ![]() |
Автор: | Виталий [ Пятница, 04 Декабрь, 2009 16:43 ] |
Заголовок сообщения: | Re: Как правильно изменить размеры вьюшки-окна после ее создания |
Спасибо, хлопцы, что помогаете, инфа полезная. Может я неверно делаю что в этой теме спрашиваю, но вопрос всетки к вьюшкам относится, потому не стал отдельную тему создавать. вот если предположим я заранее не знаю сколько строк текста у меня будет во вьюшке, а хочется чтоб размеры ее как раз ограничивались текстом, и не более (такой себе а-ля AutoSuze) Как правильнее поступать в таких случаях, умножать высоту шрифта на количество строк, а потом в .context.SetSize вьюшки указывать высоту или есть другой способ сказать вьюшке чтоб она сама согласно наполненному в нее расширилась? И еще нескромный вопрос: Цитата: PROCEDURE Era (v: View): INTEGER Для отображений с моделью возвращает эру, в которой отображение было последний раз синхронизировано с моделью. Что такое Эра? |
Автор: | Александр Ильин [ Пятница, 04 Декабрь, 2009 17:36 ] |
Заголовок сообщения: | Re: Как правильно изменить размеры вьюшки-окна после ее создания |
Виталий писал(а): Что такое Эра? Хороший вопрос! Мне тоже интересно : ) Этот концепт не в одном месте встречается во фреймворке, а вот чтобы описание где-то видел - не припомню.
|
Автор: | Info21 [ Пятница, 04 Декабрь, 2009 19:23 ] |
Заголовок сообщения: | Re: Как правильно изменить размеры вьюшки-окна после ее создания |
Иван Горячев писал(а): А если человеку нужно изменить именно размер окна - Он, вроде, открывать хотел с нужным размером. Или я забыл. Ладно, пусть будет Windows.
|
Автор: | Илья Ермаков [ Пятница, 18 Декабрь, 2009 23:06 ] |
Заголовок сообщения: | Re: Как правильно изменить размеры вьюшки-окна после ее создания |
Код: PROCEDURE ResizeDoc; BEGIN StdCmds.InitLayoutDialog; StdCmds.layout.wType := 0; StdCmds.layout.width := 40; StdCmds.SetLayout END ResizeDoc; Смелее, товарищи, юзаем команды из кода и наоборот ![]() Глобальные переменные как параметры в таких случаях рулят. Входные параметры могут приходить как от диалогов, так и программно. Выставляемый глобально результат может использоваться как программно, так и "человечески" через Global Variables - не нужно писать разные варианты... |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |