Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывод поля MEMO в TDBGrid, Вместо записи MEMO 
:(
    Опции темы
Rodman
Дата 4.7.2007, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



Дароф..

Раньше не пробовал, но вот как сделать чтобы в DGrid выводилось содержимое поля типа Memo, то там только надпись (MEMO)???

Сенкс
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Akella
Дата 12.7.2007, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



используй TDBGridEh
PM MAIL   Вверх
Aprol
Дата 19.7.2007, 04:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 259
Регистрация: 15.6.2007

Репутация: нет
Всего: нет



А этот компонент из какой библиотеки?
PM MAIL   Вверх
Akella
Дата 19.7.2007, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



EhLib
PM MAIL   Вверх
Rodman
Дата 21.8.2007, 08:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



в DRKB нашел 
Код

{ A common problem when working with DBGrid is, that this component can't display TMemo fields,
multiline columns, Graphics...
There are a few good freeware components around to solve this problem.
The best one is definitly "DBGRIDPLUS", which comes with full sources.
However, this component does not allow to edit the text in memo fields.
The delphi fans out there who bought a delphi version that comes with the VCL sources can
fix this problem:
Open dbgrids.pas and make the following changes:
(To have memo editing in your app you must just add the modifyed version of dbgrids.pas to your uses clause)}

function TCustomDBGrid.GetEditLimit: Integer;
begin
   Result := 0;
   if Assigned(SelectedField) and (SelectedField.DataType in [ftString, ftWideString, ftMemo]) then// <-- Add
      Result := SelectedField.Size;
end;

function TCustomDBGrid.GetEditText(ACol, ARow: Longint): string;
begin
   Result := '';
   if FDatalink.Active then
      with Columns[RawToDataColumn(ACol)] do
         if Assigned(Field) then
             Result := Field.AsString;// <-- Change this.
   FEditText := Result;
end;

{Just compare theese edited functions with the original ones, and you will know what to change.
To get multiline cell support (not in memo fields!) for DBGridPlus, send me an email and i can send you the changed DBGridPlus.pas file.}


но я вписал изменения, и никакого эффекта... что не так?
PM MAIL WWW Skype GTalk YIM MSN   Вверх
pseud
Дата 21.8.2007, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 16
Всего: 40



вот что нам говорит об этом Delphi World 6 Pro

 обработчик события GetText TMemoField поместите следующую строку:
Код

Text := GrabMemoAsString(TMemoField(Sender)); 

и поместите следующую функцию так, чтобы к ней можно было свободно обратиться:
Код

function GrabMemoAsString(TheField: TMemoField): string;
begin
  if TheField.IsNull then
    Result := ''
  else
    with TBlobStream.Create(TheField, bmRead) do
    begin
      if Size >= 255 then
      begin
        Read(Result[1], 255);
        Result[0] := #255;
      end
      else
      begin
        Read(Result[1], Size);
        Result[0] := Chr(Size);
      end;
      Free;
      while Pos(#10, Result) > 0 do
        Result[Pos(#10, Result)] := ' ';
      while Pos(#13, Result) > 0 do
        Result[Pos(#13, Result)] := ' ';
    end;
end;





--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
Rodman
Дата 23.8.2007, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



Цитата(pseud @  21.8.2007,  09:46 Найти цитируемый пост)
обработчик события GetText TMemoField поместите следующую строку:

я не понял, куда ее вставить?
PM MAIL WWW Skype GTalk YIM MSN   Вверх
pseud
Дата 23.8.2007, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 16
Всего: 40



В своем DataSet'е создай New поле типа Memo
в инспекторе в методах у него есть метод OnGetText
туда видимо


--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
Rodman
Дата 5.9.2007, 08:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



pseud, мож попробовать у себя, а то что то у меня не выходит!
PM MAIL WWW Skype GTalk YIM MSN   Вверх
pseud
Дата 5.9.2007, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 16
Всего: 40



Rodman
статью нашел - а не проверял
попробовал этот пример заточить у себя - что-то не выходит, ошибки валят
пока не могу разобраться

попробовал TdxDBGrid (Developer Express)
прекрасно работает:
ничего руками писать не надо
сам отображает это мемо поле как текст
а если выставить автовеличину строки, то и с ентерами отображает

надо бы залезть в исходники TdxDBGrid, но позже, извини



--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
Akella
Дата 10.9.2007, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



DrawMemoText := true;

Это сообщение отредактировал(а) Akella - 10.9.2007, 15:43
PM MAIL   Вверх
KaRTmaN
Дата 10.9.2007, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 29.7.2007

Репутация: нет
Всего: нет



У меня такая же проблема.
PM MAIL   Вверх
Akella
Дата 11.9.2007, 08:04 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



KaRTmaN, какая именно?
PM MAIL   Вверх
Rodman
Дата 11.9.2007, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



установил все таки ЁhLib...

но как быть теперь с "палками" (||) вместо ENTER в гриде... 

как их убрать - в идеале заменить на ENTER???

Присоединённый файл ( Кол-во скачиваний: 13 )
Присоединённый файл  Test.rar 441,56 Kb
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Akella
Дата 11.9.2007, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



если ты уберешь перевод строки, то уже не тот результат будет

Добавлено через 1 минуту и 46 секунд
можно попробовать при выводе, в событии DataSet.OnGetText удалять эти строки типа

Text := StringReplace(Field.value, #13, '', [оба параметра])
или
Text := StringReplace(Field.value, #13#10, '', [оба параметра])

Добавлено через 8 минут и 2 секунды
странно
Код

procedure TForm1.ADOQuery1NameTestGetText(Sender: TField; var Text: string; DisplayText: Boolean);
begin
//  ShowMessage(Sender.Value);
  Text := StringReplace(Sender.Value, #$D#$A, '', [rfReplaceAll, rfIgnoreCase]);
  ShowMessage(Text); <- выводит нормальный текст, а в гриде, все равно палки
end;



Добавлено через 9 минут и 34 секунды
но теперь, после StringReplace, нужно DrawMemoText установить в false;

Добавлено через 10 минут и 29 секунд
только что потом будет при записи значения поля из грида в таблицу......
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.1176 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.