Виртуальная библиотека Delphi

Тут можно читать онлайн Виртуальная библиотека Delphi - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Виртуальная библиотека Delphi
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    3/5. Голосов: 11
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 60
    • 1
    • 2
    • 3
    • 4
    • 5

Виртуальная библиотека Delphi краткое содержание

Виртуальная библиотека Delphi - описание и краткое содержание, автор Неизвестный Автор, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Виртуальная библиотека Delphi - читать онлайн бесплатно полную версию (весь текст целиком)

Виртуальная библиотека Delphi - читать книгу онлайн бесплатно, автор Неизвестный Автор
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Для подсчета сумм правильнее использовать событие TQuery.OnCalcFields . Хорошим примером является X:\DELPHI\DEMOS\DB\MASTAPP\MASTAPP.DPR.

8. Использование кавычек в параметризированном запросе.

картинка 47

Мой запрос получает параметр. Проблема в том, что строка параметра содержит " (двойную кавычку), которая приводит к Runtime Error.

картинка 48

Вам необходимо использовать динамический SQL-запрос, иначе при указании например

WHERE TABLE.FIELD = 'let"ter'

вы получите ошибку.

9. Как создать отдельный компонент TTable?

Легко и просто — точно также как и обычный компонент. При этом в качестве параметра конструктору можно передавать значение nil.

var

MyTable: TTable;

begin

MyTable := TTable.Create( nil);

try

MyTable.DatabaseName := 'MyDB';

MyTable.TableName := 'MyTable.db';

Mytable.IndexName := 'MyIndex';

MyTable.Open;

{ делать то, что надо }

finally

MyTable.Free;

end;

end;

10. Как узнать, какая ячейка при просмотре TDBGrid текущая?

Здесь процедура для сохранения текущего номера строки и колонки. Следующий код в методе MyDBGridDrawDataCell обновляет переменные Col и Row (которые не должны быть локальными для этого метода) каждый раз, когда таблица перерисовывается. Используя этот код, вы можете считать, что Col и Row указывают на текущую колонку и строку соответственно.

var

Col, Row: Integer;

procedureTForm1.MyDBGridDrawDataCell(Sender: TObject; constRect: TRect;

Field: TField; State: TGridDrawState);

var

RowHeight: Integer;

begin

ifgdFocused inState then

begin

RowHeight := Rect.Bottom - Rect.Top;

Row := (Rect.Top divRowHeight) - 1;

Col := Field.Index;

end;

end;

11. Как выделить цветом текущую строку в TDBGrid?

Для TDBGrid в свойстве Options установите dgRowSelect в True .

12. Как изменить цвет ячейки в TDBGrid?

Введите следующий код в обработчике события OnDrawDataCell :

procedureTForm1.DBGrid1DrawDataCell(Sender: TObject; constRect: TRect;

Field: TField; State: TGridDrawState);

begin

ifgdFocused inState then

with(Sender asTDBGrid).Canvas do

begin

Brush.Color := clRed;

FillRect(Rect);

TextOut(Rect.Left, Rect.Top, Field.AsString);

end;

end;

Установите свойство DefaultDrawing в True . Здесь перерисовывается только выделенная ячейка. Если установить DefaultDrawing в False , то вы должны самостоятельно перерисовать все ячейки аналогично примеру.

13. Как узнать, что пользователь перешел на другую запись, например, в TDBGrid?

Переход на новую запись — это событие, которое относится не к визуальному компоненту, а к источнику данных. Соответствующее событие называется OnDataChange и имеется у компонента TDataSource .

14. Как устанавливать собственный цвет или шрифт для столбца TDBGrid?

картинка 49

Выключите property DefaultDrawing , и обрабатывайте событие OnDrawDataCell :

procedureTForm1.DBGrid1DrawDataCell(Sender: TObject; constRect: TRect;

Field: TField; State: TGridDrawState);

begin

ifField.FieldName = 'Name' thenDBGrid1.Canvas.Font.Style := [fsBold];

DBGrid1.DefaultDrawDataCell(Rect, Field, State);

end;

Это приведет к тому, что содержимое столбца 'Name' будет показываться жирным шрифтом.

картинка 50

В Delphi 2.0 вы можете использовать редактор столбцов для той же самой цели.

15. Почему указатель ползунка в TDBGrid не показывает текущее положение в таблице?

Дело в том, что TDBGrid предполагает многопользовательский доступ к таблице. В этом случае другие пользователи этой же таблицы могут добавлять или удалять записи, в результате информация о количестве записей на текущий момент становится неопределенной.

Конечно, в однопользовательском варианте количество записей всегда известно, но поскольку TDBGrid работает через промежуточный источник данных DataSource , ему неизвестен конкретный способ доступа к данным — навигационный или SQL. Например, для SQL существует только один способ узнать количество записей — выполнить специальный запрос с их подсчетом, а на это может потребоваться значительное время.

По всем этим причинам TDBGrid является универсальным средством для просмотра таблиц, которое работает во всех случаях и с любыми источниками данных.

16. Как установить фокус на определенное поле в TDBGrid?

Используйте код:

DBGrid1.SelectedField := Table1SomeField;

DBGrid1.SetFocus;

17. Как создать обработчик события OnClick для TDBGrid?

Как и всякий TControl (иерархия наследования TControl→TWinControl→TCustomControl→TCustomGrid→TCustomDBGrid→TDBGrid ) у TDBGrid есть событие OnClick , но оно protected. Так что можно либо создать новый класс, производный от TDBGrid , в котором объявить это свойство как published, либо использовать другой вариант. Например, вы можете использовать событие OnColEnter .

18. Как создать маску для TDBEdit?

Маска относится к полю в таблице (компонент TField ) а не к самому TDBEdit . Дважды щелкните мышкой на TTable и в FieldEditor'е добавьте все нужные вам поля. Когда поле выбрано в списке, его свойства показаны в Object Inspector, включая маску ввода. Связывание TDBEdit и любых других компонентов с этим TTable будет вызывать наложение маски на соответствующее поле.

19. Хотелось бы иметь для OLE объектов, сохраненных в базе данных, компонент вроде TDBImage.

В стандартном наборе такого компонента действительно нет. Возможно, кто-нибудь скоро напишет что-нибудь в этом роде. В принципе, можно обойтись и без данного компонента. Например, есть табличка .db с BLOB полем для OLE объекта. При движении по записям можно OLE сохранять в базе, уничтожать, создавать новый, считывать из базы.

Чтение/запись OLE:

• создать поток, связанный с BLOB полем

• для OLE контейнера выполнить чтение/запись с потоком ( SaveToStream и LoadFromStream )

Естественно, OLE объект должен быть Embedded.

20. Что нужно сделать, чтобы при открытии запароленной таблицы не появлялся диалог запроса пароля?

Просто дайте этот пароль объекту Session перед открытием таблицы:

Session.AddPassword( 'PASSWORD');

После закрытия таблицы, пароль можно удалить RemovePassword('PASSWORD') , можно удалить все пароли: RemoveAllPasswords .

картинка 51

Если ваш компонент доступа к данным ( TTable или TQuery ) связан с сессий, отличной от той, которая выставляется по умолчанию, то добавлять пароль нужно именно у этого компонента TSession .

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Неизвестный Автор читать все книги автора по порядку

Неизвестный Автор - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Виртуальная библиотека Delphi отзывы


Отзывы читателей о книге Виртуальная библиотека Delphi, автор: Неизвестный Автор. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x