Можно ли заставить свойство TextHint в TDBEdit работать?

Я заметил, что можно установить свойство TextHint для TDBEdit в коде (оно не отображается в Инспекторе объектов), однако оно не отображается, есть ли простой способ заставить это работать?

1 ответ

Следующая настройка работает в XE2. Оставьте TClientDataSet, TDataSourceи 2 TDBEdit элементы управления в форме, и сделать OnCreate Обработчик события формы выглядит так:

procedure TForm1.FormCreate(Sender: TObject);
begin
  DataSource1.DataSet := ClientDataSet1;
  DBEdit1.DataSource := DataSource1;
  DBEdit2.DataSource := DataSource1;

  ClientDataSet1.FieldDefs.Add('First', ftString, 20);
  ClientDataSet1.FieldDefs.Add('Last', ftString, 20);
  ClientDataSet1.CreateDataSet;
  ClientDataSet1.Open;

  DBEdit1.DataField := ClientDataSet1.Fields[0].FieldName;
  DBEdit1.TextHint := 'first name';
  DBEdit2.DataField := ClientDataSet1.Fields[1].FieldName;
  DBEdit2.TextHint := 'last name';

  ClientDataSet1.Insert;
end;

Одна потенциальная проблема - это TDBEditтолько для чтения. Например, удалите Insert() позвоните из фрагмента, и изменения останутся пустыми. Это поведение аналогично обычному редактированию, что является разумным - когда элемент управления редактирования не позволяет редактировать, нет смысла показывать подсказку о том, что пользователь должен ввести.

Другие вопросы по тегам