Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Классы


Алексей П ©   (2003-01-03 14:10:00) 

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

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


uw   (2003-01-04 11:16:00) [1]

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

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", то какой код он должен сгенерировать?


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

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


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

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


Lord Warlock   (2003-01-04 09:59:00) [4]

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


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

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


Lord Warlock   (2003-01-04 09:54:00) [6]

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


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

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


TTCustomDelphiMaster   (2003-01-03 14:13:00) [8]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо