Гость
Статьи
Как сделать приведение …

Как сделать приведение класса

описываю функцию на лазарусе

function btn_anim(Sender:TObject, i:integer):boolean;
beign
if i = 1 then
begin
TPanel((Sender as TImage).Parent).Color:=clWhite;
end ELSE
begin
TPanel((Sender as TImage).Parent).Color:=clWhite;
end;
end;

как сделать так чтобы не приводить сендер к классу т имейдж, потому что он может быть и лейбл и панел, ну то есть чтобы он автоматически определял класс, класс TComponent не обладает свойством парент и TObject тоже помогите плиз #программирование

9 ответов
Последний — Перейти
Гость
#2

Вы уверены , что на том форуме пишете?

Сказка
#3

)) представила невольно привидение целого класса... Не дай бог)) хотя к концу учебного года многим учителям ага, мерещится уже.

#4
Гость

Вы уверены , что на том форуме пишете?

ну я в ответах мейл ру спрашивал они ответили что надо голосовать за пунита ;_;

Лапусик
#5
Гость

Вы уверены , что на том форуме пишете?

😆

#6
Сказка

)) представила невольно привидение целого класса... Не дай бог)) хотя к концу учебного года многим учителям ага, мерещится уже.

ну вообще да и это тоже '_'

Лапусик
#7
Сказка

)) представила невольно привидение целого класса... Не дай бог)) хотя к концу учебного года многим учителям ага, мерещится уже.

🤣

#8

Через оператор is ты можешь проверить является ли Sender экземпляром указанного класса или его потомком. Sender is TImage - истина, если это Image и дальше перебираешь свои варианты

#9
Чайлдфри

Через оператор is ты можешь проверить является ли Sender экземпляром указанного класса или его потомком. Sender is TImage - истина, если это Image и дальше перебираешь свои варианты

дык я то хочу как раз без этого чтобы код в одну строчку)

if Sender.ClassName = 'TImage' then
begin
TPanel((Sender as TImage).Parent).ParentBackground:=true;
end;
if Sender.ClassName = 'TPanel' then
begin
TPanel(Sender).ParentBackground:=true;
end;
if Sender.ClassName = 'TLabel' then
begin
TPanel((Sender as TLabel).Parent).ParentBackground:=true;
end;

Форум: Дом
Всего: 23 382 темы
Новые темы за все время: 21 260 тем
Популярные темы за все время: 12 076 тем