
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.131.36.133] |
![]() |
|
Сообщ.
#1
,
|
|
|
Туплю сегодня по-черному... Накалякал себе компонентик следующего содержания
![]() ![]() unit DefEdit; interface uses SysUtils, Classes, Controls, StdCtrls, Graphics, Messages, JvStrUtils; type TDefEdit = class(TEdit) private FDefaultText: string; FColorDefaultText: TColor; FColorUserText: TColor; procedure SetDefText(aText: string); procedure SetDefColor(aColor: TColor); procedure Loaded(); override; procedure SetTextColor(); { Private declarations } protected { Protected declarations } public procedure CMEnter(var Message: TCMEnter); message CM_ENTER; procedure CMExit(var Message: TCMExit); message CM_EXIT; procedure CMChanged(var Message: TMessage); message CM_CHANGED; constructor Create(aOwner: TComponent); override; { Public declarations } published property DefaultText: string read FDefaultText write SetDefText; property ColorDefaultText: TColor read FColorDefaultText write SetDefColor; property ColorUserText: TColor read FColorUserText write FColorUserText; { Published declarations } end; procedure Register; implementation procedure Register; begin RegisterComponents('My', [TDefEdit]); end; { TDefEdit } procedure TDefEdit.CMChanged(var Message: TMessage); begin inherited; SetTextColor(); end; procedure TDefEdit.CMEnter(var Message: TCMEnter); begin if Text = DefaultText then Text := ''; inherited; end; procedure TDefEdit.CMExit(var Message: TCMExit); begin if IsEmptyStr(Text,[' ']) then Text := DefaultText; SetTextColor(); inherited; end; constructor TDefEdit.Create(aOwner: TComponent); begin inherited; ColorDefaultText := clSilver; ColorUserText := clBlack; end; procedure TDefEdit.Loaded; begin inherited; if IsEmptyStr(Text,[' ']) then DefaultText := 'Enter your text here'; end; procedure TDefEdit.SetDefColor(aColor: TColor); begin FColorDefaultText := aColor; Font.Color := aColor; SetTextColor(); end; procedure TDefEdit.SetDefText(aText: string); begin FDefaultText := aText; if IsEmptyStr(Text,[' ']) then Text := aText; end; procedure TDefEdit.SetTextColor; begin if Text = DefaultText then Font.Color := ColorDefaultText else Font.Color := ColorUserText; end; end. Основная задача его - выводить текст "по умолчанию" при пустом поле. Проблема же в том, что несмотря на строчку ![]() ![]() if Text = DefaultText then Font.Color := ColorDefaultText else Font.Color := ColorUserText; и несмотря на установленный цвет ColorDefaultText - clsilver ColorUserText = clRed и Font.Color = clgreen текст контрола черный во время его редактирования (когда печатаешь. Когда выходишь из контрола - цвет устанавливается как положено в соотвествии с ColorUserText)... И тут моя фантазия кончается. Добавлено Короче я точно идиот ![]() ![]() ![]() |