|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Внесение изменений в код VCL (ExpressSpreadSheet)
Приветствую всех!
У меня такая ситуация, нужно внести изменение в код VCL (ExpressSpreadSheet, Developer Express Inc), а именно добавить формат для ячейки Excel '#.##0.000' в модуль cxSSDesigner.pas. Все отчеты сделаны с использованием этой библиотеки. Переделывать на что-то другое нет времени. Делаю согласно правилам правки библиотек. Создаю новый каталог для исправленного VCL. Добавляю путь для этого каталога в Library Path. Компилирую .dpk библиотеки, компилирую проект. Ссылка вроде работает - при кликании открывает исправленный pas-модуль библиотеки. Но никаких изменений в приложении не вижу. Посоветуйте, пожалуйста, я что-то еще не учитываю? Последний раз редактировалось R_smile, 23.08.2012 в 13:02. |
#2
|
||||
|
||||
Цитата:
А зачем ты создаёшь новый каталог? Исправляй прямо на старом месте, а оригинальный pas-файл переименуй в какой-нибудь .bak или .original. Если же изменения нужны только для одного проекта, то попробуй поместить исправленный pas-файл в папку с этим проектом. |
#3
|
|||
|
|||
Убрала лишний path, делаю, как советуете.
Никакие мои изменения не фиксируются. Что мне нужно компилировать в библиотеках? Например, вношу изменения в существующий формат, где значения $14, $15. ... DateTimeFormats: array[0..13] of TcxSSStyleListBoxItem = ((Value: 'm/d/yy'; ValueType: $0E), (Value: 'dd/mm/yy'; ValueType: $A4), (Value: 'dd.mmmm.yy'; ValueType: $A5), (Value: 'd-mmm-y'; ValueType: $0F), (Value: 'd-mmm'; ValueType: $10), (Value: 'mmmm-yy'; ValueType: $11), (Value: 'h:mm AM/PM'; ValueType: $12), (Value: 'h:mm:ss AM/PM'; ValueType: $13), (Value: '#,##0.00'(*'h:mm'*); ValueType: $14), (Value: '#,##0.00'(*'h:mm:ss'*); ValueType: $15), (Value: 'm/d/yy h:mm'; ValueType: $16), (Value: 'mm:ss'; ValueType: $2D), (Value: '[h]:mm:ss'; ValueType: $2E), (Value: 'mm:ss.ms'; ValueType: $2F)); ... Указываю в коде формат для ячейки Excel: for i := ARect.Top to Sheet.RowCount - ARect.Top do begin Sheet.GetCellObject(2,i).Style.Format := $15; end; И у меня число 0,12 в отчете появляется в формате 2:52:48 (то есть как было первоначально разработано). Мои изменения не зафиксированы... |
#4
|
||||
|
||||
Цитата:
А вообще для изменения достаточно найти dpk-файлы в которых используются изменённые pas-файлы и перекомпилировать их. |
#5
|
|||
|
|||
Ок, я скопировала в папку проекта, а что это мне даст?
Если пытаюсь добавить, например, в текущий dpk, то выскакивает сообщение, что данный pas-файл уже есть в Search path. Этот dpk, который использует исправленный pas-файл, компилила раз 100. Не пойму... вроде все просто, а у меня не выходит... |
#6
|
||||
|
||||
Цитата:
Как я и говорил вы меняете совершенно не в том месте. Менять нужно в методе cxSSUtils.TcxSSUtils.FormatText. Вот вырезка: Код:
class function TcxSSUtils.FormatText(const AValue: Double; AFormat: TxlsDataFormat; APrecision: Byte; var ATextColor: Word): string; ... begin ARoundMode := SetRoundMode(0); APrecisionMode := SetPrecisionMode(2); if APrecision > 8 then APrecision := 8; case Integer(AFormat) of $00: Result := FloatToStrF(AValue, ffGeneral, 8, APrecision); ... $0F, $10, $11, $14: Result := 'ЭТО ФОРМАТЫ $0F, $10, $11, $14';//FormatDateTime(ADateFormat[AFormat - $0F], AValue); $12, $13: Result := AnsiUpperCase(FormatDateTime(ADateFormat[AFormat - $0F], AValue)); $15: Result := 'ЭТО ФОРМАТ $15';//TimeToStr(AValue); ... $A5: Result := FormatDateTime(AnsiUpperCase('dd.mmmm.yy'), AValue); else Result := FloatToStr(AValue); end; if (AFormat in [$6, $8, $26, $28]) and (AValue < 0) then ATextColor := 2; SetPrecisionMode(APrecisionMode); SetRoundMode(ARoundMode); end; |
#7
|
|||
|
|||
Только сейчас смогла проверить. Я ставлю свои изменения прямо в том коде. А они все равно не выводятся. Это кажется идиотизмом ,но я в шоке. Использую $10 это формат даты. Ставлю на это число свой формат,просто пишу formatfloat и все равно у меня выводиться дата. Под дебаггером у меня не получается дойти до этих форматов. Я не знаю...
|