Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.13;
Скачать: CL | DM;

Вниз

Классы   Найти похожие ветки 

 
Алексей П   (2003-01-03 14:10) [0]

Подскажите, как сделать код покороче?

if (hWinControl is TrdQuickRep) then
vleProperties.Values[PropName]:=(hWinControl as TrdQuickRep).Name;
if (hWinControl is TrdQRBand) then
vleProperties.Values[PropName]:=(hWinControl as TrdQRBand).Name;


 
TTCustomDelphiMaster ©   (2003-01-03 14:13) [1]

На 4 символа короче
vleProperties.Values[PropName]:=TrdQuickRep(hWinControl).Name;


 
Алексей П   (2003-01-04 09:50) [2]

To TTCustomDelphiMaster © :-)
Я имею в виду обьединение присвоений такого рода (Экземпляры разных классов имеют некоторые однотипные свойства) за один присест.


 
Lord Warlock ©   (2003-01-04 09:54) [3]

Выясни общего предка этих TrdQuickRep и TrdQRBand, где еще есть Name, хотя по логике это TComponent


 
Алексей П   (2003-01-04 09:57) [4]

ну, с Name Еще такой вариант пройдет, а как быть со свойствами типа TDataSet, Caption и т.д. Которые присутствуют только в последнем классе?


 
Lord Warlock ©   (2003-01-04 09:59) [5]

Тут ничего не поделаешь, нужно делать как ты написал в начале


 
Юрий Зотов ©   (2003-01-04 10:05) [6]

Для published-свойств - RTTI. Позволяет выяснить, если у произвольного объекта свойство с заданным именем, получить или изменить его значение и т.д. См. модуль TypInfo.


 
Алексей П   (2003-01-04 10:05) [7]

Жаль.
А неужели нельзя после "as" переменную использовать, или директиву компилятору указать, чтобы этот момент пропускал, а то я то ведь знаю, что во всех экземплярах это свойство есть, а компилятор не доверяет.


 
uw ©   (2003-01-04 11:16) [8]

Переменную использовать можно, только в твоем случае это вряд ли что-то даст. Но иногда вещь удобная.

procedure Proc(wc: TControl);
type
TCC = class of TControl;
var
cc: TCC;
n: String;
begin
cc := TWinControl;
n := (wc as cc).Name;
end;

Дело не в том, что компилятор не доверяет, а в том, что ".Name" говорит компилятору, чтобы он обратился к полю или вызвал метод доступа к полю и т.д. Если мы напишем ".abcd", то какой код он должен сгенерировать?



Страницы: 1 вся ветка

Текущий архив: 2003.01.13;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.016 c
1-37031
delta
2003-01-02 14:15
2003.01.13
Конвертация типов


4-37459
esVer
2002-11-25 11:05
2003.01.13
TMainMenu + ownerdraw


7-37404
VladTen
2002-10-30 11:06
2003.01.13
помогите с TrayIcon


14-37387
maxim2
2002-12-25 13:15
2003.01.13
Кому нужен компонент для записи CD


8-37221
Blacker77
2002-09-21 19:02
2003.01.13
Опять долбаный MP3!