OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Среда, 24 Апрель, 2024 16:21

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 17 ] 
Автор Сообщение
СообщениеДобавлено: Четверг, 03 Декабрь, 2009 16:00 

Зарегистрирован: Вторник, 10 Ноябрь, 2009 13:15
Сообщения: 58
Господа, доброго всем.
Встал вопрос, как после открытия вьюшки менять ее размеры, допустим создаю так:
Код:
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 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Обычно v.context.SetSize(w, h)

Для корневой вьюшки с ходу не уверен (хотя она не корневая, а вложенная в невидимый Documents.View).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 03 Декабрь, 2009 16:36 

Зарегистрирован: Вторник, 10 Ноябрь, 2009 13:15
Сообщения: 58
SetSize пробовал. И используя костанты миллиметров из Рorts пробовал...
Ничего не происходит, окно открывается попрежнему с таким же размером.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 03 Декабрь, 2009 16:45 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Тогда надо на вьюшку вручную наворачивать Documents.View и открывать уже его, настраивая у него размер (как через меню Toolds-Document Size).

А то среда сама оборачивает Вашу вьюшку с размерами документа по-умолчанию.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 03 Декабрь, 2009 16:55 

Зарегистрирован: Вторник, 10 Ноябрь, 2009 13:15
Сообщения: 58
Ок. Понял. Спасибо.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 03 Декабрь, 2009 17:06 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Размер окна зависит от размера документа, который контейнер для корневого отображения. Т.что context.SetSize по смыслу не подходит.
Models docu писал(а):
PROCEDURE (c: Context) SetSize (w, h: INTEGER)
NEW, EMPTY
Просит контейнер адаптировать размер отображения c к заданным ширине и высоте. Контейнер может выполнять или не выполнять этот запрос.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 03 Декабрь, 2009 17:29 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Помню что подобное вроде делал... Нашел - может пригодится
Код:
   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 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
Ну тут два варианта.

Если требуется изменить именно размер корневой вьюшки (читай документа) через некоторое время после её создания, то либо как указал Евгений, либо смотрите 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.


А вообще держите:


Вложения:
Bbt-windows part.zip [4.21 КБ]
Скачиваний: 396
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 04 Декабрь, 2009 08:07 

Зарегистрирован: Вторник, 10 Ноябрь, 2009 13:15
Сообщения: 58
О-о-о спасибо. Модуль Windows подходит.
А имея переменную View или Model можно получить Window, в которой вьюшка отображается. т.е. обратно идти от вьюхи к родительскому окну?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 04 Декабрь, 2009 08:27 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
В общем случае нельзя, поскольку одна модель может показываться в разных окнах.

Если модель/отображение корневые, то проще пройти по всем окнам и проверить их, как у меня сделано в BbtWindows.StdLogWindow.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 04 Декабрь, 2009 10:34 

Зарегистрирован: Вторник, 10 Ноябрь, 2009 13:15
Сообщения: 58
Ыгы...
Ладно возьму на заметку.
Спасибо.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 04 Декабрь, 2009 12:44 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Виталий писал(а):
О-о-о спасибо. Модуль Windows подходит.
ЕНе надо без нужды лезть в Windows!!!!

Почему-то никто не сказал про свойства, а там есть про размеры (SetProp или как-то так, см. документацию к View).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 04 Декабрь, 2009 13:23 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
Свойства влияют на документы (модели, вьюшки). А если человеку нужно изменить именно размер окна - ему прямая дорога в Windows. Это же не HostWindows, в который действительно лучше не соваться. Да, окна - чужеродный элемент в ББ, но что поделать если они есть и приходится с ними работать :|


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 04 Декабрь, 2009 16:43 

Зарегистрирован: Вторник, 10 Ноябрь, 2009 13:15
Сообщения: 58
Спасибо, хлопцы, что помогаете, инфа полезная.
Может я неверно делаю что в этой теме спрашиваю, но вопрос всетки к вьюшкам относится, потому не стал отдельную тему создавать.

вот если предположим я заранее не знаю сколько строк текста у меня будет во вьюшке, а хочется чтоб размеры ее как раз ограничивались текстом, и не более (такой себе а-ля AutoSuze)
Как правильнее поступать в таких случаях, умножать высоту шрифта на количество строк, а потом в .context.SetSize вьюшки указывать высоту или есть другой способ сказать вьюшке чтоб она сама согласно наполненному в нее расширилась?

И еще нескромный вопрос:
Цитата:
PROCEDURE Era (v: View): INTEGER
Для отображений с моделью возвращает эру, в которой отображение было последний раз синхронизировано с моделью.

Что такое Эра?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 04 Декабрь, 2009 17:36 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
Виталий писал(а):
Что такое Эра?
Хороший вопрос! Мне тоже интересно : ) Этот концепт не в одном месте встречается во фреймворке, а вот чтобы описание где-то видел - не припомню.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 04 Декабрь, 2009 19:23 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Иван Горячев писал(а):
А если человеку нужно изменить именно размер окна -
Он, вроде, открывать хотел с нужным размером. Или я забыл. Ладно, пусть будет Windows.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 18 Декабрь, 2009 23:06 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Код:
   PROCEDURE ResizeDoc;
   BEGIN
      StdCmds.InitLayoutDialog;
      StdCmds.layout.wType := 0;
      StdCmds.layout.width := 40;
      StdCmds.SetLayout
   END ResizeDoc;


Смелее, товарищи, юзаем команды из кода и наоборот :)

Глобальные переменные как параметры в таких случаях рулят. Входные параметры могут приходить как от диалогов, так и программно. Выставляемый глобально результат может использоваться как программно, так и "человечески" через Global Variables - не нужно писать разные варианты...


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 17 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB