Я только что нашел ошибку в 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;