Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Много строк в одной записи! [D6, Paradox]


Страницы:   1 2

ser_ega ©   (2004-11-10 21:12:00) 

Мастера подскажите! Как добавить запись у которой одно или несколько полей будет иметь много строк!
Примерно так:

|-|------|-------|
| |Серега| Физика|
|1|      | Химия |
| |      | Матем.|
|-|------|-------|
| |Макс  | Геогр.|
|2|      | Информ|
|-|------|-------|


ser_ega   (2004-11-12 22:54:00) [21]

Я так понимаю DBGrid1DrawDataCell вызывается сама, как только в DBGrid добавляются строки! Delphi не показывает в какой строке ошибка!
Может кто-то сделает исходник работающий с TmemoField или может подкажете где его найти!


sniknik   (2004-11-12 08:09:00) [22]

ну ты спросил, конечно не было, чтобы я назвал поле именем "ИФА" да ни за что.

во первых сделай его на английском, если оно у тебя вообше в таблице есть. во вторых что за "эта процедура"? как ты ее вызываеш? на какой именно строке? описывай условия,
или посылай свой вопрос туда где ребусы составляют они поймут.


ser_ega   (2004-11-12 07:47:00) [23]

Что ни у кого не было такой ошибки?


ser_ega   (2004-11-11 22:07:00) [24]

Теперь когда обрабатывается эта процедура выскакивает ошибка  Cannot access field "ИФА" as type Integer! Что делать?


ser_ega   (2004-11-10 23:24:00) [25]

Да вот я там тоже такое нашел! Только не могу понять что такое Table1Notes? И почему-то у меня не получается создать TMemoField! Я делаю двойнок клик по TTable, а выскакивает что то похожее на навигатор какой-то (кнопки вперед и назад)!
Может вы обьясните как правильно его создать!


Vit@ly   (2004-11-10 22:26:00) [26]

Как показать содержимое Memo-поля в DBGrid?

Поумолчанию, DBGrid не может отображать memo-поля. Однако, проблему можно решить при помощи события OnDrawDataCell в DBGrid.

procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const  
                Rect: TRect; Field: TField; State:  
                TGridDrawState);  

var  
 P: array [0..50] of char; {размер массива, это количество необходимых символов}
 bs: TBlobStream;          {из memo-поля}  
 hStr: String;  

begin  
 if Field is TMemoField then  
 begin  
   with (Sender as TDBGrid).Canvas do  
   begin   {Table1Notes это TMemoField}  
     bs := TBlobStream.Create(Table1Notes, bmRead);  
     FillChar(P,SizeOf(P),#0); {строка завершается нулём}  
     bs.Read(P, 50); {читаем 50 символов из memo в blobStream}  
     bs.Free;  
     hStr := StrPas(P);  
     while Pos(#13, hStr) > 0 do  {удаляем переносы каретки и}
       hStr[Pos(#13, hStr)] := ' ';  
     while Pos(#10, hStr) > 0 do  {отступы строк}
       S[Pos(#10, hStr)] := ' ';  

     FillRect(Rect);  {очищаем ячейку}
     TextOut(Rect.Left, Rect.Top, hStr);  {заполняем ячейку данными из memo}
   end;  
 end;  
end;
 

Замечание: перед тем, запустить пример, создайте объект TMemoField для memo-поля двойным кликом по компоненту TTable и добавлением memo-поля.

Взято с Исходников.ru http://www.sources.ru


Vit@ly   (2004-11-10 22:05:00) [27]

Королевство Делфи


ser_ega   (2004-11-10 22:01:00) [28]

А где искать?


Vit@ly   (2004-11-10 21:58:00) [29]

Так ты видимо говоришь о DBGrid?
Есть решения по отображению в гриде мемеполей. Поищи


ser_ega   (2004-11-10 21:48:00) [30]

Так я пробовал уже! Но в этом поле все время написано TMemo, а не Физика, Матем, Химия...


Vit@ly   (2004-11-10 21:26:00) [31]

| Физика|
| Химия |
| Матем.|

А мемополе не спасет? :)


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо