Конференция "KOL" » Меню под WinCE - это баг?
 
  • igg © (01.06.09 01:10) [0]
    Проект для тестирования меню под WinCE. Выбросил всё лишнее, выглядит он так:


    program Test;
    {$mode delphi}
    uses Windows, Messages, KOL;

    procedure OnMenu(Dummy: Pointer; Sender: PMenu; Item: Integer);
    begin
     if Item = 0 then begin
       MsgOK('OK');
     end else if Item = 1 then begin
       Applet.Close;
     end;
    end;

    var MainDlg: PControl;
       menu: PMenu;

    begin
     MainDlg := NewForm(Applet, 'Test');
     menu := NewMenu(MainDlg, 0,
       ['OK', 'Cancel'],
       TOnMenuItem(MakeMethod(nil, @OnMenu)));
     Run(MainDlg);
    end.



    Пробую под Win32 - всё работает правильно, появляется горизонтальное меню из двух пунктов - OK и Cancel. Нажатие на ОК вызывает сообщение, нажатие на Cancel закрывает окно.

    Теперь компилирую то же самое под WinCE - наблюдаю странную картину. Надписи как бы сдвинулись, первый пункт меню - Cancel, второй - вообще без надписи. При этом работают они по-старому, то есть, нажатие на Cancel приводит к появлению надписи "ОК", а нажатие на пустую менюшку - закрывает программу.

    Это баг? Как с ним бороться?
  • igg © (01.06.09 13:08) [1]
    Бьюсь второй день - всё без толку. Отображается меню со сдвигом, а отрабатывает без сдвига, причем только на WinCE, под Win32 - всё в порядке.

    Версии компилятора и библиотеки:
    Lazarus-0.9.27-20287-fpc-2.3.1-20090529-cross-arm-wince-win32.exe
    Lazarus-0.9.27-20287-fpc-2.3.1-20090529-win32.exe
    kol-ce-2.80.3.zip

    Компилирую командой
    fpc.exe -Twince -Parm -XX -CX -Xs -FuC:\LAZARUS\KOL\kol -Fccp1251 TEST.PAS



    Странно, но меню - это же основы! Неужели никто не пишет ничего под WinCE на чистом KOL? Как может работать неправильно столь простая конструкция?

    Как может остаться незамеченной такая ошибка?
    Неужели опять какой-нибудь ключ компилятора забыл?
  • mdw © (02.06.09 11:03) [2]
    Честно говоря, ни разу не использовал маинменю в winCe, обычно пользуюсь тулбаром. Возможно что ошибка есть. Попробуйте версию 2.88.  v2.80 вообще, насколько помню, довольно глючная была и под Delphi.
  • igg © (02.06.09 12:36) [3]
    Так насколько я понял, kol-ce 2.80.3 - это последняя портированная для CE версия. Просто 2.88 вряд ли пойдет, зачем-то же делали порт kol-ce...

    А меню - это очень нужная вещь. Под WM5, WM6 тулбара нет, остается только меню из двух пунктов, назначаемое на две софт-клавиши. Без него полноценное приложение для КПК/коммуникатора не сделать.

    Имеет ли смысл пытаться писать под WM5/6 на FPC с использованием непортированной KOL, или это бессмысленно?
  • mdw © (02.06.09 13:05) [4]
    На SVN есть  2.88.
  • mdw © (02.06.09 13:06) [5]
    В смысле для WinCE. последняя ревизия 297.
  • mdw © (02.06.09 13:16) [6]

    > А меню - это очень нужная вещь. Под WM5, WM6 тулбара нет,
    >  остается только меню из двух пунктов, назначаемое на две
    > софт-клавиши.


    Есть. Просто реализовано как меню.  Я специально делал компонент KOLMenuToolbarCE для отображения в виде тулбара. В WM6 не тестировал (нет у меня), но в WM5 работает нормально, + добавил срабатывание кнопки при удержании (типа как в фотошопе).
  • igg © (02.06.09 17:01) [7]
    Под WM5/6 тоже можно сделать тулбар, и он будет отображаться как тулбар - это режим совместимости. Можно и меню из 6 пунктов сделать вместо двух. Выглядеть будет так же, как выглядело под WM2003 и более ранними. Но потеряется возможность использовать софт-кнопки для вызова выпадающих меню.

    Точнее, можно, в принципе, их перехватить и заставить вызывать соответствующие пункты меню.... Но зачем? Теряется самое главное - привычный вид всех современных приложений. Пользователь WM5/6 привык, что внизу у него меню, выглядит оно вот так, в виде надписей над левой и правой софт-клавишами, и для его использования нужно нажимать эти самые софт-клавиши. Не стоит без существенных на то оснований отступать от принятых и привычных пользователю канонов.

    Потому мне и хочется, чтобы работало родное меню.

    Как качать с SVN - не спрашиваю, это уже не сюда, наверное, а к "Начинающим", поищу там faq какой-нибудь. Спасибо за наводку.
  • mdw (02.06.09 23:59) [8]

    > Как качать с SVN - не спрашиваю, это уже не сюда, наверное,
    >  а к "Начинающим", поищу там faq какой-нибудь. Спасибо за
    > наводку.

    Да могу просто выложить, проблем то...
  • Yury Sidorov (03.06.09 11:46) [9]
    Возможно проблемы из-за fpc-2.3.1
    С fpc 2.2.4 все прекрасно работает, в том числе и твой пример.
  • igg © (03.06.09 14:33) [10]
    Yury Sidorov:
    Интересно, у меня есть Lazarus 0.9.26.2 с fpc 2.2.2, попробую на нем.

    mdw:
    Конечно, было бы очень удобно. Буду благодарен.
  • igg © (03.06.09 15:56) [11]
    Yury Sidorov:
    Скачал, попробовал на 2.2.4 - действительно, всё правильно работает. Действительно, виновата версия 2.3.1. Спасибо большое за помощь.
  • mdw © (03.06.09 16:06) [12]
    Вот ссылка kolnmck.kolmck.net/files/kolce/288/KOL-ce-301.7z
  • igg © (03.06.09 22:00) [13]
    mdw, спасибо, скачал.
 
Конференция "KOL" » Меню под WinCE - это баг?
Есть новые Нет новых   [134431   +11][b:0][p:0.001]