OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 29 Март, 2024 12:01

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




Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Два вопроса про формы в ББ.
СообщениеДобавлено: Понедельник, 27 Декабрь, 2010 18:21 

Зарегистрирован: Вторник, 22 Май, 2007 15:38
Сообщения: 220
Откуда: Питер
Уважаемые специалисты,

Есть два вопроса про формы в ББ.
1) Хочется показывать форму пользователю вызовом процедуры, и чтобы управление следующему после вызова оператору передовалось только после закрытия формы. Как это сделать?
2) Хочется, чтобы форма могла висеть только над одним документом из несколькиз открытых, а не над любым, как, например, стандартный диалог Find/Replace. Как это сделать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Два вопроса про формы в ББ.
СообщениеДобавлено: Понедельник, 27 Декабрь, 2010 18:38 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Если Вы про модальность, то:
Часть первая: подходы к проектированию писал(а):
В первой части руководства по BlackBox дано введение в проектные схемы, которые используются в BlackBox. Знание этих схем облегчает понимание и запоминание более детальных проектных решений в различных модулях BlackBox.

...
Наконец, один из наиболее общих и важных аспектов дружелюбности к пользователю - это исключение модальных диалогов...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Два вопроса про формы в ББ.
СообщениеДобавлено: Понедельник, 27 Декабрь, 2010 18:46 

Зарегистрирован: Вторник, 22 Май, 2007 15:38
Сообщения: 220
Откуда: Питер
Модальность - это когда не возможно переключиться с формы на другой документ. Это - да, не дружелюбно. Я (в п. 1) только про возврат обратно в вызывающую процедуру - "дружелюбие к программисту" :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Два вопроса про формы в ББ.
СообщениеДобавлено: Понедельник, 27 Декабрь, 2010 18:51 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Форма - это документ, его появление не должно вмешиваться в логику программы. То есть, логика программы и документ на экране - разные вещи.

Может, стоит помозговать, как выстроить интерфейс по-другому?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Два вопроса про формы в ББ.
СообщениеДобавлено: Понедельник, 27 Декабрь, 2010 18:57 

Зарегистрирован: Вторник, 22 Май, 2007 15:38
Сообщения: 220
Откуда: Питер
Хочется просто что-то по быстрому спросить у пользователя. При чём здесь логика программы?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Два вопроса про формы в ББ.
СообщениеДобавлено: Понедельник, 27 Декабрь, 2010 19:02 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
При том, что "быстро спросить у пользователя" возможно удастся другими средствами. Или вообще не придётся "быстро спрашивать". Может быть сформулируете задачу?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Два вопроса про формы в ББ.
СообщениеДобавлено: Понедельник, 27 Декабрь, 2010 19:09 

Зарегистрирован: Вторник, 22 Май, 2007 15:38
Сообщения: 220
Откуда: Питер
Да никакой конкретной задачи нет - просто щупаю подсистему форм. Навскидку хочется, например, написать диалог запроса шрифта для своей библиотеки.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Два вопроса про формы в ББ.
СообщениеДобавлено: Понедельник, 27 Декабрь, 2010 19:17 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
GameHunter писал(а):
Да никакой конкретной задачи нет - просто щупаю подсистему форм. Навскидку хочется, например, написать диалог запроса шрифта для своей библиотеки.
В ББ есть модальные запросы, посмотрите реализацию (открытие файла, тот же выбор шрифта).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Два вопроса про формы в ББ.
СообщениеДобавлено: Понедельник, 27 Декабрь, 2010 19:23 

Зарегистрирован: Вторник, 22 Май, 2007 15:38
Сообщения: 220
Откуда: Питер
Ясно, что при желании можно вызвать стандартные виндовские диалоги. А какое-нибудь более универсальное средство - для любой формы (возможно, специально спроектированной) - есть?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Два вопроса про формы в ББ.
СообщениеДобавлено: Понедельник, 27 Декабрь, 2010 19:41 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
GameHunter писал(а):
Ясно, что при желании можно вызвать стандартные виндовские диалоги. А какое-нибудь более универсальное средство - для любой формы (возможно, специально спроектированной) - есть?
Посмотрите модуль HostDialog:
Код:
PROCEDURE WaitDialogClose;
(* simulates modal dialog *)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Два вопроса про формы в ББ.
СообщениеДобавлено: Понедельник, 27 Декабрь, 2010 19:53 

Зарегистрирован: Суббота, 06 Июнь, 2009 07:52
Сообщения: 329
GameHunter писал(а):
Ясно, что при желании можно вызвать стандартные виндовские диалоги. А какое-нибудь более универсальное средство - для любой формы (возможно, специально спроектированной) - есть?
Если WinApi устроит, тогда могу предложить тестовый модуль.
Цитата:
MODULE Box;
IMPORT StdLog, WinApi;

VAR h*, u*: INTEGER;
vv*, uu*: ARRAY 20 OF CHAR;
q*: ARRAY 20 OF SHORTCHAR;
d*: ARRAY 20 OF SHORTCHAR;

PROCEDURE StringToString* (in: ARRAY OF CHAR; OUT out: ARRAY OF CHAR);
VAR i, max: INTEGER;
BEGIN i := 0; max := LEN(out)-1;
WHILE (in[i] # 0X) & (i < max) DO
IF ORD(in[i]) < 256 THEN out[i] := in[i] END;
INC(i)
END;
out[i] := 0X
END StringToString;

PROCEDURE FBox*():INTEGER;
VAR
b, f: ARRAY 20 OF CHAR; uType: SET;
lpText, lpCaption: WinApi.PtrSTR; hWnd: WinApi.HWND;
BEGIN
hWnd := h;
StringToString(uu, b);
d := SHORT(b);
StringToString(vv, f);
q := SHORT(f);
lpText := d;
lpCaption := q;
uType := {2};
RETURN WinApi.MessageBox(hWnd, lpText, lpCaption, uType);
END FBox;

PROCEDURE OutLog*;
VAR n: INTEGER;
BEGIN
n := FBox();
StdLog.Int(n); StdLog.Ln
END OutLog;

END Box.

(!)Box.OutLog

Создает и отобpажает блок диалога, содеpжащий указанное сообщение и заголовок, а также пpедопpеделенные пиктогpаммы и текстовые кнопки, в соответствии с паpаметpом uType:
0 – Ок/Отмена
1 – Прервать/ Повтор/Пропустить
2 – Да/Нет
4 -- Х
5 -- ?
6 -- i
7 -- Ок (Сообщение в правой стороне)
8..31 -- Ок


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

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


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

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


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

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