LibraryName в TfrxFIBDatabase
В TfrxFIBDatabase отсутствует LibraryName.
Надоело ее добавлять. Вначале добавил свойство LibraryName в frxFIBComponents.pas:
TfrxFIBDatabase = class(TfrxCustomDatabase)
private
function GetLibraryName: TFileName;
procedure SetLibraryName(Value: TFileName);
published
property LibraryName: TFileName read GetLibraryName write SetLibraryName;
end;
function TfrxFIBDatabase.GetLibraryName: TFileName;
begin
try
Result := FDatabase.LibraryName;
except
Result := '';
end
end;
procedure TfrxFIBDatabase.SetLibraryName(Value: TFileName);
var
Conn: boolean;
begin
with FDatabase do
begin
Conn := Connected;
Connected := false;
LibraryName := Value;
end;
Connected := Conn;
end;
Что имеем с результате:
1. Свойство LibraryName не имеет конечного эллипса в инспекторе объектов.
2. Свойство LibraryName сохраняется в файле после свойства Connected, соответственно, если Connected = true, будет выдано сообщение 'Client library not found', поскольку имя библиотеки еще не известно.
3. Ладно, не указываем свойство Connected = true в свойствах базы. Присваиваем его в событии ReportOnStartReport:
procedure ReportOnStartReport(Sender: TfrxComponent);
begin
FIBDatabase.Connected := true;
end;
Вроде начинает работать, но после отображения всего отчета вновь вылетает сообщение 'Client library not found', хотя уже все нарисовано. Причем эта ситуация происходит при работе из приложения, а не в дизайнере.
4. Если в инспекторе объектов перейти на компонент, не содержащий событий (нпр. TfrxFIBDatabase), открыть вкладку Events, встать на название класса в инспекторе объектов и нажать стрелку вправо, получим "Cannot focus a disabled or invisible window".
Надоело ее добавлять. Вначале добавил свойство LibraryName в frxFIBComponents.pas:
TfrxFIBDatabase = class(TfrxCustomDatabase)
private
function GetLibraryName: TFileName;
procedure SetLibraryName(Value: TFileName);
published
property LibraryName: TFileName read GetLibraryName write SetLibraryName;
end;
function TfrxFIBDatabase.GetLibraryName: TFileName;
begin
try
Result := FDatabase.LibraryName;
except
Result := '';
end
end;
procedure TfrxFIBDatabase.SetLibraryName(Value: TFileName);
var
Conn: boolean;
begin
with FDatabase do
begin
Conn := Connected;
Connected := false;
LibraryName := Value;
end;
Connected := Conn;
end;
Что имеем с результате:
1. Свойство LibraryName не имеет конечного эллипса в инспекторе объектов.
2. Свойство LibraryName сохраняется в файле после свойства Connected, соответственно, если Connected = true, будет выдано сообщение 'Client library not found', поскольку имя библиотеки еще не известно.
3. Ладно, не указываем свойство Connected = true в свойствах базы. Присваиваем его в событии ReportOnStartReport:
procedure ReportOnStartReport(Sender: TfrxComponent);
begin
FIBDatabase.Connected := true;
end;
Вроде начинает работать, но после отображения всего отчета вновь вылетает сообщение 'Client library not found', хотя уже все нарисовано. Причем эта ситуация происходит при работе из приложения, а не в дизайнере.
4. Если в инспекторе объектов перейти на компонент, не содержащий событий (нпр. TfrxFIBDatabase), открыть вкладку Events, встать на название класса в инспекторе объектов и нажать стрелку вправо, получим "Cannot focus a disabled or invisible window".