Главная страница
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.013 c
6-37231
PKT
2002-11-11 10:36
2003.01.13
Трехуровневое приложение. Очень простое


14-37337
AL2002
2002-12-20 10:15
2003.01.13
Какая прога...


3-36983
Paul777
2002-11-30 15:34
2003.01.13
Пару вопросов по сохранению информации из DataSet...


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


3-36935
Anics
2002-12-18 06:27
2003.01.13
Уважаемые знатоки, подскажите кто знает как решить такую задачу