Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.03.2012, 09:54   #1
andrejjka
Пользователь
 
Регистрация: 26.12.2010
Сообщений: 13
По умолчанию StringGrid перенос слов в XE2

При переносе проекта из 7 версии в xe2, эффект переноса текста по словам в stringgrid стал косячить (в ячейке остается "перенесенный" текст и не перенесенный).




Код:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  MyRect:TRect;
  Format: Word;
  C: array[0..255] of Char;
  I, J : Integer;

begin

    if (ACol=4) and (ARow=0) then
    begin

    Format := DT_CENTER or DT_WORDBREAK;
    (Sender as TStringGrid).Canvas.FillRect(Rect);
    StrPCopy(C, (Sender as TStringGrid).Cells[ACol, ARow]);
    WinProcs.DrawText((Sender as TStringGrid).Canvas.Handle, C,
    StrLen(C), Rect, Format);

    end;


end;
Подскажите пожалуйста как исправить.
andrejjka вне форума Ответить с цитированием
Старый 20.03.2012, 14:14   #2
denisbrain
Форумчанин
 
Регистрация: 29.05.2011
Сообщений: 449
По умолчанию

1 вариант не корректные
Код:
  DT_CENTER = 1;
  DT_WORDBREAK = $10
2 вариант с:char кодировка не та которая использовалась в Delphi от Borland-a
как вариант DrawText -> DrawTextW
Код:
function DrawText(hDC: HDC; lpString: PChar; nCount: Integer;
  var lpRect: TRect; uFormat: UINT): Integer; stdcall;

function DrawTextW(hDC: HDC; lpString: PWideChar; nCount: Integer;
  var lpRect: TRect; uFormat: UINT): Integer; stdcall;
задания на pascal/delphi ICQ 368254335
Tel +79177425326 mail denis-naymov1985(at)mail.ru login skype denis.new.skype

Последний раз редактировалось denisbrain; 20.03.2012 в 14:18.
denisbrain вне форума Ответить с цитированием
Старый 20.03.2012, 20:55   #3
andrejjka
Пользователь
 
Регистрация: 26.12.2010
Сообщений: 13
По умолчанию

Не помогло. Заметил что все становится нормально когда в stringgrid меняю DrawingStyle на Classic (который и был в 7-й). То все отлично переносится и центруется, но стоит только сменить на Themed или Gradient, тогда текст снова двоится.
Все это происходит в фиксированной строке, которая если я не ошибаюсь имеет background градиентного цвета ...

Если закрасить ячейку любым цветом, то лишний текст уберется, вопрос как ее закрасить точно таким же градиентом как при DrawingStyle равном Themed?

Последний раз редактировалось andrejjka; 21.03.2012 в 09:57. Причина: Добавил пару строк
andrejjka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перенос слов Bagirli Общие вопросы Delphi 5 21.02.2012 12:55
Embarcadero Delphi XE2 Partner DVD (Зборник компонентов для XE2) volod3000 Софт 2 01.11.2011 02:26
Перенос слов Maxs Общие вопросы Delphi 8 02.05.2009 20:58
Перенос слов в StringGrid artemavd Общие вопросы Delphi 1 17.03.2009 15:58
перенос слов АлёнаP Microsoft Office Access 0 17.03.2009 09:29