Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2007.03.11;
Скачать: [xml.tar.bz2];

Вниз

Подскажите как работает нижепривелённый код ил TNTLib   Найти похожие ветки 

 
MegaVolt ©   (2007-01-17 12:43) [0]

Модуль TntComCtrls

Заче нужно следующее описание хитрого класса?
Поля обозначенные как Fxxx нигде не вызываются
Вызов этого класса применяется в одном месте при создании нового TTntListView.

1. Почему нельзя было обойтись без этого класса?
2. Поля к которым никто не обращается нужны для организации смещения FListColumns аналогичного нашему классу?


 THackCustomListView = class(TCustomMultiSelectListControl)
 protected
   FxxxCanvas: TCanvas;
   FxxxBorderStyle: TBorderStyle;
   FxxxViewStyle: TViewStyle;
   FxxxReadOnly: Boolean;
   FxxxLargeImages: TCustomImageList;
   FxxxSmallImages: TCustomImageList;
   FxxxStateImages: TCustomImageList;
   FxxxDragImage: TDragImageList;
   FxxxMultiSelect: Boolean;
   FxxxSortType: TSortType;
   FxxxColumnClick: Boolean;
   FxxxShowColumnHeaders: Boolean;
   FxxxListItems: TListItems{TNT-ALLOW TListItems};
   FxxxClicked: Boolean;
   FxxxRClicked: Boolean;
   FxxxIconOptions: TIconOptions;
   FxxxHideSelection: Boolean;
   FListColumns: TListColumns{TNT-ALLOW TListColumns};
 end;



constructor TTntCustomListView.Create(AOwner: TComponent);
begin
 inherited;
 ...
 FreeAndNil(THackCustomListView(Self).FListColumns);
 THackCustomListView(Self).FListColumns := TTntListColumns.Create(Self);
end;


 
tesseract ©   (2007-01-17 12:50) [1]


> 2. Поля к которым никто не обращается нужны для организации
> смещения FListColumns аналогичного нашему классу?


Возможно им просто зачем-то повышаеться область видимости.


 
MegaVolt ©   (2007-01-17 13:10) [2]

>Возможно им просто зачем-то повышаеться область видимости.

К этим полям нет обращений вообще!!! Т.е. они написаны но нигде не исспользуются.


 
evvcom ©   (2007-01-17 14:40) [3]

> [0] MegaVolt ©   (17.01.07 12:43)

1. Можно, но автор выбрал этот путь.
2. Скорее всего да.

Я к таким трюкам прибегаю крайне редко и немного в другом виде. Например, скорее всего в TCustomMultiSelectListControl есть
property HideSelection: Boolean read FxxxHideSelection [write FxxxHideSelection];
тогда
type
 THackRec = record
   FxxxHideSelection: Boolean;
   FListColumns: TListColumns{TNT-ALLOW TListColumns};
 end;
 PHackRec = ^THackRec;
...
 PHackRec(@HideSelection)^.FListColumns.Free;

Но такие вещи лучше не вытворять, а если уж, то попытаться как-то себя обезопасить. Если уверен, что другую версию этих компонент использовать не будешь, то можно и так оставить, если же это возможно, то сделать {$INCLUDE <TNTVersion>.inc} и {$IFDEF <нужная версия>}, то все ок, иначе какую-нить бяку или raise Exception.

Кстати, FreeAndNil там по идее тоже нафиг не нужен. Какой смысл присваивать nil и следом же новый объект?



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

Форум: "Основная";
Текущий архив: 2007.03.11;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.043 c
2-1171790032
VadimSpb
2007-02-18 12:13
2007.03.11
Создание текстового файла в ASCII


15-1171367667
Qdesnic
2007-02-13 14:54
2007.03.11
реляционная связь


1-1169191653
mess
2007-01-19 10:27
2007.03.11
WMQueryEndSession


15-1171402248
Сергей_.
2007-02-14 00:30
2007.03.11
Fortran 77


3-1166179693
Vlad Oshin
2006-12-15 13:48
2007.03.11
select from select как сделать правильно?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский