На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Обязательно выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.

Этот раздел предназначен для вопросов, посвященных разработке компонентов, а также для тестирования собственных бесплатных компонентов с открытым исходным кодом.

Здесь запрещается:
1. Размещать ссылки на какие-либо коммерческие компоненты, реализующие требуемую функциональность.
2. Обсуждать и тестировать коммерческие компоненты или компоненты с закрытым кодом.
3. Давать ссылки на сайты с исходным кодом компонентов. Все тестируемые исходные коды должы быть размещены на сайте ИСХОДНИКИ.RU.
Модераторы: Rouse_, DimaBr
  
> Изменить цвет текста в TEdit
    Туплю сегодня по-черному... Накалякал себе компонентик следующего содержания
    ExpandedWrap disabled
      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.

    Основная задача его - выводить текст "по умолчанию" при пустом поле. Проблема же в том, что несмотря на строчку

    ExpandedWrap disabled
        if Text = DefaultText
          then Font.Color := ColorDefaultText
            else Font.Color := ColorUserText;


    и несмотря на установленный цвет
    ColorDefaultText - clsilver
    ColorUserText = clRed
    и Font.Color = clgreen
    текст контрола черный во время его редактирования (когда печатаешь. Когда выходишь из контрола - цвет устанавливается как положено в соотвествии с ColorUserText)... И тут моя фантазия кончается.

    Добавлено
    Короче я точно идиот :lol: Я сам менял этот цвет в событии OnChange. :wall: Поставьте мне ктонть минус в рейтинг за идиотизм :ph34r:
    Сообщение отредактировано: Rouse_ -
    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
    0 пользователей:


    Рейтинг@Mail.ru
    [ Script execution time: 0,0249 ]   [ 16 queries used ]   [ Generated: 3.03.25, 17:22 GMT ]