C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Как отобразить текст как у закрытого компонента?
gvg
Отправлено: 23.08.2005, 12:06


Машинист паровоза

Группа: Участник
Сообщений: 222



Как отобразить текст как у закрытого компонента, скажем как у TLabel с Enabled = false ?
Guest
Отправлено: 23.08.2005, 12:17


Не зарегистрирован







Color и Font->Color
gvg
Отправлено: 23.08.2005, 12:28


Машинист паровоза

Группа: Участник
Сообщений: 222



Интересно, какими-же значениями?
Guest
Отправлено: 23.08.2005, 13:12


Не зарегистрирован







QUOTE

Интересно, какими-же значениями?

Теми, которые "в цвет"
У меня, например, так:
CODE

//---------------------------------------------------------------------------
// Навести красоту в редактируемых полях
//---------------------------------------------------------------------------

TColor WObjSetCanEditColor_IfEnabled  = clWhite;
TColor WObjSetCanEditColor_IfDisabled = clSilver;

//- — - — - — - — - — - — - — - — - — - — - — - — - — - — - — - — - — - — - -

PACKAGE void __fastcall WObjSetCanEditColors (TColor ifenabled, TColor ifdisabled)
{
WObjSetCanEditColor_IfEnabled = ifenabled;
WObjSetCanEditColor_IfDisabled = ifdisabled;
}

//---------------------------------------------------------------------------

PACKAGE void __fastcall WObjSetCanEdit (TEdit *obj, bool isena)
{
if (!obj) return;
obj->ReadOnly = !isena;
obj->Color  =  obj->ReadOnly? WObjSetCanEditColor_IfDisabled : WObjSetCanEditColor_IfEnabled;
obj->TabStop = !obj->ReadOnly;
}

//---------------------------------------------------------------------------

PACKAGE void __fastcall WObjSetCanEdit (TMaskEdit *obj, bool isena)
{
if (!obj) return;
obj->ReadOnly = !isena;
obj->Color  =  obj->ReadOnly? WObjSetCanEditColor_IfDisabled : WObjSetCanEditColor_IfEnabled;
obj->TabStop = !obj->ReadOnly;
}

//---------------------------------------------------------------------------

и т.д...............

gvg
Отправлено: 23.08.2005, 14:19


Машинист паровоза

Группа: Участник
Сообщений: 222



Нее.. Это и ежу понятно. Как отобразить именно в том виде (3D). Была мысль вывести текст сначала clBtnShadow, затем со сдвигом в пиксел вверх и влево цветом clBtnHighlight. Но TextOut и TextRect затирают предыдущий вывод. Transparent-а у Canvas-а нет... Вот и подумал, может есть какая API функция...
gvg
Отправлено: 23.08.2005, 14:37


Машинист паровоза

Группа: Участник
Сообщений: 222



Нашел!!! Может кому сгодится:

CODE
Fb->Canvas->Font->Color = clBtnHighlight;
Fb->Canvas->TextOut(Fw1 + 3, 2 + i * FRowHeight, GetItemValue(i));
SetBkMode( Fb->Canvas->Handle, TRANSPARENT );
Fb->Canvas->Font->Color = clBtnShadow;
Fb->Canvas->TextOut(Fw1 + 2, 1 + i * FRowHeight, GetItemValue(i));
SetBkMode( Fb->Canvas->Handle, OPAQUE );


Отредактировано Георгий — 23/08/2005, 22:14
Admin
Отправлено: 23.08.2005, 21:04


Владимир

Группа: Администратор
Сообщений: 1190



А почему бы не происвоить компоненту это Enabled = false ?
gvg
Отправлено: 24.08.2005, 07:59


Машинист паровоза

Группа: Участник
Сообщений: 222



Потому-что о компоненте здесь говорилось только в качестве примера. Я спрашивал об отображении символов таким образом. Хотя мне это нужно действительно для своего компонента, текст нужно отображать на части PaintBox-а (см. ниже о компоненте типа ObjectInspector, я его таки доделал, теперь марафет навожу) smile.gif

Вернуться в Вопросы программирования в C++Builder