Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Подскажите кто знает TMemoField.OnGetText/OnSetText / 7 сообщений из 7, страница 1 из 1
01.04.2003, 11:01
    #32130703
sv
sv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите кто знает TMemoField.OnGetText/OnSetText
Не вызываются указанные обработчики для полей TMemoField!
Пробовал для других полей -- все ОК!, для Memo - не получается.
:-(
...
Рейтинг: 0 / 0
01.04.2003, 13:09
    #32130873
LexusR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите кто знает TMemoField.OnGetText/OnSetText
не должно быть
также вызывается как для всех полей
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
procedure TForm1.ADOTable1MemoTGetText(Sender: TField; var Text: String;
  DisplayText: Boolean);
begin
   Text := ADOTable1MemoT.AsString+' Memo';
end;

procedure TForm1.ADOTable1MemoTSetText(Sender: TField; const Text: String);
begin
  ADOTable1MemoT.AsString := Text+ ' test';
end;

...
Рейтинг: 0 / 0
01.04.2003, 13:23
    #32130890
sv
sv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите кто знает TMemoField.OnGetText/OnSetText
2 LexusR
Я смотрю Вы используете ADO.
У меня обычные TTable :-(
Вобще работаю с Oracle, но для проверки создал простейшую таблицу
Paradox c полем Memo и Autoincrement.
Так для Memo - не получается, для других все ОК!
...
Рейтинг: 0 / 0
01.04.2003, 13:46
    #32130923
LexusR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите кто знает TMemoField.OnGetText/OnSetText
попробовал таблица Paradox7
все работает
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
  TForm1 = class(TForm)
    DBGrid1: TDBGrid;
    DataSource1: TDataSource;
    Table1: TTable;
    Table1ID: TSmallintField;
    Table1TMemo: TMemoField;
    procedure Table1TMemoGetText(Sender: TField; var Text: String;
      DisplayText: Boolean);
    procedure Table1TMemoSetText(Sender: TField; const Text: String);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Table1TMemoGetText(Sender: TField; var Text: String;
  DisplayText: Boolean);
begin
    Text := Table1TMemo.AsString + ' memo';
end;

procedure TForm1.Table1TMemoSetText(Sender: TField; const Text: String);
begin
    Table1TMemo.AsString := Text + 'text';
end;

...
Рейтинг: 0 / 0
01.04.2003, 14:54
    #32131018
sv
sv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите кто знает TMemoField.OnGetText/OnSetText
Да! Видимо я что-то прогнал...
Сейчас все перепроверю...

СПАСИБО за участие!
...
Рейтинг: 0 / 0
02.04.2003, 10:54
    #32131577
sv
sv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите кто знает TMemoField.OnGetText/OnSetText
Заметил такую странную штуку:
-- если Memo-поле выводится в DBGrid то событие выполняется!
-- если Memo-поле связать, к примеру, с DBMemo то оно(OnGetField)
не выполняется!

Подскажите, где я ошибаюсь?!
...
Рейтинг: 0 / 0
03.04.2003, 07:27
    #32132297
LexusR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите кто знает TMemoField.OnGetText/OnSetText
Компоненты TDBGrid, TDBEdit при обработке текста вызывают методы поля
Text и DisplayText
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
function TCustomDBGrid.GetEditText(ACol, ARow: Longint): string;
begin
  Result := '';
  if FDatalink.Active then
  with Columns[RawToDataColumn(ACol)] do
    if Assigned(Field) then
      Result := Field.Text;
  FEditText := Result;
end;

что в свою очередь вызывает ваш обработчик события OnGetText
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
function TField.GetEditText: string;
begin
  Result := '';
  if Assigned(FOnGetText) then
    FOnGetText(Self, Result, False) else
    GetText(Result, False);
end;

TDBMemo при работе с Blob-полями
не обращается к методу Text и соответственно обработчик события OnGetText не
вызывается
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
procedure TDBMemo.LoadMemo;
begin
  if not FMemoLoaded and Assigned(FDataLink.Field) and
FDataLink.Field.IsBlob then
  begin
    try
      Lines.Text := FDataLink.Field.AsString;
      FMemoLoaded := True;
    except
      { Memo too large }
      on E:EInvalidOperation do
        Lines.Text := Format('(%s)', [E.Message]);
    end;
    EditingChange(Self);
  end;
end;
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Подскажите кто знает TMemoField.OnGetText/OnSetText / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]