Я делаю преобразование нескольких приложений Delphi 2005 в XE2, и они используют компонент, который больше не доступен, поэтому я написал свой собственный компонент для обработки основ, что обычно нормально, когда вы помещаете компонент в форму. Однако я столкнулся с проблемой при открытии формы VCL, содержащей этот компонент, свойства которого уже установлены в DFM.
Delphi 2005 DFM содержит что-то вроде этого:
object ExtendedGrid1: TExtendedGrid
Left = 32
Top = 16
Width = 577
Height = 257
TabOrder = 0
Columns.Columns = (
'OE6.02'
(
'Test1'
64
False
0
'clWindowText'
-11
'Tahoma'
0
8
False
False
False
False
0
1
0
0
0
1
0
'clWindowText'
-11
'Tahoma'
0
8
False
False
False
False
0
1
0
'test2'
64
False
0
'clWindowText'
-11
'Trebuchet MS'
0
8
True
True
False
False
0
1
0
0
0
1
0
'clWindowText'
-11
'Tahoma'
0
8
False
False
False
False
0
1
0
''
'0'))
RowHeights = (
19
19)
end
Несмотря на то, что у моего компонента есть свойство Columns, основанное на классе, унаследованном от TCollection, и я добавил свойство Columns в коллекцию, которая использует унаследованные элементы, я получаю эту ошибку, когда пытаюсь открыть форму в конструкторе:
Ошибка создания формы: Ошибка чтения MyGrid1.Columns.Columns: Property Columns не существует.
Если я создаю новую копию своего компонента, а затем настраиваю столбцы, я вижу в DFM что-то совершенно другое:
Columns = <
item
Title = 'Test1'
Width = 64
Editable = False
HeaderClipStyle = csClip
HeaderFont.Charset = DEFAULT_CHARSET
HeaderFont.Color = clWindowText
HeaderFont.Height = -11
HeaderFont.Name = 'Tahoma'
HeaderFont.Style = []
HeaderHAlign = haRight
HeaderInnerBevel = bvNone
HeaderOuterBevel = bvNone
HeaderBorderWidth = 0
HeaderBevelWidth = 0
ContentsClipStyle = csClip
ContentsFont.Charset = DEFAULT_CHARSET
ContentsFont.Color = clWindowText
ContentsFont.Height = -11
ContentsFont.Name = 'Tahoma'
ContentsFont.Style = []
ComboFilled = False
ComboEditable = False
end
item
Title = 'test2'
Width = 64
Editable = False
HeaderClipStyle = csClip
HeaderFont.Charset = DEFAULT_CHARSET
HeaderFont.Color = clWindowText
HeaderFont.Height = -11
HeaderFont.Name = 'Trebuchet MS'
HeaderFont.Style = []
HeaderInnerBevel = bvNone
HeaderOuterBevel = bvNone
HeaderBorderWidth = 0
HeaderBevelWidth = 0
ContentsClipStyle = csClip
ContentsFont.Charset = DEFAULT_CHARSET
ContentsFont.Color = clWindowText
ContentsFont.Height = -11
ContentsFont.Name = 'Tahoma'
ContentsFont.Style = []
ComboFilled = False
ComboEditable = False
end
end>
Может ли кто-нибудь указать мне на некоторые статьи или пояснения, которые позволят мне написать свой собственный компонент, чтобы он мог работать со старыми DFM Delphi 2005? Спасибо.