OberonCore
https://forum.oberoncore.ru/

Edit Field
https://forum.oberoncore.ru/viewtopic.php?f=24&t=472
Страница 1 из 2

Автор:  PGR [ Воскресенье, 20 Май, 2007 22:08 ]
Заголовок сообщения:  Edit Field

В Edit Field не работает контекстное меню ...

Автор:  Илья Ермаков [ Вторник, 29 Май, 2007 22:14 ]
Заголовок сообщения: 

Edit Field использует в качестве Frame HostCFrames, который использует стандартный контрол WinAPI. Интересно, а WinAPI Edit поддерживает сразу контекстное меню, или это уже библиотеки вроде VCL наслаивают его своими силами?

Автор:  PGR [ Вторник, 29 Май, 2007 22:51 ]
Заголовок сообщения: 

Илья Ермаков писал(а):
Edit Field использует в качестве Frame HostCFrames, который использует стандартный контрол WinAPI. Интересно, а WinAPI Edit поддерживает сразу контекстное меню, или это уже библиотеки вроде VCL наслаивают его своими силами?

Конечно поддерживает.
Цитата:
With version 4.0 or later, an edit control includes a built in context menu that makes it easy for the user to move text between the edit control and the clipboard. The context menu appears when the user clicks the control using the right mouse button. The menu items in the context menu include Undo, Cut, Copy, Paste, Delete, and Select All.

Автор:  Илья Ермаков [ Вторник, 29 Май, 2007 23:42 ]
Заголовок сообщения: 

Тогда надо покопать в HostCFrames - реализация кадров под стандартные контролы. См. тип Field и особенно процедуру-обработчик событий CtrlHandler - вероятно, там чегой-то не дообрабатывается. У меня, к сожалению, сейчас времени нет копнуть это дело...

Автор:  PGR [ Среда, 30 Май, 2007 00:56 ]
Заголовок сообщения: 

Там обработка событий мыши от всех контролов идет в одной процедуре HandleMouse. И события от правой и левой кнопок обрабатываются одинаково... Наверное, причину надо искать в другом модуле типа Controls.
-----
Документации нету ни на StdCFrames, ни на StdDialog, ни на Windows, ни на Documents, ... Это же не модули реализации типа Host'a и должны быть документированы :evil:

Автор:  PGR [ Среда, 30 Май, 2007 02:50 ]
Заголовок сообщения: 

Есть предложение выкинуть в HostCFrames.Field.Restore из множества стилей стиль border. Тогда Edit в BB будет выглядеть так же, как и в других программах под Windows XP, а не с двойной рамкой.
Код:
...
style := {2, 6, 16, (*23,*) 30};   (* multiline, autovscroll, tabstop, border, child *)
...
style := {7, 16, (*23,*) 30}   (* autohscroll, tabstop, border, child *)
...

Автор:  PGR [ Среда, 30 Май, 2007 03:46 ]
Заголовок сообщения: 

Получилось!!! :D
В HostCFrames.HandleMouse нужно исправить последний цикл:
Код:
  REPEAT
    res := USER32.GetMessageA(msg, 0, 0, 0);
    IF (msg.message >= USER32.WMMouseMove) & (msg.message <= USER32.WMMButtonDblClk) THEN
      b := msg.wParam
    END;
    (**** BEGIN ****)
    IF msg.message = USER32.WMRButtonUp THEN
      res := USER32.ClientToScreen(wnd, pt);
      res := USER32.SendMessageA(wnd, 007BH, b, pt.x + pt.y * 65536) (* WMContextMenu *)
    END;
    (**** END ****)
    res := USER32.TranslateMessage(msg);
    res := USER32.DispatchMessageA(msg)
  UNTIL b MOD 4 = 0;

Автор:  Александр Ильин [ Среда, 30 Май, 2007 08:50 ]
Заголовок сообщения: 

Отличная работа, спасибо! :D

Автор:  Илья Ермаков [ Среда, 30 Май, 2007 09:47 ]
Заголовок сообщения: 

Ну что, ребята, я пошлю новый апдейт в Оминк, пускай включают? :-)
Как подписать автора патча? :-)

Автор:  Илья Ермаков [ Среда, 30 Май, 2007 10:11 ]
Заголовок сообщения: 

По поводу рамки - у меня на Wine разница мизерная, но ежли сейчас делают с таким стилем, то, возможно, стоит и исправить!
Может, Вы глянете острым глазом стили и у других контролов? В частности, с отметкой фокуса собака может быть здесь зарыта...

Автор:  PGR [ Среда, 30 Май, 2007 12:15 ]
Заголовок сообщения: 

При отключенных темах WinXP тоже разницы нет. :wink:
А вообще везде в style := {...} надо убрать 23 (border) -- в Edit Field, Time Field, Date Field, Up/Down Field, ...
Откопать "собаку фокусника" не получилось :(

Автор:  Штирлиц [ Среда, 30 Май, 2007 13:03 ]
Заголовок сообщения:  Re: Edit Field

PGR писал(а):
В Edit Field не работает контекстное меню ...


Все это следствие того, что обработка очереди сообщений
в BlackBox реализована, мягко говоря, плохо.

Автор:  Илья Ермаков [ Среда, 30 Май, 2007 22:13 ]
Заголовок сообщения: 

Данный вопрос не к очереди сообщений Framework относится, а к внутренней реализации.... Framework спроектирован отлично, внутренняя реализация Host требует больших перетряхиваний...

Автор:  Штирлиц [ Четверг, 31 Май, 2007 02:12 ]
Заголовок сообщения: 

Илья Ермаков писал(а):
Данный вопрос не к очереди сообщений Framework относится, а к внутренней реализации.... Framework спроектирован отлично, внутренняя реализация Host требует больших перетряхиваний...


Я как раз и имел ввиду внутреннюю реализацию

Автор:  PGR [ Вторник, 12 Июнь, 2007 08:22 ]
Заголовок сообщения: 

Илья Ермаков писал(а):
Ну что, ребята, я пошлю новый апдейт в Оминк, пускай включают? :-)
Как подписать автора патча? :-)

Приняли патч?
И вообще, куда им посылать свои исправления?

Автор:  Илья Ермаков [ Вторник, 12 Июнь, 2007 11:36 ]
Заголовок сообщения: 

У них на сайте есть е-майл техподдержки.
С нами обычно взаимодействует Марк Фрей.
Я отослал патч уже весьма давно, ответа нет, хотя на предыдущие он всегда отвечал, что весьма благодарны и примем, давайте еще :-)
Может, в отпуск ушел...
Перешлю еще раз.

Автор:  Илья Ермаков [ Вторник, 12 Июнь, 2007 11:40 ]
Заголовок сообщения: 

Да, прошлое письмо я отправлял 30 мая. Ответа не было.
Цитата:
Hello, Mark!

Member of russian community Yuriy Skalko did some corrections in HostCFrames.

At first, it is support for Windows context menus for controls:

PROCEDURE HandleMouse (wnd: WinApi.HANDLE; x, y: INTEGER; buttons: SET);
...
REPEAT
res := WinApi.GetMessageW(msg, 0, 0, 0);
IF (msg.message >= WinApi.WM_MOUSEMOVE) & (msg.message <= WinApi.WM_MBUTTONDBLCLK) THEN
b := msg.wParam
END;
(* CHANGES BEGIN *)
IF msg.message = WinApi.WM_RBUTTONUP THEN
res := WinApi.ClientToScreen(wnd, pt);
res := WinApi.SendMessageA(wnd, 007BH, b, pt.x + pt.y * 65536) (* WMContextMenu *)
END;
(* CHANGES END *)
res := WinApi.TranslateMessage(msg);
res := WinApi.DispatchMessageW(msg)
UNTIL b MOD 4 = 0;

At second, he introduce to change style of edit field and did it without double-frame, to be same to Windows XP default view:
in Field.Restore
style := style := {2, 6, 16 (*, 23 *), 30};
(* multiline, autovscroll, tabstop (*, border *), child *)

With best regards,
Ilya Ermakov.


Переслал еще раз. Уже бывало, что до них письма не доходили.

Автор:  Илья Ермаков [ Пятница, 15 Июнь, 2007 22:27 ]
Заголовок сообщения: 

Цитата:
...
sorry for this somewhat late reply. Yes, we have received your
suggestions. We will have a look at them while preparing the final
release of BlackBox 1.6.
Thanks a lot and with best regards...

Автор:  PGR [ Суббота, 16 Июнь, 2007 19:47 ]
Заголовок сообщения: 

А когда они собираются выпустить BB 1.6 что-нибудь известно?

Автор:  Илья Ермаков [ Суббота, 16 Июнь, 2007 19:55 ]
Заголовок сообщения: 

Неа... Только шлю исправления, в ответ "спасибо, включим в 1.6, давайте еще!" :-) А когда - неизвестно.

Страница 1 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/