Главная страница
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.5 MB
Время: 0.02 c
1-45901
Shaman2002
2002-11-05 18:41
2002.11.14
Как нарисовать дугу?


1-45886
Брат
2002-11-05 17:04
2002.11.14
Как остановить выполнение программы на определенный промежуток...


4-46213
Alexander
2002-10-04 11:16
2002.11.14
Хочу выбрать компьютер, но приведённый код выдаёт пустую строку!


3-45792
Ditrix
2002-10-25 16:52
2002.11.14
Неуправляемый DBGrid


14-46054
Zubr
2002-10-28 16:21
2002.11.14
Помогите найти два реферата