Форум пользователей ПО АСКОН

Профессиональные вопросы => Программирование приложений => Тема начата: Andreych от 04.03.19, 22:18:43

Название: Нарушение форматирования при замене текста в ячейке штампа
Отправлено: Andreych от 04.03.19, 22:18:43
Добрый день!
  Подскажите пожалуйста, не могу разобраться с казалось бы простой задачей - записать в заданную ячейку штампа определенный текст. Надо просто текст поменять, не трогая шрифт, выравнивание и т.д.
  Записываю в несколько ячеек штампа определенный текст. Проблема в том, что иногда при записи текста в ячейку в этой ячейке меняется размер шрифта или выравнивание оказывается по центру, хотя изначально шрифт был обычный и выравнивание по левому краю. Причем в разных файлах эти неожиданные изменения происходят в разных ячейках, а могут и нигде не возникнуть. Вобщем глюк носит случайный характер. Изначально во всех файлах форматирование ячеек не отличается от шаблонного, проверял. Однако после запуска программы некоторые ячейки изменяются.

Вот текст функции замены текста:


function TForm1.SetStampCellText(iStamp: ksStamp; CellNum: Integer; value: string): Integer; // CellNum - номер ячейки, value - новый текст
var
    iTextItemParam:  ksTextItemParam;
    j: integer;
    s: string;
begin
  Result:=0;
  if iStamp=nil then Exit;
  iTextItemParam:=ksTextItemParam(iKompas.GetParamStruct(ko_TextItemParam));
  s:=GetStampCellText(iStamp,CellNum,' '); // моя функция получения текущего значения ячейки. Она работает.
// запись в ячейку штампа
  iTextItemParam.Init;
  if s=value then // сравниваем новое значение с имеющимся
    result:=0; // не изменено
  else begin
    j:=iStamp.ksColumnNumber(CellNum);
    if j=0 then ShowMessage('Ошибка ячейки штампа '+IntToStr(CellNum));
    iTextItemParam.s:=value;
    if value='' then iStamp.ksClearStamp(CellNum)
    else iStamp.ksTextLine(iTextItemParam);
    result:=1; // изменено
  end;
  iTextItemParam:=nil;
end;



Название: Re: Нарушение форматирования при замене текста в ячейке штампа
Отправлено: Sabahs от 04.03.19, 22:55:23
Текст, штука не простая.
https://forum.ascon.ru/index.php/topic,29090.msg243163.html#msg243163
Название: Re: Нарушение форматирования при замене текста в ячейке штампа
Отправлено: Slaviation от 05.03.19, 08:10:21
Скорее всего, чтобы "не сбить" форматирование исходного текста в ячейке основной надписи, нужно полностью разобрать весь исходный текст вплоть до итемов (ITextItem) и только у итемов, при необходимости, менять свойство ITextItem::Str.
Название: Re: Нарушение форматирования при замене текста в ячейке штампа
Отправлено: Grinka от 05.03.19, 08:25:06
Создайте библиотеку (я создал мои тексты) и все что вам нужно вставляете туда.
Название: Re: Нарушение форматирования при замене текста в ячейке штампа
Отправлено: Andreych от 05.03.19, 10:29:59
Цитата: Slaviation от 05.03.19, 08:10:21
Скорее всего, чтобы "не сбить" форматирование исходного текста в ячейке основной надписи, нужно полностью разобрать весь исходный текст вплоть до итемов (ITextItem) и только у итемов, при необходимости, менять свойство ITextItem::Str.

Да, я думаю по уму так и надо делать, но хочется то максимально просто.
А можно как-то обнулить форматирование ячейки, сбросить его до значений по умолчанию?
Все равно же в ячейках штампа никто не извращается с шрифтом и т.п. Это не произвольный текст менять.