![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Показ Memo-поля в DBGrid [D6, Paradox]
Брат © (2004-09-30 15:03:00)Есть у меня кусок кода, который показывает в DBGrid содержимое мемо-поля:
procedure TfrmMain.DBGridTablesDrawDataCell(Sender: TObject;
const Rect: TRect; Field: TField; State: TGridDrawState);
var
P: array [0..1023] of Char; { MemoField buffer }
BS: TBlobStream;
S: string;
begin
if Field is TMemoField then
with (Sender as TDBGrid).Canvas do
begin
// TablesTableName - это TMemoField:
BS:=TBlobStream.Create(TablesTableName,bmRead);
FillChar(P,SizeOf(P),#0);
BS.Read(P,SizeOf(P));
BS.Free;
S:=StrPas(P);
// Заменяем возврат каретки на пробел :
while Pos(#13,S)>0 do S[Pos(#13,S)]:=' ';
while Pos(#10,S)>0 do S[Pos(#10,S)]:=' ';
// Очищаем ячейку:
FillRect(Rect);
// Выводим текст в ячейку:
TextOut(Rect.Left,Rect.Top,S);
end;
end;
Есть таблица Tables, которая создается динамически с полями:
FieldDefs.Add('TableName',ftMemo,0,true);
FieldDefs.Add('FileName',ftString,30,true);
FieldDefs.Add('Date',ftDate,0,true);
На строке
BS:=TBlobStream.Create(TablesTableName,bmRead);
выдается ошибка, что он не знает что такое TablesTableName
(хотя это ведь я обращаюсь к полю TableName таблицы Tables).
Не пойму в чем дело. Помогите пожалуйста. Заранее благодарен.
Брат (2004-09-30 15:34:00) [1]
> roottim © (30.09.04 15:31) [8]
> TBlobField(Tables.FieldByName('TableName'))
точно! :)
всем спасибо большое
Ozone (2004-09-30 15:32:00) [2]Брат (30.09.04 15:28) [6]
см. roottim © (30.09.04 15:27) [4] он же все ясно написал.
roottim (2004-09-30 15:31:00) [3]TBlobField(Tables.FieldByName('TableName'))
Vlad (2004-09-30 15:31:00) [4]
> Брат (30.09.04 15:28) [6]
> Пробовал, пишет:
> Incompatible types: 'TBlobField' and 'TField'
> Брат (30.09.04 15:28) [6]
Ну так преобразуй к TBlobField
TBlobField(Tables.FieldByName...)
Брат (2004-09-30 15:30:00) [5]
> sniknik © (30.09.04 15:27) [5]
> это предопределенное поле (двойной клик на таблице мышкой
> и по правой кнопке добавить все поля, то что у тебя будет
> с memo смело вставляй вместо этого)
> или можеш заменить на это Tables.fieldbyname('TableName')
дело в том что "двойной клик" не помогает, т.к. таблица создается динамически...
может кто знает как это действие сделать программно
Брат (2004-09-30 15:28:00) [6]Пробовал, пишет:
Incompatible types: 'TBlobField' and 'TField'
roottim (2004-09-30 15:27:00) [7]> TablesTableNameя тоже незнаю что такое TablesTableName... нигде в коде его нет, кроме как в Create.. откуда ты вообще его взял ?
sniknik (2004-09-30 15:27:00) [8]это предопределенное поле (двойной клик на таблице мышкой и по правой кнопке добавить все поля, то что у тебя будет с memo смело вставляй вместо этого)
или можеш заменить на это Tables.fieldbyname('TableName')
Vlad (2004-09-30 15:25:00) [9]а если вместо TablesTableName
написать
Tables.FieldByName('TableName')
?
Если не поможет, то скорее всего Tables лежит в другом модуле, который не прописан в USES
Брат (2004-09-30 15:20:00) [10]При компиляции кода:
Undeclared identifier: "TablesTableName"
Ozone (2004-09-30 15:16:00) [11]Что за ошибка?