Как исправить небольшую ошибку управления JvYearGrid без переустановки всей библиотеки JVCL

Я только что нашел ошибку в JvYearGrid от JediVCL. Приведенная ниже функция общедоступного набора не устанавливает предоставленное строковое значение. Я знаю, как исправить эту процедуру, но мой вопрос заключается в том, как ее изменить без переустановки всей библиотеки JediVCL. Возможно ли какое-либо обходное решение, например доступ к правильно функционирующему частному члену SetCellData(string)вместо этого. Я работаю на Delphi XE5 (узнал, что некоторые частные методы раскрытия не будут работать на 10.2).

Что я пробовал: я удалил связанный пакет JvJansDesign из IDE, изменил код, очистил и переустановил пакет. Но он не работает, т. е. ссылается на ошибочную процедуру откуда-то еще, а не на исходный файл, который я изменяю (JEDI master\jvcl\run\JvYearGrid.pas). Я подтвердил это, поставив showmessage(), которые никогда не запускались. Измененная процедура никогда не вводится, не говоря уже о проверке if else.

Примечание. Процедура устанавливает строковое значение для выбранной ячейки в сетке года. Кроме того, внутренне всплывающее меню успешно изменяет это значение через FYearData[Col, Row].InfoText := stringVar; в закрытом члене SetCellData(string). Я могу изменить из меню, но действительно нужно сделать это программно.

function TJvYearGrid.GetSelDateText: string;
var
  DS: string;
begin
  if (Col < 1) or (Row < 1) then
    Exit;
  DS := FYearData[Col, Row].DisplayText;
  if DS = '' then
    Exit;
  Result := FYearData[Col, Row].InfoText;
end;

procedure TJvYearGrid.SetSelDateText(AText: string);
var
  DS, S: string;
begin

  if (Col < 1) or (Row < 1) then
    Exit;
  DS := FYearData[Col, Row].DisplayText;
  if DS = '' then
    Exit;
  FYearData[Col, Row].InfoText := s;
end;

person user30478    schedule 09.08.2020    source источник


Ответы (1)


Повторю то, что я уже сделал: удалил пакет для компонентов JvJans (JvJansDesign190.bpl), изменил единственный исходный файл для JvYearGrid (внутри папки запуска).

Суть заключалась в том, что самого пакета JvJansDesign190 было недостаточно для изменения элемента управления, поскольку он зависел от сборки другого пакета JvJans190. Если вы откроете групповой проект JVCL для своей версии продукта Delphi (у меня V19), вы увидите эти два. Сначала нужно пересобрать зависимость (JvJans190), затем очистить и установить поверх нее JvJansDesign190.

Это обновит компонент времени разработки, и не будет расхождений между исходным файлом и поведением компонента.

person user30478    schedule 10.08.2020