|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Поле (MEMO) в AdoTable
В таблице есть поле, которое связано с другой таблицей (один ко многим). Так в этом поле отображается (MEMO), вместо идентификаторов полей в другой таблице. Так и должно быть? )
http://s54.radikal.ru/i145/1209/6b/bd624af32b7f.jpg |
#2
|
||||
|
||||
Цитата:
Подключи к этому полю компонент TDBMemo - он умеет работать с многострочным текстом. Если необходимо, чтобы именно в ячейке DBGrid отображался текст, то можно на обработчик события OnGetText этого поля прицепить такой обработчик: Код:
procedure TForm1.ADOQuery1_OnGetText(Sender: TField; var Text: String; DisplayText: Boolean); begin Text := Sender.AsString; end; |
#3
|
|||
|
|||
Спасибо. Еще вопрос: как в dbgrid сделать авторазмер на колонки?
|
#4
|
||||
|
||||
Цитата:
|
#5
|
|||
|
|||
Ширина в зависимости от ширины содержимого
|
#6
|
||||
|
||||
Цитата:
Так как DBGrid автоматически очень неудачно делает ширину, то я когда-то написал процедурку выравнивающую колонки по содержимому и в нужных местах её использую (обычно сразу после открытия таблицы): Код:
procedure CalcDBGridColumnWidths(DBGrid: TDBGrid); var DataSet: TDataSet; OldRecNo: Integer; MaxWidths: array of Integer; i, Width: Integer; begin if (DBGrid = nil) or (DBGrid.DataSource = nil) or (DBGrid.DataSource.DataSet = nil) then Exit; DataSet := DBGrid.DataSource.DataSet; OldRecNo := DataSet.RecNo; DataSet.DisableControls; try SetLength(MaxWidths, DBGrid.Columns.Count); for i := 0 to DBGrid.Columns.Count - 1 do begin MaxWidths[i] := DBGrid.Canvas.TextWidth(DBGrid.Columns[i].Title.Caption) + 4; end; DataSet.First; while not DataSet.Eof do begin for i := 0 to DBGrid.Columns.Count - 1 do begin Width := DBGrid.Canvas.TextWidth(DBGrid.Columns[i].Field.DisplayText) + 4; if Width > MaxWidths[i] then MaxWidths[i] := Width; end; DataSet.Next; end; for i := 0 to DBGrid.Columns.Count - 1 do begin DBGrid.Columns[i].Width := MaxWidths[i]; end; finally DataSet.RecNo := OldRecNo; DataSet.EnableControls; end; end; |
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
ART (16.09.2012)
|
#7
|
|||
|
|||
Спасибо! А как сделать, чтобы вместо идентификаторов отображались другие поля? Например, в таблице "кассеты" в колонке "фильмы" отображались не их айдишники, а их названия? Можно сделать прямо в аксесс?
|
#8
|
||||
|
||||
Цитата:
|
#9
|
|||
|
|||
Посмотри в персональные сообщения
|
#10
|
||||
|
||||
Цитата:
есть EhLib очень рекомендую http://www.ehlib.com/RUS/default.htm EhLib 3.6 бесплатен Код сырец |
#11
|
||||
|
||||
Добрый вечер. В вашей теме зашла речь о компоненте "DBMemo" , что он может отображать "поля memo"(с большим объемом текста) или "Поле объекта OLE".Подскажите как можно подключить DBMemo к нужному столбцу таблицы access?
|
#12
|
||||
|
||||
Цитата:
|
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
Evgen_Balbes (30.09.2012)
|