Текущая версия ФР...

mvbmvb Казань
отредактировано 04:54 Раздел: FastReport 4.0
Господа разработчики, не могли бы вы вместе с новым билдом текущей версии вносить соответствующие изменения в changes_rus.txt, иначе в этих ежедневных обновлениях просто нет смысла, люди ждут исправления критичных для них ошибок (и добавления запрошенных возможностей), но скачивать по 8+мб только для того, чтобы узнать, что ничего существенного в продукте не изменилось (не добавилось) - не всем по карману. Этот вопрос-просьбу я уже озвучивал, но он с вашей стороны был проигнорирован.
Заранее спасибо за понимание.

Комментарии

  • отредактировано 04:54
    Обычно все исправления ошибок фиксируется. Либо (если что-то уж слишком мелкое) сообщается тем кто ожидает именно этот фикс.
    Если в changes_rus.txt, ничего конкретно интересуещего вас небыло, скачивать не стоит.
  • Stalker4Stalker4 123
    отредактировано 04:54
    написал: »
    Обычно все исправления ошибок фиксируется. Либо (если что-то уж слишком мелкое) сообщается тем кто ожидает именно этот фикс.
    Если в changes_rus.txt, ничего конкретно интересуещего вас небыло, скачивать не стоит.

    В изменениях текущей версии FR написано:
    ===
    + добавлен новый define HOOK_WNDPROC_FOR_UNICODE (frx.inc) - устанавливает хук на функцию GetMessage для поддержки ввода юникода в D4-D7/BCB4-BCB6
    ===

    Объясните пожалуйста, что значит "для поддержки ввода юникода в D4-D7" ? А разве раньше в FR и D7 юникода не было ?
  • отредактировано 04:54
    Stalker4 написал: »
    В изменениях текущей версии FR написано:
    ===
    + добавлен новый define HOOK_WNDPROC_FOR_UNICODE (frx.inc) - устанавливает хук на функцию GetMessage для поддержки ввода юникода в D4-D7/BCB4-BCB6
    ===

    Объясните пожалуйста, что значит "для поддержки ввода юникода в D4-D7" ? А разве раньше в FR и D7 юникода не было ?

    Объясняю.
    Есть языки, у которых нет кодовой страницы для ansi(это можно проверить, переключив раскладку клавиатуры на Грузинский и попробовать ввести текст в стандартные VCL контролы), т.е. при вводе с клавиатуры в мемо вводятся сразу юникод символы (Win 2k- Vista).
    В старых версиях IDE от борланда(до BDS).
    Все стандартные контролы (Tmemo,TEdit ...) не поддерживают ввод юникода напрямую, т.к. они используют ansi версии функций CreateWindow,RegisterClass ... итд .
    В ФР для поддержки ввода юникода напрямую есть несколько контролов (такие как TUnicodeMemo), но использование этих контролов бессмысленно , т.к. в старых IDE цикл приложения выглядит так:
    function TApplication.ProcessMessage(var Msg: TMsg): Boolean;
    var
      Handled: Boolean;
    begin
      Result := False;
      if PeekMessage(Msg, 0, 0, 0, PM_REMOVE) then
      begin
        Result := True;
        if Msg.Message <> WM_QUIT then
        begin
          Handled := False;
          if Assigned(FOnMessage) then FOnMessage(Msg, Handled);
          if not IsHintMsg(Msg) and not Handled and not IsMDIMsg(Msg) and
            not IsKeyMsg(Msg) and not IsDlgMsg(Msg) then
          begin
            TranslateMessage(Msg);
            DispatchMessage(Msg);
          end;
        end
        else
          FTerminate := True;
      end;
    end;
    

    Т.е. опять используются ansi версии функций windows.
    Должно быть приблизительно так:
    function TApplication.ProcessMessage(var Msg: TMsg): Boolean;
    var
      FIsUnicode,Handled,isHasMsg: Boolean;
    begin
      Result := False;
      FIsUnicode := IsWindowUnicode(Msg.HWnd);
      if FIsUnicode then
        isHasMsg := PeekMessageW(Msg, 0, 0, 0, PM_REMOVE)
      else
        isHasMsg := PeekMessage(Msg, 0, 0, 0, PM_REMOVE);
    
      if isHasMsg then
      begin
        Result := True;
        if Msg.Message <> WM_QUIT then
        begin
    
          Handled := False;
          if Assigned(FOnMessage) then FOnMessage(Msg, Handled);
          if not IsHintMsg(Msg) and not Handled and not IsMDIMsg(Msg) and
            not IsKeyMsg(Msg) and not IsDlgMsg(Msg) then
          begin
            TranslateMessage(Msg);
            if FIsUnicode then
              DispatchMessageW(Msg)
            else
              DispatchMessage(Msg);
          end;
        end
        else
          FTerminate := True;
      end;
    end;
    

    Чтобы не менять кусок forms.pas , достаточно расскоментировать HOOK_WNDPROC_FOR_UNICODE и ФР установит хук на юникод версию GetMessage и приложение будет корректно обрабатывать юникод сообщения (конкретно WM_CHAR).

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.