Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.011 c
14-46081
Keplin Sergey
2002-10-20 20:39
2002.11.14
Профессиональное програмирование...


1-45921
¤NoNaMe¤
2002-11-04 00:39
2002.11.14
Darg&Drop текста ?


3-45692
Cossys
2002-10-17 16:11
2002.11.14
TTable.Locate по двум полям???


1-45976
Dennis S
2002-11-04 14:38
2002.11.14
работа с диалогом Find


14-46073
TTCustomDelphiMaster
2002-10-25 16:35
2002.11.14
Ну вот опять День Рожденья




   Наверх