Свой компонент TEdit, Как из нового свойства Переместить значение в Text

ThinkingPhantom
Дата: 13.05.2011 13:31:10
Создал в едите новое свойство, по задумке в его вписывается что-то вроде 'Введите номер...' (В Инспекторе), оно отображается в Едите, при фокусировке, оно исчезает, проблема в том что не получается через модуль компонента это сделать, побывал через Create, но не то. Какой метод отвечает за транслит текста? Или Какой метод выполняется при загрузке программы?
Мимопроходящий
Дата: 13.05.2011 13:32:36

Hello, ThinkingPhantom!
You wrote on 13 мая 2011 г. 10:31:10:

ThinkingPhantom
проблема в том что не получается через модуль
компонента это сделать
я никуя не понял...
что именно не получается?

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.4

CrazyMihey
Дата: 13.05.2011 13:38:54
При "загрузке Программы" выполняется секция Initialization, но в данном случае (насколько Я тоже не понял :) ) речь идёт об экземпляре Объекта. Новые Поля Потомка Класса надо инициализировать в Его Конструкторе (который Create, его придётся описать), перед этим вызвав из него Конструктор Предка (Inherited).
А при чём тут "транслит" для Меня остаётся загадкой... :)
Shuraken
Дата: 13.05.2011 16:09:28
Я бы посоветовал обрабатывать свойства OnEnter OnExit:
procedure MyEditOnEnter(Sender: TObject);
begin
  if Text = 'Введите номер...' then
    Text := '';
end;

procedure MyEditOnExit(Sender: TObject);
begin
  if Trim(Text) = '' then
    Text := 'Введите номер...'
end;
а в конструкторе задать свойство Text, и присвоить обработчики компоненту.
a_titeev
Дата: 13.05.2011 16:19:56
ThinkingPhantom,

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

...
protected
    procedure PaintWindow(DC: HDC); override;
...

procedure TDCustomEdit.PaintWindow(DC: HDC);
...
begin
  ...
  inherited;

  if (not FAllowEmpty) and GetIsEmpty and Enabled then
  begin
    BtnRect := GetInputRect;
    pen := CreatePen(PS_DOT, 1, RGB(255, 0, 0));
    penOld := SelectObject(DC, pen);
    MoveToEx(DC, BtnRect.Left + 3, BtnRect.Bottom - 4, nil);
    LineTo(DC, BtnRect.Right - 4, BtnRect.Bottom - 4);
    SelectObject(DC, penOld);
    DeleteObject(pen);
  end;
end;
a_titeev
Дата: 13.05.2011 16:20:58
ес-но, AllowEmpty и GetIsEmpty это я тоже до этого добавлял...
ThinkingPhantom
Дата: 13.05.2011 23:07:27
Так а как этим пользоваться, че то я ни бум-бум.
ThinkingPhantom
Дата: 14.05.2011 23:50:45
Вот Смотрите, получилось, так:

Создал свойство: Тип Строка, CaptionText;
Размещаю на форме мой едит, в инспекторе ввожу "Введите Номер...";
Теперь нужно, что бы при старте программы, значение из этого свойство попало в Text, пробывал через Create, но не подходит, поскольку во время выполнения Create-а, значение пусто.
В какой метод можно запихнуть

Text := CaptionText;  

именно в модуле компонентов. ))Надеюсь понятно.
DimaBr
Дата: 15.05.2011 01:41:48
Loaded
ThinkingPhantom
Дата: 15.05.2011 17:13:02
Чувак ты супер!!!

Все работает идеально. Именно Loaded, выполняется во время полной загрузки компонента.

... 
 public
    procedure Loaded; override;
...
procedure TdrtEdit.Loaded();
begin
  Text := CaptionText;
end;