![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Много строк в одной записи! [D6, Paradox]
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]| Физика|
| Химия |
| Матем.|
А мемополе не спасет? :)