Форум: "Основная";
Текущий архив: 2002.11.14;
Скачать: [xml.tar.bz2];
ВнизКак поменять цвет для разных едитов одной строкой кода Найти похожие ветки
← →
{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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.008 c