нужен компонент типа TEdit/TDBEDIT

tah

Турист
Регистрация
23 Янв 2006
Сообщения
26
Реакции
2
Credits
34
Возникла задача, а вместе с ней и потребность, в следующем компоненте

Нужен компонент ввода данных аналогичный TEdit/TDBEDIT, только чтоб
в нем можно было перед вводом вписать какой нибуть текст, например с просьбой ввести дату рождения. При вводе самих данных текст соответственно пропадает и вновь должен появиться при очищении данных в поле.

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

p.s. в DevExpres у компонентов подобного функционала не нашел
 

zashiki2009

Местный
Регистрация
25 Авг 2009
Сообщения
21
Реакции
16
Credits
37
Честно говоря до конца не понял задачу. Но тем не менее, посмотри в сторону мощного компонента TRichView (Для просмотра ссылки Войди или Зарегистрируйся), в одной из демок, если не ошибаюсь, подобная функциональность представлена.
Также здесь его неоднократно выкладывали (http://dumpz.ws/showthread.php?t=54851&highlight=trichview). v12.6.1 - это последний стабильный билд.
 
Последнее редактирование модератором:

demav

Местный
Регистрация
20 Ноя 2008
Сообщения
97
Реакции
13
Credits
158
Полагаю, это можно реализовать и в обычном TEdit. Впишите в свойство Text нужную фразу. В событии OnEnter проверить на то, что текст изначальный. Если так - очистить.
В OnExit - проверка наоборот.
 

zashiki2009

Местный
Регистрация
25 Авг 2009
Сообщения
21
Реакции
16
Credits
37
demav прав TRichView здесь ни к месту, сори изначально не догнал... :eek:
 

tah

Турист
Регистрация
23 Янв 2006
Сообщения
26
Реакции
2
Credits
34
С D2009 у Editoв появляется свойство TextHint.... в ранних версиях его нет, а у меня как раз старичек D7. Оно как раз то что мне надо, еслиб еще найти реализацию данного свойства в стороннем компоненте былоб совсем сдорово)

Еще как вариант копать в сторону EM_SETCUEBANNER Message
Для просмотра ссылки Войди или Зарегистрируйся
но в winapi не селен
 

zashiki2009

Местный
Регистрация
25 Авг 2009
Сообщения
21
Реакции
16
Credits
37
Жаль, в DevExpress его нет - пользуюсь только этими контролами. Или и там есть?

У простых эдиторов (cxTextEdit, cxButtonEdit и др.) оно есть, а вот у эдиторов в панели инструментов (dxBarEdit, ...) почему-то нету...
 

Баклан

Местный
Регистрация
7 Янв 2010
Сообщения
5
Реакции
8
Credits
10
Возникла задача, а вместе с ней и потребность, в следующем компоненте

Нужен компонент ввода данных аналогичный TEdit/TDBEDIT, только чтоб
в нем можно было перед вводом вписать какой нибуть текст, например с просьбой ввести дату рождения. При вводе самих данных текст соответственно пропадает и вновь должен появиться при очищении данных в поле.

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

p.s. в DevExpres у компонентов подобного функционала не нашел

смотри в сторону TMS компонентов.
У компонетнта TAdvEdit и его наследников есть свойство "EmptyText"
Который отображается в контроле при отсутствии в нём введной информации, при вводе уходит и возвращяется при удолении введёного.
На сколько я понял это то что тебе нужно.
Прилогаю скриншоты
 

tah

Турист
Регистрация
23 Янв 2006
Сообщения
26
Реакции
2
Credits
34
с обычными контролами уже набралось несколько вариантов компонентов и решений, но возникают проблемы с data-aware компонентами и ренениями для них
 

Баклан

Местный
Регистрация
7 Янв 2010
Сообщения
5
Реакции
8
Credits
10
с обычными контролами уже набралось несколько вариантов компонентов и решений, но возникают проблемы с data-aware компонентами и ренениями для них

Опиши подробнее что именно тебе нужно?
 

tah

Турист
Регистрация
23 Янв 2006
Сообщения
26
Реакции
2
Credits
34
нужна самая малость....

это серый текст подсказки, который отображается в поле ввода только, когда оно пустое (используются поля ввода как связанные с набором данных data-aware,
так и нет). Проект в D7.

Что то подобное имеется в D начиная с 2009, свойство TextHint(TEdit)
и у TMS свойство EmptyText(TAdvEdit/TAdvDBEdit), так же на эту тему
есть WinApi EM_SETCUEBANNER.

Первое не подходит так как версия проекта D младше, в TMS реализованна
только в одна data-aware компоненте(нужны еще DBComboBox, DBDateEdit, DBMemo, а также в Grid'ах ну и другие), WinApi имеет много ограничей, вчастности не работает в data-aware компонентах, а также многострочных.....

Поэтому все еще нахожусь в поисках
 

teslyuk

Турист
Регистрация
11 Дек 2003
Сообщения
5
Реакции
0
Credits
10
Как это сделать со стандартными контролами:
Кидаем на форму TEdit и TButton (чтобы был 2-й какой-нибудь элемент). У TEdit в свойстве Hint пишем, например, "Введите имя пользователя"
Далее текст UNIT1.pas:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure SetTextAttribute(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.SetTextAttribute(Sender: TObject);
begin
  with (Sender as TEdit) do
  begin
    if Focused then
    begin
      if Text = Hint then Text := '';
      Font.Color := clWindowText;
    end
    else
      if Length(Text) = 0 then
      begin
        Text := Hint;
        Font.Color := clGrayText;
      end;
  end
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  ActiveControl := Button1;
  Edit1.OnEnter := SetTextAttribute;
  Edit1.OnExit  := SetTextAttribute;
  SetTextAttribute(Edit1);
end;

end.
 
Последнее редактирование модератором: