mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-12 22:59:28 +02:00
implemented TIElementName of link of RTTI controls for set elements
git-svn-id: trunk@6416 -
This commit is contained in:
parent
45f82e0f1e
commit
1c996f9973
@ -1,15 +1,15 @@
|
||||
object Form1: TForm1
|
||||
ActiveControl = TIEdit1
|
||||
Caption = 'RTTI Controls Example'
|
||||
ClientHeight = 357
|
||||
ClientWidth = 590
|
||||
ClientHeight = 392
|
||||
ClientWidth = 619
|
||||
PixelsPerInch = 90
|
||||
HorzScrollBar.Page = 591
|
||||
VertScrollBar.Page = 358
|
||||
Left = 291
|
||||
Height = 357
|
||||
Top = 163
|
||||
Width = 590
|
||||
HorzScrollBar.Page = 620
|
||||
VertScrollBar.Page = 393
|
||||
Left = 294
|
||||
Height = 392
|
||||
Top = 168
|
||||
Width = 619
|
||||
object TIEdit1: TTIEdit
|
||||
Link.TIObject = TICheckBox1
|
||||
Link.TIPropertyName = 'Caption'
|
||||
@ -30,9 +30,9 @@ object Form1: TForm1
|
||||
TabOrder = 1
|
||||
TabStop = True
|
||||
Left = 176
|
||||
Height = 20
|
||||
Height = 24
|
||||
Top = 136
|
||||
Width = 109
|
||||
Width = 98
|
||||
end
|
||||
object TIListBox_Color: TTIListBox
|
||||
BorderStyle = bsSingle
|
||||
@ -41,6 +41,7 @@ object Form1: TForm1
|
||||
Link.TIPropertyName = 'Color'
|
||||
TabOrder = 2
|
||||
TabStop = True
|
||||
TopIndex = -1
|
||||
Left = 11
|
||||
Height = 70
|
||||
Top = 200
|
||||
@ -103,9 +104,9 @@ object Form1: TForm1
|
||||
Tabstop = True
|
||||
TIObject = StaticText4
|
||||
ValueFont.Color = clMaroon
|
||||
Left = 312
|
||||
Left = 328
|
||||
Height = 225
|
||||
Top = 119
|
||||
Top = 144
|
||||
Width = 242
|
||||
end
|
||||
object Label1: TLabel
|
||||
@ -116,4 +117,18 @@ object Form1: TForm1
|
||||
Top = 9
|
||||
Width = 286
|
||||
end
|
||||
object TICheckBox2: TTICheckBox
|
||||
AllowGrayed = True
|
||||
AutoSize = True
|
||||
Caption = 'TICheckBox2 for set element TIPropertyGrid1.Anchors.akRight'
|
||||
Link.TIObject = TIPropertyGrid1
|
||||
Link.TIPropertyName = 'Anchors'
|
||||
Link.TIElementName = 'akRight'
|
||||
TabOrder = 10
|
||||
TabStop = True
|
||||
Left = 240
|
||||
Height = 24
|
||||
Top = 104
|
||||
Width = 368
|
||||
end
|
||||
end
|
||||
|
@ -2,37 +2,42 @@
|
||||
|
||||
LazarusResources.Add('TForm1','FORMDATA',[
|
||||
'TPF0'#6'TForm1'#5'Form1'#13'ActiveControl'#7#7'TIEdit1'#7'Caption'#6#21'RTTI'
|
||||
+' Controls Example'#12'ClientHeight'#3'e'#1#11'ClientWidth'#3'N'#2#13'Pixels'
|
||||
+'PerInch'#2'Z'#18'HorzScrollBar.Page'#3'O'#2#18'VertScrollBar.Page'#3'f'#1#4
|
||||
+'Left'#3'#'#1#6'Height'#3'e'#1#3'Top'#3#163#0#5'Width'#3'N'#2#0#7'TTIEdit'#7
|
||||
+'TIEdit1'#13'Link.TIObject'#7#11'TICheckBox1'#19'Link.TIPropertyName'#6#7'Ca'
|
||||
+'ption'#7'TabStop'#9#8'TabOrder'#2#0#4'Left'#2#8#6'Height'#2#23#3'Top'#3#136
|
||||
+#0#5'Width'#3#144#0#0#0#11'TTICheckBox'#11'TICheckBox1'#11'AllowGrayed'#9#8
|
||||
+'AutoSize'#9#7'Caption'#6#11'TICheckBox1'#13'Link.TIObject'#7#7'TIEdit1'#19
|
||||
+' Controls Example'#12'ClientHeight'#3#136#1#11'ClientWidth'#3'k'#2#13'Pixel'
|
||||
+'sPerInch'#2'Z'#18'HorzScrollBar.Page'#3'l'#2#18'VertScrollBar.Page'#3#137#1
|
||||
+#4'Left'#3'&'#1#6'Height'#3#136#1#3'Top'#3#168#0#5'Width'#3'k'#2#0#7'TTIEdit'
|
||||
+#7'TIEdit1'#13'Link.TIObject'#7#11'TICheckBox1'#19'Link.TIPropertyName'#6#7
|
||||
+'Caption'#7'TabStop'#9#8'TabOrder'#2#0#4'Left'#2#8#6'Height'#2#23#3'Top'#3
|
||||
+#136#0#5'Width'#3#144#0#0#0#11'TTICheckBox'#11'TICheckBox1'#11'AllowGrayed'#9
|
||||
+#8'AutoSize'#9#7'Caption'#6#11'TICheckBox1'#13'Link.TIObject'#7#7'TIEdit1'#19
|
||||
+'Link.TIPropertyName'#6#7'Visible'#5'State'#7#9'cbChecked'#8'TabOrder'#2#1#7
|
||||
+'TabStop'#9#4'Left'#3#176#0#6'Height'#2#20#3'Top'#3#136#0#5'Width'#2'm'#0#0
|
||||
+'TabStop'#9#4'Left'#3#176#0#6'Height'#2#24#3'Top'#3#136#0#5'Width'#2'b'#0#0
|
||||
+#10'TTIListBox'#15'TIListBox_Color'#11'BorderStyle'#7#8'bsSingle'#16'ClickOn'
|
||||
+'SelChange'#8#13'Link.TIObject'#7#11'StaticText1'#19'Link.TIPropertyName'#6#5
|
||||
+'Color'#8'TabOrder'#2#2#7'TabStop'#9#4'Left'#2#11#6'Height'#2'F'#3'Top'#3#200
|
||||
+#0#5'Width'#2'u'#0#0#11'TStaticText'#11'StaticText1'#7'Caption'#6'!Edit capt'
|
||||
+'ion of right TTICheckbox'#5'Color'#7#7'clOlive'#8'TabOrder'#2#3#7'TabStop'#9
|
||||
+#4'Left'#2#8#6'Height'#2#17#3'Top'#2'p'#5'Width'#3#193#0#0#0#11'TStaticText'
|
||||
+#11'StaticText2'#7'Caption'#6#31'Edit Color of above TStaticText'#11'ParentC'
|
||||
+'olor'#9#8'TabOrder'#2#4#7'TabStop'#9#4'Left'#2#11#6'Height'#2#17#3'Top'#3
|
||||
+#176#0#5'Width'#3#194#0#0#0#11'TTIComboBox'#18'TIComboBox_Enabled'#13'Link.T'
|
||||
+'IObject'#7#11'TICheckBox1'#19'Link.TIPropertyName'#6#7'Enabled'#9'MaxLength'
|
||||
+#2#0#8'TabOrder'#2#5#7'TabStop'#9#4'Left'#2#16#6'Height'#2#25#3'Top'#3'2'#1#5
|
||||
+'Width'#3#180#0#0#0#11'TStaticText'#11'StaticText3'#7'Caption'#6#25'Edit TTI'
|
||||
+'CheckBox1.Enabled'#11'ParentColor'#9#8'TabOrder'#2#6#7'TabStop'#9#4'Left'#2
|
||||
+#15#6'Height'#2#17#3'Top'#3#27#1#5'Width'#3#186#0#0#0#11'TStaticText'#11'Sta'
|
||||
+'ticText4'#7'Caption'#6'4Edit this TStaticText with the TTIPropertyGrid belo'
|
||||
+'w'#11'ParentColor'#9#8'TabOrder'#2#7#7'TabStop'#9#4'Left'#3'`'#1#6'Height'#2
|
||||
+'P'#3'Top'#2#16#5'Width'#3#145#0#0#0#15'TTIPropertyGrid'#15'TIPropertyGrid1'
|
||||
+#11'BorderStyle'#7#8'bsSingle'#22'DefaultValueFont.Color'#7#15'clActiveCapti'
|
||||
+'on'#7'Tabstop'#9#8'TIObject'#7#11'StaticText4'#15'ValueFont.Color'#7#8'clMa'
|
||||
+'roon'#4'Left'#3'8'#1#6'Height'#3#225#0#3'Top'#2'w'#5'Width'#3#242#0#0#0#6'T'
|
||||
+'Label'#6'Label1'#7'Caption'#6#156'This is a demonstration of a few RTTI Con'
|
||||
+'trols.'#10'The RTTI controls allows you to edit properties of objects.'#10
|
||||
+'The whole example requires not one line of code.'#8'WordWrap'#9#4'Left'#2#10
|
||||
+#6'Height'#2'W'#3'Top'#2#9#5'Width'#3#30#1#0#0#0
|
||||
+'Color'#8'TabOrder'#2#2#7'TabStop'#9#8'TopIndex'#2#255#4'Left'#2#11#6'Height'
|
||||
+#2'F'#3'Top'#3#200#0#5'Width'#2'u'#0#0#11'TStaticText'#11'StaticText1'#7'Cap'
|
||||
+'tion'#6'!Edit caption of right TTICheckbox'#5'Color'#7#7'clOlive'#8'TabOrde'
|
||||
+'r'#2#3#7'TabStop'#9#4'Left'#2#8#6'Height'#2#17#3'Top'#2'p'#5'Width'#3#193#0
|
||||
+#0#0#11'TStaticText'#11'StaticText2'#7'Caption'#6#31'Edit Color of above TSt'
|
||||
+'aticText'#11'ParentColor'#9#8'TabOrder'#2#4#7'TabStop'#9#4'Left'#2#11#6'Hei'
|
||||
+'ght'#2#17#3'Top'#3#176#0#5'Width'#3#194#0#0#0#11'TTIComboBox'#18'TIComboBox'
|
||||
+'_Enabled'#13'Link.TIObject'#7#11'TICheckBox1'#19'Link.TIPropertyName'#6#7'E'
|
||||
+'nabled'#9'MaxLength'#2#0#8'TabOrder'#2#5#7'TabStop'#9#4'Left'#2#16#6'Height'
|
||||
+#2#25#3'Top'#3'2'#1#5'Width'#3#180#0#0#0#11'TStaticText'#11'StaticText3'#7'C'
|
||||
+'aption'#6#25'Edit TTICheckBox1.Enabled'#11'ParentColor'#9#8'TabOrder'#2#6#7
|
||||
+'TabStop'#9#4'Left'#2#15#6'Height'#2#17#3'Top'#3#27#1#5'Width'#3#186#0#0#0#11
|
||||
+'TStaticText'#11'StaticText4'#7'Caption'#6'4Edit this TStaticText with the T'
|
||||
+'TIPropertyGrid below'#11'ParentColor'#9#8'TabOrder'#2#7#7'TabStop'#9#4'Left'
|
||||
+#3'`'#1#6'Height'#2'P'#3'Top'#2#16#5'Width'#3#145#0#0#0#15'TTIPropertyGrid'
|
||||
+#15'TIPropertyGrid1'#11'BorderStyle'#7#8'bsSingle'#22'DefaultValueFont.Color'
|
||||
+#7#15'clActiveCaption'#7'Tabstop'#9#8'TIObject'#7#11'StaticText4'#15'ValueFo'
|
||||
+'nt.Color'#7#8'clMaroon'#4'Left'#3'H'#1#6'Height'#3#225#0#3'Top'#3#144#0#5'W'
|
||||
+'idth'#3#242#0#0#0#6'TLabel'#6'Label1'#7'Caption'#6#156'This is a demonstrat'
|
||||
+'ion of a few RTTI Controls.'#10'The RTTI controls allows you to edit proper'
|
||||
+'ties of objects.'#10'The whole example requires not one line of code.'#8'Wo'
|
||||
+'rdWrap'#9#4'Left'#2#10#6'Height'#2'W'#3'Top'#2#9#5'Width'#3#30#1#0#0#11'TTI'
|
||||
+'CheckBox'#11'TICheckBox2'#11'AllowGrayed'#9#8'AutoSize'#9#7'Caption'#6';TIC'
|
||||
+'heckBox2 for set element TIPropertyGrid1.Anchors.akRight'#13'Link.TIObject'
|
||||
+#7#15'TIPropertyGrid1'#19'Link.TIPropertyName'#6#7'Anchors'#18'Link.TIElemen'
|
||||
+'tName'#6#7'akRight'#8'TabOrder'#2#10#7'TabStop'#9#4'Left'#3#240#0#6'Height'
|
||||
+#2#24#3'Top'#2'h'#5'Width'#3'p'#1#0#0#0
|
||||
]);
|
||||
|
@ -34,6 +34,7 @@ type
|
||||
StaticText3: TStaticText;
|
||||
StaticText4: TStaticText;
|
||||
TICheckBox1: TTICheckBox;
|
||||
TICheckBox2: TTICheckBox;
|
||||
TIComboBox_Enabled: TTIComboBox;
|
||||
TIEdit1: TTIEdit;
|
||||
TIListBox_Color: TTIListBox;
|
||||
|
@ -1,26 +1,26 @@
|
||||
object Form1: TForm1
|
||||
Caption = 'Form1'
|
||||
ClientHeight = 300
|
||||
ClientWidth = 400
|
||||
ClientHeight = 410
|
||||
ClientWidth = 350
|
||||
OnCreate = Form1Create
|
||||
OnDestroy = Form1Destroy
|
||||
PixelsPerInch = 90
|
||||
HorzScrollBar.Page = 401
|
||||
VertScrollBar.Page = 301
|
||||
HorzScrollBar.Page = 351
|
||||
VertScrollBar.Page = 411
|
||||
Left = 273
|
||||
Height = 300
|
||||
Height = 410
|
||||
Top = 181
|
||||
Width = 400
|
||||
Width = 350
|
||||
object GroupBox1: TGroupBox
|
||||
Caption = 'MyString'
|
||||
ClientHeight = 31
|
||||
ClientWidth = 331
|
||||
ClientWidth = 296
|
||||
ParentColor = True
|
||||
TabOrder = 0
|
||||
Left = 24
|
||||
Height = 48
|
||||
Top = 16
|
||||
Width = 335
|
||||
Width = 300
|
||||
object TIEdit1: TTIEdit
|
||||
TabStop = True
|
||||
TabOrder = 0
|
||||
@ -37,18 +37,18 @@ object Form1: TForm1
|
||||
Left = 25
|
||||
Height = 57
|
||||
Top = 72
|
||||
Width = 338
|
||||
Width = 300
|
||||
end
|
||||
object GroupBox2: TGroupBox
|
||||
Caption = 'MyRange'
|
||||
ClientHeight = 24
|
||||
ClientWidth = 335
|
||||
ClientWidth = 296
|
||||
ParentColor = True
|
||||
TabOrder = 2
|
||||
Left = 25
|
||||
Height = 41
|
||||
Top = 144
|
||||
Width = 339
|
||||
Width = 300
|
||||
object TITrackBar1: TTITrackBar
|
||||
ScalePos = trTop
|
||||
TabOrder = 0
|
||||
@ -66,6 +66,6 @@ object Form1: TForm1
|
||||
Left = 27
|
||||
Height = 87
|
||||
Top = 199
|
||||
Width = 338
|
||||
Width = 300
|
||||
end
|
||||
end
|
||||
|
@ -1,21 +1,21 @@
|
||||
{ This is an automatically generated lazarus resource file }
|
||||
|
||||
LazarusResources.Add('TForm1','FORMDATA',[
|
||||
'TPF0'#6'TForm1'#5'Form1'#7'Caption'#6#5'Form1'#12'ClientHeight'#3','#1#11'Cl'
|
||||
+'ientWidth'#3#144#1#8'OnCreate'#7#11'Form1Create'#9'OnDestroy'#7#12'Form1Des'
|
||||
+'troy'#13'PixelsPerInch'#2'Z'#18'HorzScrollBar.Page'#3#145#1#18'VertScrollBa'
|
||||
+'r.Page'#3'-'#1#4'Left'#3#17#1#6'Height'#3','#1#3'Top'#3#181#0#5'Width'#3#144
|
||||
'TPF0'#6'TForm1'#5'Form1'#7'Caption'#6#5'Form1'#12'ClientHeight'#3#154#1#11'C'
|
||||
+'lientWidth'#3'^'#1#8'OnCreate'#7#11'Form1Create'#9'OnDestroy'#7#12'Form1Des'
|
||||
+'troy'#13'PixelsPerInch'#2'Z'#18'HorzScrollBar.Page'#3'_'#1#18'VertScrollBar'
|
||||
+'.Page'#3#155#1#4'Left'#3#17#1#6'Height'#3#154#1#3'Top'#3#181#0#5'Width'#3'^'
|
||||
+#1#0#9'TGroupBox'#9'GroupBox1'#7'Caption'#6#8'MyString'#12'ClientHeight'#2#31
|
||||
+#11'ClientWidth'#3'K'#1#11'ParentColor'#9#8'TabOrder'#2#0#4'Left'#2#24#6'Hei'
|
||||
+'ght'#2'0'#3'Top'#2#16#5'Width'#3'O'#1#0#7'TTIEdit'#7'TIEdit1'#7'TabStop'#9#8
|
||||
+#11'ClientWidth'#3'('#1#11'ParentColor'#9#8'TabOrder'#2#0#4'Left'#2#24#6'Hei'
|
||||
+'ght'#2'0'#3'Top'#2#16#5'Width'#3','#1#0#7'TTIEdit'#7'TIEdit1'#7'TabStop'#9#8
|
||||
+'TabOrder'#2#0#4'Left'#2#23#6'Height'#2#23#3'Top'#2#1#5'Width'#3'#'#1#0#0#0
|
||||
+#13'TTIRadioGroup'#13'TIRadioGroup1'#7'Caption'#6#6'MyEnum'#7'Columns'#2#3#11
|
||||
+'ParentColor'#9#4'Left'#2#25#6'Height'#2'9'#3'Top'#2'H'#5'Width'#3'R'#1#0#0#9
|
||||
+'ParentColor'#9#4'Left'#2#25#6'Height'#2'9'#3'Top'#2'H'#5'Width'#3','#1#0#0#9
|
||||
+'TGroupBox'#9'GroupBox2'#7'Caption'#6#7'MyRange'#12'ClientHeight'#2#24#11'Cl'
|
||||
+'ientWidth'#3'O'#1#11'ParentColor'#9#8'TabOrder'#2#2#4'Left'#2#25#6'Height'#2
|
||||
+')'#3'Top'#3#144#0#5'Width'#3'S'#1#0#11'TTITrackBar'#11'TITrackBar1'#8'Scale'
|
||||
+'ientWidth'#3'('#1#11'ParentColor'#9#8'TabOrder'#2#2#4'Left'#2#25#6'Height'#2
|
||||
+')'#3'Top'#3#144#0#5'Width'#3','#1#0#11'TTITrackBar'#11'TITrackBar1'#8'Scale'
|
||||
+'Pos'#7#5'trTop'#8'TabOrder'#2#0#7'TabStop'#9#8'ScalePos'#7#5'trTop'#4'Left'
|
||||
+#2#15#6'Height'#2#20#3'Top'#2#1#5'Width'#3')'#1#0#0#0#5'TMemo'#5'Memo1'#10'S'
|
||||
+'crollBars'#7#10'ssAutoBoth'#8'TabOrder'#2#3#4'Left'#2#27#6'Height'#2'W'#3'T'
|
||||
+'op'#3#199#0#5'Width'#3'R'#1#0#0#0
|
||||
+'op'#3#199#0#5'Width'#3','#1#0#0#0
|
||||
]);
|
||||
|
@ -9,53 +9,121 @@
|
||||
<TargetFileExt Value=""/>
|
||||
<Title Value="exampleproject1"/>
|
||||
</General>
|
||||
<JumpHistory Count="11" HistoryIndex="10">
|
||||
<JumpHistory Count="28" HistoryIndex="27">
|
||||
<Position1>
|
||||
<Filename Value="example1.pas"/>
|
||||
<Caret Line="39" Column="25" TopLine="13"/>
|
||||
<Filename Value="/home/mattias/pascal/wichtig/lazarus/components/rtticontrols/rttictrls.pas"/>
|
||||
<Caret Line="174" Column="64" TopLine="162"/>
|
||||
</Position1>
|
||||
<Position2>
|
||||
<Filename Value="/home/mattias/pascal/wichtig/lazarus/components/rtticontrols/rttictrls.pas"/>
|
||||
<Caret Line="3130" Column="12" TopLine="3123"/>
|
||||
<Caret Line="124" Column="17" TopLine="102"/>
|
||||
</Position2>
|
||||
<Position3>
|
||||
<Filename Value="/home/mattias/pascal/wichtig/lazarus/components/rtticontrols/rttictrls.pas"/>
|
||||
<Caret Line="1511" Column="11" TopLine="1508"/>
|
||||
<Caret Line="3036" Column="14" TopLine="3020"/>
|
||||
</Position3>
|
||||
<Position4>
|
||||
<Filename Value="/home/mattias/pascal/wichtig/lazarus/components/rtticontrols/rttictrls.pas"/>
|
||||
<Caret Line="3129" Column="1" TopLine="3102"/>
|
||||
<Caret Line="2197" Column="1" TopLine="2194"/>
|
||||
</Position4>
|
||||
<Position5>
|
||||
<Filename Value="/home/mattias/pascal/wichtig/lazarus/components/rtticontrols/rttictrls.pas"/>
|
||||
<Caret Line="3130" Column="3" TopLine="3107"/>
|
||||
<Caret Line="668" Column="29" TopLine="661"/>
|
||||
</Position5>
|
||||
<Position6>
|
||||
<Filename Value="/home/mattias/pascal/wichtig/lazarus/components/rtticontrols/rttictrls.pas"/>
|
||||
<Caret Line="603" Column="15" TopLine="581"/>
|
||||
<Caret Line="2213" Column="15" TopLine="2194"/>
|
||||
</Position6>
|
||||
<Position7>
|
||||
<Filename Value="/home/mattias/pascal/wichtig/lazarus/components/rtticontrols/rttictrls.pas"/>
|
||||
<Caret Line="174" Column="64" TopLine="162"/>
|
||||
<Caret Line="2307" Column="21" TopLine="2289"/>
|
||||
</Position7>
|
||||
<Position8>
|
||||
<Filename Value="/home/mattias/pascal/wichtig/lazarus/components/rtticontrols/rttictrls.pas"/>
|
||||
<Caret Line="124" Column="17" TopLine="102"/>
|
||||
<Caret Line="736" Column="11" TopLine="709"/>
|
||||
</Position8>
|
||||
<Position9>
|
||||
<Filename Value="/home/mattias/pascal/wichtig/lazarus/components/rtticontrols/rttictrls.pas"/>
|
||||
<Caret Line="3036" Column="14" TopLine="3020"/>
|
||||
<Caret Line="1" Column="1" TopLine="1"/>
|
||||
</Position9>
|
||||
<Position10>
|
||||
<Filename Value="/home/mattias/pascal/wichtig/lazarus/components/rtticontrols/rttictrls.pas"/>
|
||||
<Caret Line="2197" Column="1" TopLine="2194"/>
|
||||
<Caret Line="329" Column="20" TopLine="307"/>
|
||||
</Position10>
|
||||
<Position11>
|
||||
<Filename Value="/home/mattias/pascal/wichtig/lazarus/components/rtticontrols/rttictrls.pas"/>
|
||||
<Caret Line="668" Column="29" TopLine="661"/>
|
||||
<Caret Line="385" Column="20" TopLine="363"/>
|
||||
</Position11>
|
||||
<Position12>
|
||||
<Filename Value="/home/mattias/pascal/wichtig/lazarus/components/rtticontrols/rttictrls.pas"/>
|
||||
<Caret Line="755" Column="20" TopLine="733"/>
|
||||
</Position12>
|
||||
<Position13>
|
||||
<Filename Value="/home/mattias/pascal/wichtig/lazarus/components/rtticontrols/rttictrls.pas"/>
|
||||
<Caret Line="861" Column="20" TopLine="839"/>
|
||||
</Position13>
|
||||
<Position14>
|
||||
<Filename Value="/home/mattias/pascal/wichtig/lazarus/components/rtticontrols/rttictrls.pas"/>
|
||||
<Caret Line="1065" Column="20" TopLine="1043"/>
|
||||
</Position14>
|
||||
<Position15>
|
||||
<Filename Value="/home/mattias/pascal/wichtig/lazarus/components/rtticontrols/rttictrls.pas"/>
|
||||
<Caret Line="1" Column="1" TopLine="1"/>
|
||||
</Position15>
|
||||
<Position16>
|
||||
<Filename Value="/home/mattias/pascal/wichtig/lazarus/components/rtticontrols/rttictrls.pas"/>
|
||||
<Caret Line="732" Column="13" TopLine="713"/>
|
||||
</Position16>
|
||||
<Position17>
|
||||
<Filename Value="/home/mattias/pascal/wichtig/lazarus/components/rtticontrols/rttictrls.pas"/>
|
||||
<Caret Line="3501" Column="1" TopLine="3471"/>
|
||||
</Position17>
|
||||
<Position18>
|
||||
<Filename Value="/home/mattias/pascal/wichtig/lazarus/components/rtticontrols/rttictrls.pas"/>
|
||||
<Caret Line="3502" Column="1" TopLine="3468"/>
|
||||
</Position18>
|
||||
<Position19>
|
||||
<Filename Value="/home/mattias/pascal/wichtig/lazarus/components/rtticontrols/rttictrls.pas"/>
|
||||
<Caret Line="3496" Column="14" TopLine="3466"/>
|
||||
</Position19>
|
||||
<Position20>
|
||||
<Filename Value="/home/mattias/pascal/wichtig/lazarus/components/rtticontrols/rttictrls.pas"/>
|
||||
<Caret Line="3511" Column="26" TopLine="3481"/>
|
||||
</Position20>
|
||||
<Position21>
|
||||
<Filename Value="/home/mattias/pascal/wichtig/lazarus/components/rtticontrols/rttictrls.pas"/>
|
||||
<Caret Line="3480" Column="32" TopLine="3471"/>
|
||||
</Position21>
|
||||
<Position22>
|
||||
<Filename Value="/home/mattias/pascal/wichtig/lazarus/components/rtticontrols/rttictrls.pas"/>
|
||||
<Caret Line="3502" Column="11" TopLine="3481"/>
|
||||
</Position22>
|
||||
<Position23>
|
||||
<Filename Value="/home/mattias/pascal/wichtig/lazarus/ideintf/propedits.pp"/>
|
||||
<Caret Line="3070" Column="65" TopLine="3064"/>
|
||||
</Position23>
|
||||
<Position24>
|
||||
<Filename Value="/home/mattias/pascal/wichtig/lazarus/components/rtticontrols/rttictrls.pas"/>
|
||||
<Caret Line="3446" Column="5" TopLine="3397"/>
|
||||
</Position24>
|
||||
<Position25>
|
||||
<Filename Value="/home/mattias/pascal/wichtig/lazarus/components/rtticontrols/rttictrls.pas"/>
|
||||
<Caret Line="3490" Column="14" TopLine="3489"/>
|
||||
</Position25>
|
||||
<Position26>
|
||||
<Filename Value="/home/mattias/pascal/wichtig/lazarus/components/rtticontrols/rttictrls.pas"/>
|
||||
<Caret Line="3528" Column="17" TopLine="3497"/>
|
||||
</Position26>
|
||||
<Position27>
|
||||
<Filename Value="/home/mattias/pascal/wichtig/lazarus/components/rtticontrols/rttictrls.pas"/>
|
||||
<Caret Line="3533" Column="1" TopLine="3511"/>
|
||||
</Position27>
|
||||
<Position28>
|
||||
<Filename Value="/home/mattias/pascal/wichtig/lazarus/components/rtticontrols/rttictrls.pas"/>
|
||||
<Caret Line="1676" Column="1" TopLine="1664"/>
|
||||
</Position28>
|
||||
</JumpHistory>
|
||||
<Units Count="6">
|
||||
<Units Count="7">
|
||||
<Unit0>
|
||||
<CursorPos X="10" Y="9"/>
|
||||
<Filename Value="exampleproject1.lpr"/>
|
||||
@ -65,23 +133,23 @@
|
||||
<UsageCount Value="30"/>
|
||||
</Unit0>
|
||||
<Unit1>
|
||||
<CursorPos X="25" Y="39"/>
|
||||
<CursorPos X="14" Y="40"/>
|
||||
<EditorIndex Value="0"/>
|
||||
<Filename Value="example1.pas"/>
|
||||
<ComponentName Value="Form1"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<Loaded Value="True"/>
|
||||
<ResourceFilename Value="example1.lrs"/>
|
||||
<TopLine Value="13"/>
|
||||
<TopLine Value="10"/>
|
||||
<UnitName Value="Example1"/>
|
||||
<UsageCount Value="30"/>
|
||||
</Unit1>
|
||||
<Unit2>
|
||||
<CursorPos X="1" Y="2197"/>
|
||||
<CursorPos X="1" Y="39"/>
|
||||
<EditorIndex Value="1"/>
|
||||
<Filename Value="/home/mattias/pascal/wichtig/lazarus/components/rtticontrols/rttictrls.pas"/>
|
||||
<Loaded Value="True"/>
|
||||
<TopLine Value="2194"/>
|
||||
<TopLine Value="1"/>
|
||||
<UnitName Value="RTTICtrls"/>
|
||||
<UsageCount Value="10"/>
|
||||
</Unit2>
|
||||
@ -104,6 +172,15 @@
|
||||
<TopLine Value="32"/>
|
||||
<UsageCount Value="10"/>
|
||||
</Unit5>
|
||||
<Unit6>
|
||||
<CursorPos X="54" Y="270"/>
|
||||
<EditorIndex Value="2"/>
|
||||
<Filename Value="/home/mattias/pascal/wichtig/lazarus/ideintf/propedits.pp"/>
|
||||
<Loaded Value="True"/>
|
||||
<TopLine Value="248"/>
|
||||
<UnitName Value="PropEdits"/>
|
||||
<UsageCount Value="10"/>
|
||||
</Unit6>
|
||||
</Units>
|
||||
<PublishOptions>
|
||||
<Version Value="2"/>
|
||||
|
@ -3,27 +3,25 @@
|
||||
<ProjectOptions>
|
||||
<Version Value="5"/>
|
||||
<General>
|
||||
<Flags>
|
||||
<SaveClosedFiles Value="False"/>
|
||||
<SaveOnlyProjectUnits Value="True"/>
|
||||
</Flags>
|
||||
<MainUnit Value="0"/>
|
||||
<ActiveEditorIndexAtStart Value="1"/>
|
||||
<IconPath Value="./"/>
|
||||
<TargetFileExt Value=""/>
|
||||
<Title Value="exampleproject2"/>
|
||||
</General>
|
||||
<JumpHistory Count="1" HistoryIndex="0">
|
||||
<Position1>
|
||||
<Filename Value="/home/mattias/pascal/wichtig/lazarus/helpmanager.pas"/>
|
||||
<Caret Line="120" Column="15" TopLine="106"/>
|
||||
</Position1>
|
||||
</JumpHistory>
|
||||
<Units Count="5">
|
||||
<Units Count="2">
|
||||
<Unit0>
|
||||
<Filename Value="exampleproject2.lpr"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="ExampleProject2"/>
|
||||
<UsageCount Value="30"/>
|
||||
<UsageCount Value="31"/>
|
||||
</Unit0>
|
||||
<Unit1>
|
||||
<CursorPos X="23" Y="46"/>
|
||||
<CursorPos X="12" Y="28"/>
|
||||
<EditorIndex Value="0"/>
|
||||
<Filename Value="example2.pas"/>
|
||||
<ComponentName Value="Form1"/>
|
||||
@ -32,31 +30,8 @@
|
||||
<ResourceFilename Value="example2.lrs"/>
|
||||
<TopLine Value="22"/>
|
||||
<UnitName Value="Example2"/>
|
||||
<UsageCount Value="30"/>
|
||||
<UsageCount Value="31"/>
|
||||
</Unit1>
|
||||
<Unit2>
|
||||
<CursorPos X="28" Y="47"/>
|
||||
<EditorIndex Value="1"/>
|
||||
<Filename Value="/home/mattias/pascal/wichtig/lazarus/helpmanager.pas"/>
|
||||
<Loaded Value="True"/>
|
||||
<TopLine Value="29"/>
|
||||
<UnitName Value="HelpManager"/>
|
||||
<UsageCount Value="15"/>
|
||||
</Unit2>
|
||||
<Unit3>
|
||||
<CursorPos X="20" Y="1803"/>
|
||||
<Filename Value="/home/mattias/pascal/wichtig/lazarus/lcl/controls.pp"/>
|
||||
<TopLine Value="1779"/>
|
||||
<UnitName Value="Controls"/>
|
||||
<UsageCount Value="9"/>
|
||||
</Unit3>
|
||||
<Unit4>
|
||||
<CursorPos X="13" Y="144"/>
|
||||
<Filename Value="/home/mattias/pascal/wichtig/lazarus/components/rtticontrols/rttictrls.pas"/>
|
||||
<TopLine Value="125"/>
|
||||
<UnitName Value="RTTICtrls"/>
|
||||
<UsageCount Value="10"/>
|
||||
</Unit4>
|
||||
</Units>
|
||||
<PublishOptions>
|
||||
<Version Value="2"/>
|
||||
|
@ -22,6 +22,8 @@
|
||||
|
||||
ToDo:
|
||||
- ploReadOnly
|
||||
- TTICheckBox with Enums (e.g. TTICheckBox.Checked = Enum property has the
|
||||
same value as TIElementName)
|
||||
}
|
||||
unit RTTICtrls;
|
||||
|
||||
@ -100,12 +102,14 @@ Type
|
||||
FOptions: TPropertyLinkOptions;
|
||||
FOwner: TComponent;
|
||||
FSaveEnabled: boolean;
|
||||
FTIElementName: string;
|
||||
FTIObject: TPersistent;
|
||||
FTIPropertyName: string;
|
||||
procedure SetCollectValues(const AValue: boolean);
|
||||
procedure SetEditor(const AValue: TPropertyEditor);
|
||||
procedure SetFilter(const AValue: TTypeKinds);
|
||||
procedure SetOptions(const NewOptions: TPropertyLinkOptions);
|
||||
procedure SetTIElementName(const AValue: string);
|
||||
procedure SetTIObject(const AValue: TPersistent);
|
||||
procedure SetTIPropertyName(const AValue: string);
|
||||
protected
|
||||
@ -126,6 +130,8 @@ Type
|
||||
procedure Assign(Source: TPersistent); override;
|
||||
procedure SetObjectAndProperty(NewPersistent: TPersistent;
|
||||
const NewPropertyName: string);
|
||||
procedure SetObjectAndProperty(NewPersistent: TPersistent;
|
||||
const NewPropertyName, NewElementName: string);
|
||||
procedure InvalidateEditor; virtual;
|
||||
procedure CreateEditor; virtual;
|
||||
procedure FetchValues; virtual;
|
||||
@ -176,6 +182,7 @@ Type
|
||||
property SaveEnabled: boolean read FSaveEnabled write FSaveEnabled;
|
||||
property TIObject: TPersistent read FTIObject write SetTIObject;
|
||||
property TIPropertyName: string read FTIPropertyName write SetTIPropertyName;
|
||||
property TIElementName: string read FTIElementName write SetTIElementName;
|
||||
end;
|
||||
|
||||
|
||||
@ -187,6 +194,7 @@ Type
|
||||
property Options;
|
||||
property TIObject;
|
||||
property TIPropertyName;
|
||||
property TIElementName;
|
||||
end;
|
||||
|
||||
|
||||
@ -198,6 +206,12 @@ Type
|
||||
end;
|
||||
|
||||
|
||||
{ TTIObjectPropertyEditor }
|
||||
|
||||
TTIObjectPropertyEditor = class(TPersistentPropertyEditor)
|
||||
end;
|
||||
|
||||
|
||||
{ TPropertyNamePropertyEditor
|
||||
Property editor for TCustomPropertyLink.TIPropertyName, showing
|
||||
all compatible properties. }
|
||||
@ -214,9 +228,21 @@ Type
|
||||
end;
|
||||
|
||||
|
||||
{ TTIObjectPropertyEditor }
|
||||
{ TTIElementNamePropertyEditor
|
||||
Property editor for TCustomPropertyLink.TIElementName, showing
|
||||
all elements. }
|
||||
|
||||
TTIObjectPropertyEditor = class(TPersistentPropertyEditor)
|
||||
TTIElementNamePropertyEditor = class(TStringPropertyEditor)
|
||||
protected
|
||||
FPropEdits: TList; // list of TPropertyEditor for TIPropertyName
|
||||
FElementPropEdits: TList; // list of TPropertyEditor for TIElementName
|
||||
procedure GetCompatiblePropEdits(Prop: TPropertyEditor);
|
||||
procedure GetElementPropEdits(Prop: TPropertyEditor);
|
||||
function TestEditor(const Prop: TPropertyEditor): boolean;
|
||||
public
|
||||
function GetAttributes: TPropertyAttributes; override;
|
||||
function GetEditLimit: Integer; override;
|
||||
procedure GetValues(Proc: TGetStringProc); override;
|
||||
end;
|
||||
|
||||
|
||||
@ -710,7 +736,6 @@ Type
|
||||
procedure LinkLoadFromProperty(Sender: TObject); virtual;
|
||||
procedure LinkSaveToProperty(Sender: TObject); virtual;
|
||||
procedure LinkEditorChanged(Sender: TObject); virtual;
|
||||
procedure DoAutoSize; override;
|
||||
public
|
||||
constructor Create(TheOwner: TComponent); override;
|
||||
destructor Destroy; override;
|
||||
@ -1390,6 +1415,12 @@ begin
|
||||
if (ploReadOnIdle in ChangedOptions) then UpdateIdleHandler;
|
||||
end;
|
||||
|
||||
procedure TCustomPropertyLink.SetTIElementName(const AValue: string);
|
||||
begin
|
||||
if FTIElementName=AValue then exit;
|
||||
SetObjectAndProperty(TIObject,TIPropertyName,AValue);
|
||||
end;
|
||||
|
||||
function TCustomPropertyLink.GetCanModify: boolean;
|
||||
begin
|
||||
Result:=(FEditor<>nil) and (not FEditor.IsReadOnly);
|
||||
@ -1398,13 +1429,13 @@ end;
|
||||
procedure TCustomPropertyLink.SetTIObject(const AValue: TPersistent);
|
||||
begin
|
||||
if FTIObject=AValue then exit;
|
||||
SetObjectAndProperty(AValue,TIPropertyName);
|
||||
SetObjectAndProperty(AValue,TIPropertyName,TIElementName);
|
||||
end;
|
||||
|
||||
procedure TCustomPropertyLink.SetTIPropertyName(const AValue: string);
|
||||
begin
|
||||
if FTIPropertyName=AValue then exit;
|
||||
SetObjectAndProperty(TIObject,AValue);
|
||||
SetObjectAndProperty(TIObject,AValue,TIElementName);
|
||||
end;
|
||||
|
||||
procedure TCustomPropertyLink.EditorChanged;
|
||||
@ -1460,7 +1491,8 @@ var
|
||||
begin
|
||||
if Source is TCustomPropertyLink then begin
|
||||
SrcLink:=TCustomPropertyLink(Source);
|
||||
SetObjectAndProperty(SrcLink.TIObject,SrcLink.TIPropertyName);
|
||||
SetObjectAndProperty(SrcLink.TIObject,SrcLink.TIPropertyName,
|
||||
SrcLink.TIElementName);
|
||||
end else begin
|
||||
inherited Assign(Source);
|
||||
end;
|
||||
@ -1468,6 +1500,12 @@ end;
|
||||
|
||||
procedure TCustomPropertyLink.SetObjectAndProperty(NewPersistent: TPersistent;
|
||||
const NewPropertyName: string);
|
||||
begin
|
||||
SetObjectAndProperty(NewPersistent,NewPropertyName,'');
|
||||
end;
|
||||
|
||||
procedure TCustomPropertyLink.SetObjectAndProperty(NewPersistent: TPersistent;
|
||||
const NewPropertyName, NewElementName: string);
|
||||
var
|
||||
AComponent: TComponent;
|
||||
begin
|
||||
@ -1475,20 +1513,26 @@ begin
|
||||
and ((length(NewPropertyName)>254) or (not IsValidIdent(NewPropertyName)))
|
||||
then
|
||||
raise Exception('TCustomPropertyLink.SetObjectAndProperty invalid identifier "'+NewPropertyName+'"');
|
||||
if (NewPersistent=TIObject) and (NewPropertyName=TIPropertyName) then exit;
|
||||
if (FTIObject is TComponent) then begin
|
||||
AComponent:=TComponent(FTIObject);
|
||||
AComponent.RemoveFreeNotification(FLinkNotifier);
|
||||
if (NewPersistent<>TIObject) or (NewPropertyName<>TIPropertyName) then begin
|
||||
if (FTIObject is TComponent) then begin
|
||||
AComponent:=TComponent(FTIObject);
|
||||
AComponent.RemoveFreeNotification(FLinkNotifier);
|
||||
end;
|
||||
FTIObject:=NewPersistent;
|
||||
if FTIObject is TComponent then begin
|
||||
AComponent:=TComponent(FTIObject);
|
||||
if not (csDestroying in AComponent.ComponentState) then
|
||||
AComponent.FreeNotification(FLinkNotifier)
|
||||
else
|
||||
FTIObject:=nil;
|
||||
end;
|
||||
FTIPropertyName:=NewPropertyName;
|
||||
end
|
||||
else if FTIElementName=NewElementName then begin
|
||||
// no change
|
||||
exit;
|
||||
end;
|
||||
FTIObject:=NewPersistent;
|
||||
if FTIObject is TComponent then begin
|
||||
AComponent:=TComponent(FTIObject);
|
||||
if not (csDestroying in AComponent.ComponentState) then
|
||||
AComponent.FreeNotification(FLinkNotifier)
|
||||
else
|
||||
FTIObject:=nil;
|
||||
end;
|
||||
FTIPropertyName:=NewPropertyName;
|
||||
FTIElementName:=NewElementName;
|
||||
InvalidateEditor;
|
||||
LoadFromProperty;
|
||||
end;
|
||||
@ -1515,6 +1559,8 @@ begin
|
||||
raise Exception.Create('Unable to create property editor for '
|
||||
+FTIObject.ClassName+':'+FTIPropertyName);
|
||||
end;}
|
||||
if FTIElementName<>'' then
|
||||
|
||||
if CollectValues then FetchValues;
|
||||
if ((FEditor<>nil) or OldEditorExisted) and Assigned(OnEditorChanged) then
|
||||
OnEditorChanged(Self);
|
||||
@ -1569,7 +1615,7 @@ procedure TCustomPropertyLink.Notification(AComponent: TComponent;
|
||||
begin
|
||||
if (Operation=opRemove) then begin
|
||||
if (AComponent=FTIObject) then
|
||||
SetObjectAndProperty(nil,FTIPropertyName);
|
||||
SetObjectAndProperty(nil,FTIPropertyName,TIElementName);
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -1608,7 +1654,10 @@ end;
|
||||
procedure TCustomPropertyLink.SetAsText(const NewText: string);
|
||||
begin
|
||||
try
|
||||
FEditor.SetValue(AliasValues.AliasToValue(NewText));
|
||||
if (FTIElementName='') then
|
||||
FEditor.SetValue(AliasValues.AliasToValue(NewText))
|
||||
else
|
||||
SetSetElementValue(FTIElementName,CompareText(NewText,'True')=0);
|
||||
except
|
||||
on E: Exception do DoError(true,E);
|
||||
end;
|
||||
@ -1618,7 +1667,14 @@ function TCustomPropertyLink.GetAsText: string;
|
||||
begin
|
||||
Result:='';
|
||||
try
|
||||
Result:=AliasValues.ValueToAlias(FEditor.GetVisualValue);
|
||||
if (FTIElementName='') then
|
||||
Result:=AliasValues.ValueToAlias(FEditor.GetVisualValue)
|
||||
else begin
|
||||
if GetSetElementValue(FTIElementName) then
|
||||
Result:='True'
|
||||
else
|
||||
Result:='False';
|
||||
end;
|
||||
except
|
||||
on E: Exception do DoError(false,E);
|
||||
end;
|
||||
@ -2194,7 +2250,8 @@ procedure TTICustomCheckBox.LinkEditorChanged(Sender: TObject);
|
||||
begin
|
||||
if Sender=nil then ;
|
||||
if (FLink<>nil) and (FLink.Editor<>nil) then begin
|
||||
if FLink.Editor is TBoolPropertyEditor then begin
|
||||
if (FLink.Editor is TBoolPropertyEditor)
|
||||
or (FLink.Editor is TSetPropertyEditor) then begin
|
||||
FLinkValueFalse:='False';
|
||||
FLinkValueTrue:='True';
|
||||
end else if FLink.Editor is TOrdinalPropertyEditor then begin
|
||||
@ -2207,31 +2264,6 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TTICustomCheckBox.DoAutoSize;
|
||||
var
|
||||
R : TRect;
|
||||
DC : hDC;
|
||||
begin
|
||||
If AutoSizing or not AutoSize then
|
||||
Exit;
|
||||
if (not HandleAllocated) or ([csLoading,csDestroying]*ComponentState<>[]) then
|
||||
exit;
|
||||
AutoSizing := True;
|
||||
DC := GetDC(Handle);
|
||||
Try
|
||||
R := Rect(0,0, Width, Height);
|
||||
DrawText(DC, PChar(Caption), Length(Caption), R,
|
||||
DT_CalcRect);
|
||||
If R.Right > Width then
|
||||
Width := R.Right + 25;
|
||||
If R.Bottom > Height then
|
||||
Height := R.Bottom + 2;
|
||||
Finally
|
||||
ReleaseDC(0, DC);
|
||||
AutoSizing := False;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TTICustomCheckBox.SetLink(const AValue: TPropertyLink);
|
||||
begin
|
||||
if FLink=AValue then exit;
|
||||
@ -2262,7 +2294,7 @@ begin
|
||||
FLinkValueTrue:='True';
|
||||
FLink:=TPropertyLink.Create(Self);
|
||||
FLink.Filter:=[{tkUnknown,}tkInteger{,tkChar},tkEnumeration,
|
||||
{tkFloat,tkSet,tkMethod,}tkSString,tkLString,tkAString,
|
||||
{tkFloat,}tkSet,{tkMethod,}tkSString,tkLString,tkAString,
|
||||
tkWString,tkVariant,{tkArray,tkRecord,tkInterface,}
|
||||
{tkClass,tkObject,}tkWChar,tkBool,tkInt64,
|
||||
tkQWord{,tkDynArray,tkInterfaceRaw}];
|
||||
@ -3399,17 +3431,133 @@ begin
|
||||
SetLinks;
|
||||
end;
|
||||
|
||||
{ TTIElementNamePropertyEditor }
|
||||
|
||||
procedure TTIElementNamePropertyEditor.GetCompatiblePropEdits(
|
||||
Prop: TPropertyEditor);
|
||||
begin
|
||||
if FPropEdits=nil then FPropEdits:=TList.Create;
|
||||
FPropEdits.Add(Prop);
|
||||
end;
|
||||
|
||||
procedure TTIElementNamePropertyEditor.GetElementPropEdits(Prop: TPropertyEditor
|
||||
);
|
||||
begin
|
||||
if FElementPropEdits=nil then FElementPropEdits:=TList.Create;
|
||||
FElementPropEdits.Add(Prop);
|
||||
end;
|
||||
|
||||
function TTIElementNamePropertyEditor.TestEditor(const Prop: TPropertyEditor
|
||||
): boolean;
|
||||
var
|
||||
i: Integer;
|
||||
CurPersistent: TPersistent;
|
||||
ALink: TCustomPropertyLink;
|
||||
begin
|
||||
Result:=false;
|
||||
for i:=0 to PropCount-1 do begin
|
||||
CurPersistent:=GetComponent(i);
|
||||
if (CurPersistent is TCustomPropertyLink) then begin
|
||||
ALink:=TCustomPropertyLink(CurPersistent);
|
||||
//debugln('TTIElementNamePropertyEditor.TestEditor ',ALink.TIPropertyName,' ',Prop.GetName);
|
||||
if (CompareText(ALink.TIPropertyName,Prop.GetName)<>0) then exit;
|
||||
if Assigned(ALink.OnTestEditor) and (not ALink.OnTestEditor(Prop)) then
|
||||
exit;
|
||||
//debugln('TTIElementNamePropertyEditor.TestEditor ok ',ALink.TIPropertyName);
|
||||
end;
|
||||
end;
|
||||
Result:=true;
|
||||
end;
|
||||
|
||||
function TTIElementNamePropertyEditor.GetAttributes: TPropertyAttributes;
|
||||
begin
|
||||
Result:=[paMultiSelect,paValueList,paSortList,paRevertable,paHasDefaultValue];
|
||||
end;
|
||||
|
||||
function TTIElementNamePropertyEditor.GetEditLimit: Integer;
|
||||
begin
|
||||
Result:=255;
|
||||
end;
|
||||
|
||||
procedure TTIElementNamePropertyEditor.GetValues(Proc: TGetStringProc);
|
||||
var
|
||||
ALink: TCustomPropertyLink;
|
||||
ASelection: TPersistentSelectionList;
|
||||
i: Integer;
|
||||
CurPersistent: TPersistent;
|
||||
CurTIObject: TPersistent;
|
||||
Filter: TTypeKinds;
|
||||
CurPropEdit: TPropertyEditor;
|
||||
j: Integer;
|
||||
begin
|
||||
ASelection:=TPersistentSelectionList.Create;
|
||||
try
|
||||
// get every TIObject of every TCustomPropertyLink in the selection
|
||||
Filter:=AllTypeKinds;
|
||||
for i:=0 to PropCount-1 do begin
|
||||
CurPersistent:=GetComponent(i);
|
||||
if (CurPersistent is TCustomPropertyLink) then begin
|
||||
ALink:=TCustomPropertyLink(CurPersistent);
|
||||
CurTIObject:=ALink.TIObject;
|
||||
if CurTIObject<>nil then begin
|
||||
ASelection.Add(CurTIObject);
|
||||
Filter:=Filter*ALink.Filter;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
if ASelection.Count=0 then exit;
|
||||
// get properties of all TIObjects
|
||||
GetPersistentProperties(ASelection,Filter,PropertyHook,
|
||||
@GetCompatiblePropEdits,nil,@TestEditor);
|
||||
if FPropEdits<>nil then begin
|
||||
// get the possible element values:
|
||||
for i:=0 to FPropEdits.Count-1 do begin
|
||||
CurPropEdit:=TPropertyEditor(FPropEdits[i]);
|
||||
if paValueList in CurPropEdit.GetAttributes then
|
||||
begin
|
||||
// get value list
|
||||
CurPropEdit.GetValues(Proc);
|
||||
break;
|
||||
end else if paSubProperties in CurPropEdit.GetAttributes then begin
|
||||
// get names of sub property editors
|
||||
CurPropEdit.GetProperties(@GetElementPropEdits);
|
||||
if FElementPropEdits<>nil then begin
|
||||
for j:=0 to FElementPropEdits.Count-1 do
|
||||
Proc(TPropertyEditor(FElementPropEdits[j]).GetName);
|
||||
break;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
finally
|
||||
ASelection.Free;
|
||||
if FPropEdits<>nil then begin
|
||||
for i:=0 to FPropEdits.Count-1 do
|
||||
TPropertyEditor(FPropEdits[i]).Free;
|
||||
FreeThenNil(FPropEdits);
|
||||
end;
|
||||
if FElementPropEdits<>nil then begin
|
||||
for i:=0 to FElementPropEdits.Count-1 do
|
||||
TPropertyEditor(FElementPropEdits[i]).Free;
|
||||
FreeThenNil(FElementPropEdits);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
initialization
|
||||
{$I rttictrls.lrs}
|
||||
// TPropertyLink
|
||||
RegisterPropertyEditor(ClassTypeInfo(TPropertyLink),
|
||||
nil, '', TPropertyLinkPropertyEditor);
|
||||
// property editor for TCustomPropertyLink.TIPropertyName
|
||||
RegisterPropertyEditor(TypeInfo(string),
|
||||
TCustomPropertyLink, 'TIPropertyName', TPropertyNamePropertyEditor);
|
||||
// property editor for TCustomPropertyLink.TIObject
|
||||
RegisterPropertyEditor(ClassTypeInfo(TPersistent),
|
||||
TCustomPropertyLink, 'TIObject', TTIObjectPropertyEditor);
|
||||
// property editor for TCustomPropertyLink.TIPropertyName
|
||||
RegisterPropertyEditor(TypeInfo(string),
|
||||
TCustomPropertyLink, 'TIPropertyName', TPropertyNamePropertyEditor);
|
||||
// property editor for TCustomPropertyLink.TIElementName
|
||||
RegisterPropertyEditor(TypeInfo(string),
|
||||
TCustomPropertyLink, 'TIElementName', TTIElementNamePropertyEditor);
|
||||
// property editor for TCustomPropertyLink.AliasValues
|
||||
RegisterPropertyEditor(ClassTypeInfo(TAliasStrings),
|
||||
TCustomPropertyLink, 'AliasValues', TPropLinkAliasPropertyEditor);
|
||||
|
@ -115,16 +115,59 @@ type
|
||||
SystemFont: Boolean; // Use the system font instead of Canvas Font
|
||||
end;
|
||||
|
||||
{$IFDEF UseFPCanvas}
|
||||
type
|
||||
TPenStyle = TFPPenStyle;
|
||||
TPenMode = TFPPenMode;
|
||||
TBrushStyle = TFPBrushStyle;
|
||||
|
||||
const
|
||||
psSolid = FPCanvas.psSolid;
|
||||
psDash = FPCanvas.psDash;
|
||||
psDot = FPCanvas.psDot;
|
||||
psDashDot = FPCanvas.psDashDot;
|
||||
psDashDotDot = FPCanvas.psDashDotDot;
|
||||
psClear = FPCanvas.psClear;
|
||||
//psInsideframe = FPCanvas.psInsideframe;
|
||||
|
||||
pmBlack = FPCanvas.pmBlack;
|
||||
pmWhite = FPCanvas.pmWhite;
|
||||
pmNop = FPCanvas.pmNop;
|
||||
pmNot = FPCanvas.pmNot;
|
||||
pmCopy = FPCanvas.pmCopy;
|
||||
pmNotCopy = FPCanvas.pmNotCopy;
|
||||
pmMergePenNot = FPCanvas.pmMergePenNot;
|
||||
pmMaskPenNot = FPCanvas.pmMaskPenNot;
|
||||
pmMergeNotPen = FPCanvas.pmMergeNotPen;
|
||||
pmMaskNotPen = FPCanvas.pmMaskNotPen;
|
||||
pmMerge = FPCanvas.pmMerge;
|
||||
pmNotMerge = FPCanvas.pmNotMerge;
|
||||
pmMask = FPCanvas.pmMask;
|
||||
pmNotMask = FPCanvas.pmNotMask;
|
||||
pmXor = FPCanvas.pmXor;
|
||||
pmNotXor = FPCanvas.pmNotXor;
|
||||
|
||||
bsSolid = FPCanvas.bsSolid;
|
||||
bsClear = FPCanvas.bsClear;
|
||||
bsHorizontal = FPCanvas.bsHorizontal;
|
||||
bsVertical = FPCanvas.bsVertical;
|
||||
bsFDiagonal = FPCanvas.bsFDiagonal;
|
||||
bsBDiagonal = FPCanvas.bsBDiagonal;
|
||||
bsCross = FPCanvas.bsCross;
|
||||
bsDiagCross = FPCanvas.bsDiagCross;
|
||||
{$ELSE}
|
||||
type
|
||||
TPenStyle = (psSolid, psDash, psDot, psDashDot, psDashDotDot, psClear,
|
||||
psInsideframe);
|
||||
TPenMode = (pmBlack, pmWhite, pmNop, pmNot, pmCopy, pmNotCopy, pmMergePenNot,
|
||||
pmMaskPenNot, pmMergeNotPen, pmMaskNotPen, pmMerge,pmNotMerge,
|
||||
pmMask, pmNotMask, pmXor, pmNotXor
|
||||
);
|
||||
|
||||
TBrushStyle = (bsSolid, bsClear, bsHorizontal, bsVertical, bsFDiagonal,
|
||||
bsBDiagonal, bsCross, bsDiagCross);
|
||||
|
||||
{$ENDIF}
|
||||
type
|
||||
TFillStyle = TGraphicsFillStyle;
|
||||
TFillMode = (fmAlternate, fmWinding);
|
||||
|
||||
@ -524,10 +567,13 @@ type
|
||||
private
|
||||
FHandle: HPen;
|
||||
FColor: TColor;
|
||||
FPenHandleCached: boolean;
|
||||
{$IFDEF UseFPCanvas}
|
||||
{$ELSE}
|
||||
FWidth: Integer;
|
||||
FStyle: TPenStyle;
|
||||
FMode: TPenMode;
|
||||
FPenHandleCached: boolean;
|
||||
{$ENDIF}
|
||||
procedure FreeHandle;
|
||||
protected
|
||||
{$IFDEF UseFPCanvas}
|
||||
@ -538,9 +584,9 @@ type
|
||||
function GetHandle: HPEN;
|
||||
procedure SetHandle(const Value: HPEN);
|
||||
procedure SetColor(Value: TColor);
|
||||
procedure SetMode(Value: TPenMode);
|
||||
procedure SetStyle(Value: TPenStyle);
|
||||
procedure SetWidth(value: Integer);
|
||||
procedure SetMode(Value: TPenMode); {$IFDEF UseFPCanvas}override;{$ENDIF}
|
||||
procedure SetStyle(Value: TPenStyle); {$IFDEF UseFPCanvas}override;{$ENDIF}
|
||||
procedure SetWidth(value: Integer); {$IFDEF UseFPCanvas}override;{$ENDIF}
|
||||
public
|
||||
constructor Create; {$IFDEF UseFPCanvas}override;{$ENDIF}
|
||||
destructor Destroy; override;
|
||||
@ -1827,6 +1873,9 @@ end.
|
||||
{ =============================================================================
|
||||
|
||||
$Log$
|
||||
Revision 1.164 2004/12/23 22:38:18 mattias
|
||||
implemented TIElementName of link of RTTI controls for set elements
|
||||
|
||||
Revision 1.163 2004/12/22 23:54:21 mattias
|
||||
started TControl.AnchorSide
|
||||
|
||||
|
@ -79,7 +79,6 @@ var
|
||||
begin
|
||||
Rect := ClientRect;
|
||||
Canvas.Brush.Color := Color;
|
||||
Canvas.Brush.Style := bsSolid;
|
||||
Canvas.Pen.Width := 1;
|
||||
DrawEdge(Canvas.Handle, Rect, BDR_RAISEDOUTER, BF_RECT);
|
||||
with TS do
|
||||
|
@ -60,10 +60,14 @@ end;
|
||||
------------------------------------------------------------------------------}
|
||||
Procedure TPen.SetStyle(Value : TPenStyle);
|
||||
begin
|
||||
if FStyle <> Value
|
||||
if Style <> Value
|
||||
then begin
|
||||
FreeHandle;
|
||||
FStyle := Value;
|
||||
{$IFDEF UseFPCanvas}
|
||||
inherited Style := Value;
|
||||
{$ELSE}
|
||||
FStyle:=Value;
|
||||
{$ENDIF}
|
||||
Changed;
|
||||
end;
|
||||
end;
|
||||
@ -77,9 +81,14 @@ end;
|
||||
------------------------------------------------------------------------------}
|
||||
Procedure TPen.SetMode(Value : TPenMode);
|
||||
begin
|
||||
if FMode <> Value
|
||||
if Mode <> Value
|
||||
then begin
|
||||
FMode := Value;
|
||||
FreeHandle;
|
||||
{$IFDEF UseFPCanvas}
|
||||
inherited Mode := Value;
|
||||
{$ELSE}
|
||||
FMode:=Value;
|
||||
{$ENDIF}
|
||||
Changed;
|
||||
end;
|
||||
end;
|
||||
@ -96,7 +105,11 @@ begin
|
||||
if Width <> Value
|
||||
then begin
|
||||
FreeHandle;
|
||||
FWidth := Value;
|
||||
{$IFDEF UseFPCanvas}
|
||||
inherited Width := Value;
|
||||
{$ELSE}
|
||||
FWidth:=Value;
|
||||
{$ENDIF}
|
||||
Changed;
|
||||
end;
|
||||
end;
|
||||
@ -111,11 +124,17 @@ end;
|
||||
constructor TPen.Create;
|
||||
begin
|
||||
inherited Create;
|
||||
FWidth := 1;
|
||||
FHandle := 0;
|
||||
{$IFDEF UseFPCanvas}
|
||||
inherited Width := 1;
|
||||
inherited Style := psSolid;
|
||||
inherited Mode := pmCopy;
|
||||
{$ELSE}
|
||||
FWidth := 1;
|
||||
FStyle := psSolid;
|
||||
FColor := clBlack;
|
||||
FMode := pmCopy;
|
||||
{$ENDIF}
|
||||
Color := clBlack;
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
@ -188,8 +207,8 @@ begin
|
||||
FillChar(LogPen,SizeOf(LogPen),0);
|
||||
with LogPen do
|
||||
begin
|
||||
lopnStyle := PEN_STYLES[FStyle];
|
||||
lopnWidth.X := FWidth;
|
||||
lopnStyle := PEN_STYLES[Style];
|
||||
lopnWidth.X := Width;
|
||||
lopnColor := FColor;
|
||||
end;
|
||||
CachedPen:=PenResourceCache.FindDescriptor(@LogPen);
|
||||
@ -256,6 +275,9 @@ end;
|
||||
{ =============================================================================
|
||||
|
||||
$Log$
|
||||
Revision 1.16 2004/12/23 22:38:18 mattias
|
||||
implemented TIElementName of link of RTTI controls for set elements
|
||||
|
||||
Revision 1.15 2004/12/22 23:54:21 mattias
|
||||
started TControl.AnchorSide
|
||||
|
||||
|
@ -35,8 +35,8 @@ unit PairSplitter;
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, LCLType, LCLProc, LMessages, Graphics, GraphType, LCLIntf,
|
||||
Controls;
|
||||
Classes, SysUtils,
|
||||
LCLType, LCLProc, LMessages, Graphics, GraphType, LCLIntf, Controls;
|
||||
|
||||
type
|
||||
TCustomPairSplitter = class;
|
||||
|
@ -176,9 +176,16 @@ Type
|
||||
end;
|
||||
|
||||
Const
|
||||
cBrushStyle : Array[bsSolid..bsDiagCross] of String = ('bsSolid','bsClear','bsHorizontal',
|
||||
'bsVertical','bsFDiagonal',
|
||||
'bsBDiagonal','bsCross','bsDiagCross');
|
||||
cBrushStyle : Array[TBrushStyle] of String =
|
||||
{$IFDEF UseFPCanvas}
|
||||
('bsClear', 'bsSolid', 'bsBDiagonal',
|
||||
'bsFDiagonal', 'bsCross', 'bsDiagCross',
|
||||
'bsHorizontal', 'bsVertical', 'bsImage', 'bsPattern');
|
||||
{$ELSE}
|
||||
('bsSolid','bsClear','bsHorizontal',
|
||||
'bsVertical','bsFDiagonal',
|
||||
'bsBDiagonal','bsCross','bsDiagCross');
|
||||
{$ENDIF}
|
||||
|
||||
|
||||
cFontPSMetrics : Array[0..12] of TFontPSMetrics =(
|
||||
|
Loading…
Reference in New Issue
Block a user