Форум: "Базы";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];
ВнизПоказ Memo-поля в DBGrid Найти похожие ветки
← →
Брат (2004-09-30 15:03) [0]Есть у меня кусок кода, который показывает в 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).
Не пойму в чем дело. Помогите пожалуйста. Заранее благодарен.
← →
Ozone © (2004-09-30 15:16) [1]Что за ошибка?
← →
Брат (2004-09-30 15:20) [2]При компиляции кода:
Undeclared identifier: "TablesTableName"
← →
Vlad © (2004-09-30 15:25) [3]а если вместо TablesTableName
написать
Tables.FieldByName("TableName")
?
Если не поможет, то скорее всего Tables лежит в другом модуле, который не прописан в USES
← →
roottim © (2004-09-30 15:27) [4]> TablesTableNameя тоже незнаю что такое TablesTableName... нигде в коде его нет, кроме как в Create.. откуда ты вообще его взял ?
← →
sniknik © (2004-09-30 15:27) [5]это предопределенное поле (двойной клик на таблице мышкой и по правой кнопке добавить все поля, то что у тебя будет с memo смело вставляй вместо этого)
или можеш заменить на это Tables.fieldbyname("TableName")
← →
Брат (2004-09-30 15:28) [6]Пробовал, пишет:
Incompatible types: "TBlobField" and "TField"
← →
Брат (2004-09-30 15:30) [7]
> sniknik © (30.09.04 15:27) [5]
> это предопределенное поле (двойной клик на таблице мышкой
> и по правой кнопке добавить все поля, то что у тебя будет
> с memo смело вставляй вместо этого)
> или можеш заменить на это Tables.fieldbyname("TableName")
дело в том что "двойной клик" не помогает, т.к. таблица создается динамически...
может кто знает как это действие сделать программно
← →
roottim © (2004-09-30 15:31) [8]TBlobField(Tables.FieldByName("TableName"))
← →
Vlad © (2004-09-30 15:31) [9]
> Брат (30.09.04 15:28) [6]
> Пробовал, пишет:
> Incompatible types: "TBlobField" and "TField"
> Брат (30.09.04 15:28) [6]
Ну так преобразуй к TBlobField
TBlobField(Tables.FieldByName...)
← →
Ozone © (2004-09-30 15:32) [10]Брат (30.09.04 15:28) [6]
см. roottim © (30.09.04 15:27) [4] он же все ясно написал.
← →
Брат (2004-09-30 15:34) [11]
> roottim © (30.09.04 15:31) [8]
> TBlobField(Tables.FieldByName("TableName"))
точно! :)
всем спасибо большое
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.038 c