Для отображения в DBGrid результатов запроса ZQuery с MSSQL:
1. Копируем файлы ZAbstractRODataset.pas, ZComponent.inc, Zeos.inc в папку проекта.
В ZComponent.inc меняем {$I ../Zeos.inc} на {$I Zeos.inc}.
В ZAbstractRODataset.pas меняем
- Код: Выделить всё
     if doOemTranslate in FOptions then
    begin
      if ToOem then
        CharToOem(Src, Dest)
      else OemToChar(Src, Dest);
      Dest[Result] := #0;
    end
на
- Код: Выделить всё
     if doOemTranslate in FOptions then
    begin
      if ToOem then 
        s := UTF8Decode(Src)
      else
        s := UTF8Encode(Src);
      StrCopy(Dest, PChar(s));
      Result := StrLen(Dest);
      Dest[Result] := #0;
    end
2. Создаем обработчик события AfterOpen ZQuery:
- Код: Выделить всё
 var
  i: integer;
begin
  for i := 0 to DataSet.FieldCount - 1 do
    if DataSet.Fields[i] is TStringField then
      (DataSet.Fields[i] as TStringField).Transliterate := True;
end;
Без этого работать не будет, так как в Lazarus по умолчанию Transliterate = False.
3. После этого свойство ZQuery Options doOemTranslate используем для перекодировки ANSI в UTF8.
Lazarus 0.9.29 FPC 2.4.3 Win32