Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.14;
Скачать: CL | DM;

Вниз

Как поменять цвет для разных едитов одной строкой кода   Найти похожие ветки 

 
{bas}   (2002-11-04 14:27) [0]

В обработчике OnEnter для разных элементов ввода(TDBEdit, TDBLookUpCombo and so on) я пишу так
(Sender as TWinControl).Color := clBlack; - компилятор ругается и говорит что это свойство не определено, хотя TDBEdit и другие его наследуют у TWinControl.
Если я пишу так:
(Sender as TDBEdit).Color := clBlack; - то все ок

В чем тут грабли????????????????


 
Anatoly Podgoretsky ©   (2002-11-04 14:36) [1]

Оно Protected


 
Skier ©   (2002-11-04 14:40) [2]

>{bas}
св-во Color объявлено в классе TControl как protected.

Попробуй так :


type
THackControl = class(TControl);

//.............
begin
//.............
THackControl(Sender).Color := clBlack;
//.............
end;


 
{bas}   (2002-11-04 15:01) [3]

я сделал так
type
THackControl = class(TControl)
public
property Color;
end;

//.............
begin
//.............
THackControl(Sender).Color := clBlack;
//.............
end;

Это правильно??


 
Skier ©   (2002-11-04 15:02) [4]

>{bas}

> Это правильно??

Вполне...И что ?


 
{bas}   (2002-11-04 15:05) [5]

>>Skier
не просто после твой подсказки сделал решил спросить правильно или надо как то по другому делать.


 
Skier ©   (2002-11-04 15:07) [6]

>{bas}
Да нет, всё нормально.
Таким приёмом частенько пользуются...


 
Anatoly Podgoretsky ©   (2002-11-04 15:10) [7]

{bas} (04.11.02 15:01)
За исключение, что

public
property Color;
end;

лишнее


 
{bas}   (2002-11-04 15:15) [8]

>> Anatoly Podgoretsky © (04.11.02 15:10)
без

public
property Color;
end;

компилятор ругается


 
Skier ©   (2002-11-04 15:20) [9]

>{bas}

> компилятор ругается


Как присваиваешь цвет ?
Покажи...


 
{bas}   (2002-11-04 15:25) [10]

>>Skier © (04.11.02 15:20)

В одном модуле обявляю так:
type
THackControl = class(TControl)
public
property Color;
end;

При таком обявлении выдает ошибку что не определено свойство:
THackControl = class(TControl)
end;

а в другом использую:
procedure TForm1.Edit1Enter(Sender: TObject);
begin
THackControl(Sender).Color := clBlack;
end;


 
Skier ©   (2002-11-04 15:31) [11]

>{bas}
В том же модуле где пишешь THackControl(Sender).Color := clBlack; объяви класс THackControl = class(TControl) end;


 
{bas}   (2002-11-04 15:39) [12]

>>Skier
Я хочу для многих модулей (около 10) использовать этот прием, и что мне в каждом объявлять - я объявил в общем.
А что правильнее в каждом объявлять ??


 
Anatoly Podgoretsky ©   (2002-11-04 15:45) [13]

Тогда тебе надо создать нормального наследника и размесить его на палитре компонентов


 
Skier ©   (2002-11-04 15:51) [14]

>{bas}
Или см. Anatoly Podgoretsky © (04.11.02 15:45)
Или можно так в одном модуле (например ColorChange.pas) пишешь

procedure ChangeColor(AControl: TControl; const
AColor : TColor );

implementation

type

THackControl = class(TControl);


procedure ChangeColor(AControl: TControl; const
AColor : TColor );
begin
if AControl <> nil then
THackControl(AControl).Color := AColor;
end;

И потом только говоришь uses ColorChange.pas и
вызываешь ChangeColor(...)


 
{bas}   (2002-11-04 15:58) [15]

спасибо Skier & Anatoly Podgoretsky



Страницы: 1 вся ветка

Текущий архив: 2002.11.14;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.013 c
3-45765
SWD
2002-10-25 14:33
2002.11.14
Кнопки в DBGrid


1-45797
Lex
2002-11-04 21:27
2002.11.14
Как понять, что


7-46171
Вадим Литвиненко
2002-09-12 22:44
2002.11.14
включение tv-out на видеокарте


1-45833
d_oleg
2002-11-05 10:53
2002.11.14
используются ли XPStyles


3-45690
boa
2002-10-28 09:23
2002.11.14
Краткий справочник по MS SQL