Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.31;
Скачать: CL | DM;

Вниз

Показ 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.023 c
3-1096731972
DIS
2004-10-02 19:46
2004.10.31
FastReport и поле memo


1-1097591583
hooky-mars
2004-10-12 18:33
2004.10.31
Добавление строк в Excel


1-1097667686
Leaner
2004-10-13 15:41
2004.10.31
Подскажите, как можно "объеденить" TMenu и TMenuItem


1-1097819932
фывапро
2004-10-15 09:58
2004.10.31
компиляция проекта


8-1091222553
d10
2004-07-31 01:22
2004.10.31
Проблема с 32 битами на DirectX JEDI, IDirectDraw7