OberonCore https://forum.oberoncore.ru/ |
|
Два вопроса про формы в ББ. https://forum.oberoncore.ru/viewtopic.php?f=23&t=3111 |
Страница 1 из 1 |
Автор: | GameHunter [ Понедельник, 27 Декабрь, 2010 18:21 ] |
Заголовок сообщения: | Два вопроса про формы в ББ. |
Уважаемые специалисты, Есть два вопроса про формы в ББ. 1) Хочется показывать форму пользователю вызовом процедуры, и чтобы управление следующему после вызова оператору передовалось только после закрытия формы. Как это сделать? 2) Хочется, чтобы форма могла висеть только над одним документом из несколькиз открытых, а не над любым, как, например, стандартный диалог Find/Replace. Как это сделать? |
Автор: | Евгений Темиргалеев [ Понедельник, 27 Декабрь, 2010 18:38 ] |
Заголовок сообщения: | Re: Два вопроса про формы в ББ. |
Если Вы про модальность, то: Часть первая: подходы к проектированию писал(а): В первой части руководства по BlackBox дано введение в проектные схемы, которые используются в BlackBox. Знание этих схем облегчает понимание и запоминание более детальных проектных решений в различных модулях BlackBox.
... Наконец, один из наиболее общих и важных аспектов дружелюбности к пользователю - это исключение модальных диалогов... |
Автор: | GameHunter [ Понедельник, 27 Декабрь, 2010 18:46 ] |
Заголовок сообщения: | Re: Два вопроса про формы в ББ. |
Модальность - это когда не возможно переключиться с формы на другой документ. Это - да, не дружелюбно. Я (в п. 1) только про возврат обратно в вызывающую процедуру - "дружелюбие к программисту" ![]() |
Автор: | Иван Кузьмицкий [ Понедельник, 27 Декабрь, 2010 18:51 ] |
Заголовок сообщения: | Re: Два вопроса про формы в ББ. |
Форма - это документ, его появление не должно вмешиваться в логику программы. То есть, логика программы и документ на экране - разные вещи. Может, стоит помозговать, как выстроить интерфейс по-другому? |
Автор: | GameHunter [ Понедельник, 27 Декабрь, 2010 18:57 ] |
Заголовок сообщения: | Re: Два вопроса про формы в ББ. |
Хочется просто что-то по быстрому спросить у пользователя. При чём здесь логика программы? |
Автор: | Евгений Темиргалеев [ Понедельник, 27 Декабрь, 2010 19:02 ] |
Заголовок сообщения: | Re: Два вопроса про формы в ББ. |
При том, что "быстро спросить у пользователя" возможно удастся другими средствами. Или вообще не придётся "быстро спрашивать". Может быть сформулируете задачу? |
Автор: | GameHunter [ Понедельник, 27 Декабрь, 2010 19:09 ] |
Заголовок сообщения: | Re: Два вопроса про формы в ББ. |
Да никакой конкретной задачи нет - просто щупаю подсистему форм. Навскидку хочется, например, написать диалог запроса шрифта для своей библиотеки. |
Автор: | Александр Ильин [ Понедельник, 27 Декабрь, 2010 19:17 ] |
Заголовок сообщения: | Re: Два вопроса про формы в ББ. |
GameHunter писал(а): Да никакой конкретной задачи нет - просто щупаю подсистему форм. Навскидку хочется, например, написать диалог запроса шрифта для своей библиотеки. В ББ есть модальные запросы, посмотрите реализацию (открытие файла, тот же выбор шрифта).
|
Автор: | GameHunter [ Понедельник, 27 Декабрь, 2010 19:23 ] |
Заголовок сообщения: | Re: Два вопроса про формы в ББ. |
Ясно, что при желании можно вызвать стандартные виндовские диалоги. А какое-нибудь более универсальное средство - для любой формы (возможно, специально спроектированной) - есть? |
Автор: | Александр Ильин [ Понедельник, 27 Декабрь, 2010 19:41 ] |
Заголовок сообщения: | Re: Два вопроса про формы в ББ. |
GameHunter писал(а): Ясно, что при желании можно вызвать стандартные виндовские диалоги. А какое-нибудь более универсальное средство - для любой формы (возможно, специально спроектированной) - есть? Посмотрите модуль HostDialog:Код: PROCEDURE WaitDialogClose;
(* simulates modal dialog *) |
Автор: | id_ler [ Понедельник, 27 Декабрь, 2010 19:53 ] |
Заголовок сообщения: | Re: Два вопроса про формы в ББ. |
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 -- Ок |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |