Главная страница
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
14-37364
Prooksius
2002-12-24 21:32
2003.01.13
Не могу поставить FIBPlus 4.77 под Delphi 7


3-36956
DiLLeR
2002-12-17 14:38
2003.01.13
Delphi6 + QReport проблема, может кто сталкивался ...


14-37363
eLVik
2002-12-23 16:17
2003.01.13
KOL


4-37476
Alex Bogdanov
2002-11-28 03:26
2003.01.13
WinExec


3-36925
alexey1917
2002-12-17 08:06
2003.01.13
commit автоматический