![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TYPE CAST [D7, WinXP]
чуть помедленнее © (2007-02-10 22:27:00)как запретить проверку TypeCast в таком коде:
if (OPList[i]^.Name = 'AltBtnGlyph')?
then ((GetClass(Output.ClassName)).AltBtnGlyph).Assign((GetClass(Input.ClassName)).Al tBtnGlyph)
Loginov Dmitry (2007-02-13 07:43:00) [1]Объявлять TMyControl не обязательно. Достаточно взять любой используемый класс, в котором свойство Font открыто, например:
TEdit(Output).Font := TEdit(Input).Font;
Минус здесь то, что затруднится сопровождение подобного кода.
Германн (2007-02-13 00:47:00) [2]
> чуть помедленнее (12.02.07 22:23) [17]
>
> > [16] Германн © (12.02.07 22:10)
>
> заработало! спасибо, Германн!!
>
Пожалуйста. Рад, что мои скромные познания всё-таки иногда позволяют кому-нибудь помочь :)
Но в будущем старайся уже в сабже приводить достаточное количество информации. А то я в [12] и не сразу заметил, что Input, Output : TControl. :(
чуть помедленнее (2007-02-12 22:23:00) [3]> [16] Германн © (12.02.07 22:10)
заработало! спасибо, Германн!!
Германн (2007-02-12 22:10:00) [4]Попробуй тогда так
type
TMyControl = class(TControl);
...
TMyControl(Output).Font.Assign(TMyControl(Input).Font);
чуть помедленнее (2007-02-12 18:49:00) [5][Error] uEditForm.pas(251): Undeclared identifier: 'Font'
чуть помедленнее (2007-02-12 18:40:00) [6]не видит Delphi в TControl Font (
Германн (2007-02-12 18:35:00) [7]
> чуть помедленнее (12.02.07 18:18) [12]
Ну а почему бы не сделать так
Output.Font.Assign(Input.Font);?
чуть помедленнее (2007-02-12 18:18:00) [8]наверное, я действительно неправильно выразился и плохо обЪяснил в чем вопрос...
var Input, Output : TControl;//на самом деле они другого класса - допустим TEdit или TLabel, но всегда классы совпадают (TControl потому что property Font наследуется из него)
...
//прохожу по property`s в цикле (OPList, IPlist - лист из property для Output и Input), нахожу нужное - TFont
if (OPList[i]^.Name = 'Font')
then ((GetClass(Output.ClassName)).Font).Assign((GetClass(Input.ClassName)).Font)
//и пытаюсь безуспешно (( выполнить Assign
Германн (2007-02-12 01:36:00) [9]Автор сабжа изображает из себя агента 007, имхо :)
Вот только которого?
На мой скус, Шон Коннери - самый самый! :)
DrPass (2007-02-12 00:11:00) [10]
> блин ну не вариант это - не работает...
Работает, естественно. Ты просто чё-то не так делаешь :)
чуть помедленнее (2007-02-11 23:38:00) [11]> [7] DrPass © (11.02.07 12:59)
блин ну не вариант это - не работает...
Loginov Dmitry (2007-02-11 13:24:00) [12]Output.Font := Input.Font
Куда проще?
DrPass (2007-02-11 12:59:00) [13]
> чуть помедленнее (11.02.07 12:28) [6]
Ясно... убери GetClass вообще. И ClassName тоже нафиг убери. Заработает :)
чуть помедленнее (2007-02-11 12:28:00) [14]Да вобщем точно бред - некоторые property скрыты в базовом классе в секции protected - как пример Font в TControl. Мне нужно взять значение property Font из объекта Input и установить его в обект Output. И Input и Output одного класса, наследники TControl - property Font у них в секции published. Вот и получается что к TControl преобразовывать нет смысла - Font не видно из него, нужно тайпкастить к GetClass(Input.ClassName) - компилятор не пускает...
DrPass (2007-02-11 11:50:00) [15]...правда, я не знаю, поддерживает ли Delphi в качестве статических полей/свойств объекты. Скорее всего, нет :)
DrPass (2007-02-11 11:46:00) [16]
> что и GetClass скорее всего тут не нужен
Если Output и Input - это записи, а не классы, то нужен. В противном случае мой телепатор тоже
> никак не докатывает, что автор хочет сделать своим (мягко
> говоря бредовым) кодом?
Loginov Dmitry (2007-02-11 10:16:00) [17]А мой погорел и вовсе. Ну никак не докатывает, что автор хочет сделать своим (мягко говоря бредовым) кодом?
Германн (2007-02-11 01:20:00) [18]А мой телепатор подсказывает, что и GetClass скорее всего тут не нужен.
DrPass (2007-02-11 00:49:00) [19]
>
> чуть помедленнее
Как подсказывает мой телепатор,
> как запретить проверку TypeCast в таком коде
... на самом деле означает "как отключить проверку соответствия типов в таком коде"
Как и в любом другом коде - никак, естессно. Явно приведи результат, возвращаемый GetClass, к нужному тебе типу