Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Мемо в DBGrid

Delphi , Компоненты и Классы , TDBGrid

Code:
{
A common problem when working with DBGrid is, that this component can't display TMemo fields,
multiline columns, Graphics...
There are a few good freeware components around to solve this problem.
The best one is definitly "DBGRIDPLUS", which comes with full sources.
However, this component does not allow to edit the text in memo fields.
The delphi fans out there who bought a delphi version that comes with the VCL sources can
fix this problem:
Open dbgrids.pas and make the following changes:
(To have memo editing in your app you must just add the modifyed version of dbgrids.pas to your uses clause)
}
 
function TCustomDBGrid.GetEditLimit: Integer;
begin
Result := 0;
if Assigned(SelectedField) and (SelectedField.DataType in [ftString, ftWideString, ftMemo]) then <-- Add
   Result := SelectedField.Size;
end;
 
function TCustomDBGrid.GetEditText(ACol, ARow: Longint): string;
begin
Result := '';
if FDatalink.Active then
with Columns[RawToDataColumn(ACol)] do
   if Assigned(Field) then
     Result := Field.AsString; <-- Change this.
FEditText := Result;
end;
 
{
Just compare theese edited functions with the original ones, and you will know what to change.
To get multiline cell support (not in memo fields!) for DBGridPlus, send me an email and i can send you the changed DBGridPlus.pas file.
}
Взято с сайта http://www.swissdelphicenter.ch/en/tipsindex.php

Это код-отрывок с веб-сайта Swiss Delphi Center, который предлагает советы и решения для общих проблем, которые встречаются у разработчиков при работе с компонентами Delphi.

Проблема, которую решается, заключается в том, что DBGrid, распространенный компонент данных в Delphi, не может отображать поля memo или графические элементы. Проблема возникает потому, что стандартный DBGrid не поддерживает такие типы полей.

Чтобы решить эту проблему, автор предлагает модифицировать исходный код DBGrid, чтобы позволить редактирование полей memo. Это можно сделать, открыв файл dbgrids.pas и сделав два изменения:

  1. В функции GetEditLimit добавить проверку, является ли выбранное поле полем memo (DataType в [ftString, ftWideString, ftMemo]) и вернуть его размер, если это так.
  2. В функции GetEditText изменить строку, которая задает результат, чтобы она возвращала значение свойства Field.AsString вместо пустой строки.

Сделав эти изменения, разработчики могут включить редактирование полей memo в свои компоненты DBGrid.

Автор также упоминает свободный компонент "DBGRIDPLUS", который предоставляет дополнительные функциональные возможности для работы с DBGrid, включая поддержку многстрочных ячеек. Однако этот компонент не позволяет редактировать поля memo. Автор предлагает отправить модифицированный файл DBGridPlus.pas заинтересованным разработчикам, которые хотят включить поддержку многстрочных ячеек.

В целом, это код-отрывок предоставляет решение для общей проблемы, которая встречается у разработчиков Delphi при работе с DBGrid и полями memo.

Решение проблемы отображения поля TMemo в компоненте DBGrid заключается в изменении функций GetEditLimit и GetEditText в файле dbgrids.pas, что позволяет редактировать текстовые поля с помощью данного компонента.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: TDBGrid ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-05-01 11:31:08/0.0053229331970215/1