powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Подскажите кто знает TMemoField.OnGetText/OnSetText
7 сообщений из 7, страница 1 из 1
Подскажите кто знает TMemoField.OnGetText/OnSetText
    #32130703
sv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sv
Гость
Не вызываются указанные обработчики для полей TMemoField!
Пробовал для других полей -- все ОК!, для Memo - не получается.
:-(
...
Рейтинг: 0 / 0
Подскажите кто знает TMemoField.OnGetText/OnSetText
    #32130873
LexusR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не должно быть
также вызывается как для всех полей
Код: 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
Подскажите кто знает TMemoField.OnGetText/OnSetText
    #32130890
sv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sv
Гость
2 LexusR
Я смотрю Вы используете ADO.
У меня обычные TTable :-(
Вобще работаю с Oracle, но для проверки создал простейшую таблицу
Paradox c полем Memo и Autoincrement.
Так для Memo - не получается, для других все ОК!
...
Рейтинг: 0 / 0
Подскажите кто знает TMemoField.OnGetText/OnSetText
    #32130923
LexusR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробовал таблица 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
Подскажите кто знает TMemoField.OnGetText/OnSetText
    #32131018
sv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sv
Гость
Да! Видимо я что-то прогнал...
Сейчас все перепроверю...

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

Подскажите, где я ошибаюсь?!
...
Рейтинг: 0 / 0
Подскажите кто знает TMemoField.OnGetText/OnSetText
    #32132297
LexusR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Компоненты 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
7 сообщений из 7, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Подскажите кто знает TMemoField.OnGetText/OnSetText
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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