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

tah

Member
Joined
Jan 23, 2006
Messages
26
Reaction score
2
Location
Москва
Возникла задача, а вместе с ней и потребность, в следующем компоненте

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

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

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

zashiki2009

Member
Joined
Aug 25, 2009
Messages
21
Reaction score
16
Location
Люберцы
Честно говоря до конца не понял задачу. Но тем не менее, посмотри в сторону мощного компонента TRichView (http://www.trichview.ru), в одной из демок, если не ошибаюсь, подобная функциональность представлена.
Также здесь его неоднократно выкладывали (http://dumpz.ru/showthread.php?t=54851&highlight=trichview). v12.6.1 - это последний стабильный билд.
 
Last edited by a moderator:

demav

Member
Joined
Nov 20, 2018
Messages
301
Reaction score
53
Age
39
Полагаю, это можно реализовать и в обычном TEdit. Впишите в свойство Text нужную фразу. В событии OnEnter проверить на то, что текст изначальный. Если так - очистить.
В OnExit - проверка наоборот.
 

tah

Member
Joined
Jan 23, 2006
Messages
26
Reaction score
2
Location
Москва
С D2009 у Editoв появляется свойство TextHint.... в ранних версиях его нет, а у меня как раз старичек D7. Оно как раз то что мне надо, еслиб еще найти реализацию данного свойства в стороннем компоненте былоб совсем сдорово)

Еще как вариант копать в сторону EM_SETCUEBANNER Message
http://msdn.microsoft.com/en-us/library/bb761639(VS.85).aspx
но в winapi не селен
 

demav

Member
Joined
Nov 20, 2018
Messages
301
Reaction score
53
Age
39
С D2009 у Editoв появляется свойство TextHint....

И правда, классное свойство. Жаль, в DevExpress его нет - пользуюсь только этими контролами. Или и там есть?
 

zashiki2009

Member
Joined
Aug 25, 2009
Messages
21
Reaction score
16
Location
Люберцы
Жаль, в DevExpress его нет - пользуюсь только этими контролами. Или и там есть?

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

Баклан

Member
Joined
Jan 7, 2010
Messages
5
Reaction score
8
Возникла задача, а вместе с ней и потребность, в следующем компоненте

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

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

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

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

tah

Member
Joined
Jan 23, 2006
Messages
26
Reaction score
2
Location
Москва
с обычными контролами уже набралось несколько вариантов компонентов и решений, но возникают проблемы с data-aware компонентами и ренениями для них
 

Баклан

Member
Joined
Jan 7, 2010
Messages
5
Reaction score
8
с обычными контролами уже набралось несколько вариантов компонентов и решений, но возникают проблемы с data-aware компонентами и ренениями для них

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

tah

Member
Joined
Jan 23, 2006
Messages
26
Reaction score
2
Location
Москва
нужна самая малость....

это серый текст подсказки, который отображается в поле ввода только, когда оно пустое (используются поля ввода как связанные с набором данных 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 компонентах, а также многострочных.....

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

demav

Member
Joined
Nov 20, 2018
Messages
301
Reaction score
53
Age
39
У простых эдиторов (cxTextEdit, cxButtonEdit и др.) оно есть, а вот у эдиторов в панели инструментов (dxBarEdit, ...) почему-то нету...

Это какое свойство у cxTextEdit, например?
 

demav

Member
Joined
Nov 20, 2018
Messages
301
Reaction score
53
Age
39
Тоже, что и у простого TEdit - TextHint.
PS. Использую Builder 2010.

Да, точно, есть. Я проверял на TcxDBTextEdit - у DB контролов нет этого свойства.
 

teslyuk

Member
Joined
Dec 11, 2003
Messages
5
Reaction score
0
Age
54
Location
Moscow
Как это сделать со стандартными контролами:
Кидаем на форму TEdit и TButton (чтобы был 2-й какой-нибудь элемент). У TEdit в свойстве Hint пишем, например, "Введите имя пользователя"
Далее текст UNIT1.pas:
Code:
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.
 
Last edited by a moderator:

iamhooligun

Member
Joined
Feb 15, 2009
Messages
27
Reaction score
28
Age
42
У простых эдиторов (cxTextEdit, cxButtonEdit и др.) оно есть, а вот у эдиторов в панели инструментов (dxBarEdit, ...) почему-то нету...

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

инфа отсюда http://www.devexpress.com/Support/Center/p/B95674.aspx
 

zashiki2009

Member
Joined
Aug 25, 2009
Messages
21
Reaction score
16
Location
Люберцы
тулбарные компоненты у них напрямую наследуются из стандартных
Это тривиально. Только вот понять не могу причем здесь скины и поднятая тема???
 

ahcenne

New member
Joined
Mar 23, 2010
Messages
2
Reaction score
0
Age
47
Опиши подробнее что именно тебе нужно?
 
Top