19. Хотелось бы иметь для OLE объектов, сохраненных в базе данных, компонент вроде TDBImage.
В стандартном наборе такого компонента действительно нет. Возможно, кто-нибудь скоро напишет что-нибудь в этом роде. В принципе, можно обойтись и без данного компонента. Например, есть табличка .db с BLOB полем для OLE объекта. При движении по записям можно OLE сохранять в базе, уничтожать, создавать новый, считывать из базы.
Чтение/запись OLE:
• создать поток, связанный с BLOB полем
• для OLE контейнера выполнить чтение/запись с потоком (
Естественно, OLE объект должен быть Embedded.
20. Что нужно сделать, чтобы при открытии запароленной таблицы не появлялся диалог запроса пароля?
Просто дайте этот пароль объекту
Session.AddPassword('PASSWORD'
После закрытия таблицы, пароль можно удалить
Если ваш компонент доступа к данным (
21. Как определить реальный размер поля типа BLOB, которое сохранено в таблице?
Ниже приведена функция
function
begin
with
try
Result := Seek(0, 2);
finally
Free;
end
end
procedure
begin
Edit1.Text := IntToStr(GetBlobSize(Notes));
end
22. Как осуществить поиск по неиндексированному полю в таблице?
Вы можете добавить следующую функцию в ваш модуль и вызвать, например:
Locate(Table1, Table1LName, 'Beman'
23. Как узнать, что изменилась текущая запись?
Событие
24. Как считать даты для вычисляемых полей?
При вычислении дат важно удостовериться в том, что все используемые значения подходят по типу. В документации не совсем явно отражен тот факт, что на самом деле тип
В примере,
procedure
var
T1, T2: TDateTime;
begin
Table1D1.AsDateTime := Date+2;
Table1D2.AsDateTime := Date-2;
T1 := Table1D1.AsDateTime;
T2 := Table1D2.AsDateTime;
Table1D3.AsInteger := Trunc(Double(T1) - Double(T2));
end
Компоненты и VCL
1. Почему возникает ошибка компиляции при обращении к объекту Sender в обработчике события?
Я в обработчике события
Caption := Sender.Text;
Если вы рассматривали декларацию, объект
Caption := (Sender as