Форум: "Основная";
Текущий архив: 2003.01.13;
Скачать: [xml.tar.bz2];
ВнизКлассы Найти похожие ветки
← →
Алексей П (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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c