gtk intf: reduced X queries for GetCursorPos, LCL: extended ControlAtPos to search recursive, gtk2 intf: FindControlAtPos now searches recursive and now finds sub child controls, IDE: renaming units via save-as now consider code renames by user

git-svn-id: trunk@10114 -
This commit is contained in:
mattias 2006-10-28 10:50:00 +00:00
parent 4082bf227f
commit d6eb52a88b
32 changed files with 779 additions and 671 deletions

View File

@ -407,15 +407,13 @@ begin
BuildTree(false);
SectionNode:=Tree.Root;
while (SectionNode<>nil) and (SectionNode.Desc in [ctnProgram, ctnUnit,
ctnPackage,ctnLibrary,ctnInterface,ctnImplementation]) do begin
if SectionNode.Desc in [ctnProgram, ctnInterface, ctnImplementation] then
begin
UsesNode:=SectionNode.FirstChild;
if (UsesNode<>nil) and (UsesNode.Desc=ctnUsesSection)
and FindUnitInUsesSection(UsesNode,UpperUnitName,NamePos,InPos) then begin
Result:=true;
exit;
end;
ctnPackage,ctnLibrary,ctnInterface,ctnImplementation])
do begin
UsesNode:=SectionNode.FirstChild;
if (UsesNode<>nil) and (UsesNode.Desc=ctnUsesSection)
and FindUnitInUsesSection(UsesNode,UpperUnitName,NamePos,InPos) then begin
Result:=true;
exit;
end;
SectionNode:=SectionNode.NextBrother;
end;
@ -430,7 +428,10 @@ begin
Result:=false;
if (OldUpperUnitName='') or (length(OldUpperUnitName)>255) or (NewUnitName='')
or (length(NewUnitName)>255) then exit;
if not FindUnitInAllUsesSections(OldUpperUnitName,UnitPos,InPos) then exit;
if not FindUnitInAllUsesSections(OldUpperUnitName,UnitPos,InPos) then begin
//debugln('TStandardCodeTool.RenameUsedUnit not found: ',OldUpperUnitName,' ');
exit;
end;
SourceChangeCache.MainScanner:=Scanner;
if InPos.StartPos>0 then
UnitPos.EndPos:=InPos.EndPos;

View File

@ -47,7 +47,7 @@
<IsPartOfProject Value="True"/>
<ResourceFilename Value="frmmain.lrs"/>
<UnitName Value="frmmain"/>
<CursorPos X="14" Y="33"/>
<CursorPos X="28" Y="21"/>
<TopLine Value="1"/>
<EditorIndex Value="0"/>
<UsageCount Value="32"/>

View File

@ -1,342 +1,356 @@
object MainForm: TMainForm
Left = 279
Height = 522
Top = 165
Width = 734
HorzScrollBar.Page = 733
VertScrollBar.Page = 491
ActiveControl = GDBA
Caption = 'Addressbook'
ClientHeight = 496
ClientHeight = 492
ClientWidth = 734
Font.Height = -13
Font.Name = 'MS Sans Serif'
Menu = MMain
OnClose = FormClose
OnCloseQuery = FormCloseQuery
TextHeight = 16
HorzScrollBar.Page = 735
VertScrollBar.Page = 497
Left = 319
Height = 522
Top = 165
Width = 734
object PTop: TPanel
Height = 33
Width = 734
Align = alTop
BevelOuter = bvLowered
ClientHeight = 33
ClientWidth = 734
FullRepaint = False
TabOrder = 0
Height = 33
Width = 734
object DBNavigator1: TDBNavigator
Left = 456
Height = 25
Top = 4
Width = 260
Anchors = [akTop, akRight]
BevelOuter = bvNone
ClientHeight = 25
ClientWidth = 260
DataSource = DSAddress
TabOrder = 0
Left = 456
Height = 25
Top = 4
Width = 260
end
end
object GDBA: TdbGrid
Align = alClient
Color = clWhite
DataSource = DSAddress
FixedColor = clBtnFace
ReadOnly = True
TabOrder = 1
Height = 203
object GDBA: TDBGrid
Height = 199
Top = 33
Width = 734
Align = alClient
Color = clWhite
Columns = <
item
FieldName = 'FirstName'
Title.Caption = 'First name'
Width = 117
FieldName = 'FirstName'
end
item
FieldName = 'LastName'
Title.Caption = 'Last name'
Width = 127
FieldName = 'LastName'
end
item
FieldName = 'Street'
Title.Caption = 'Street '
Width = 131
FieldName = 'Street'
end
item
FieldName = 'Zip'
Title.Caption = 'Zip '
FieldName = 'Zip'
end
item
FieldName = 'Town'
Title.Caption = 'Town '
Width = 100
FieldName = 'Town'
end
item
FieldName = 'Country'
Title.Caption = 'Country '
FieldName = 'Country'
end
item
FieldName = 'Telephone'
Title.Caption = 'Telephone '
FieldName = 'Telephone'
end
item
FieldName = 'Fax'
Title.Caption = 'Fax '
FieldName = 'Fax'
end
item
FieldName = 'Mobile'
Title.Caption = 'Mobile '
FieldName = 'Mobile'
end
item
FieldName = 'Email'
Title.Caption = 'Email '
FieldName = 'Email'
end
item
FieldName = 'WWW'
Title.Caption = 'WWW '
FieldName = 'WWW'
end>
DataSource = DSAddress
FixedColor = clBtnFace
Options = [dgEditing, dgTitles, dgIndicator, dgColumnResize, dgColumnMove, dgColLines, dgRowLines, dgTabs, dgAlwaysShowSelection, dgConfirmDelete, dgCancelOnExit]
OptionsExtra = [dgeAutoColumns, dgeCheckboxColumn]
ParentColor = False
ReadOnly = True
TabOrder = 1
TabStop = True
end
object PBottom: TPanel
Height = 260
Top = 232
Width = 734
Align = alBottom
BevelOuter = bvLowered
ClientHeight = 260
ClientWidth = 734
FullRepaint = False
TabOrder = 2
Height = 260
Top = 236
Width = 734
object LELastName: TLabel
Left = 8
Height = 17
Top = 8
Width = 89
Alignment = taRightJustify
Caption = '&Last name'
Color = clNone
FocusControl = ELastName
Layout = tlCenter
Left = 8
Height = 24
Top = 8
Width = 144
ParentColor = False
end
object LEFirstName: TLabel
Left = 8
Height = 17
Top = 32
Width = 89
Alignment = taRightJustify
Caption = '&First name'
Color = clNone
FocusControl = EFirstName
Layout = tlCenter
Left = 8
Height = 24
Top = 32
Width = 144
ParentColor = False
end
object LEStreet: TLabel
Left = 8
Height = 17
Top = 64
Width = 56
Alignment = taRightJustify
Caption = '&Street'
Color = clNone
FocusControl = EStreet
Layout = tlCenter
Left = 8
Height = 24
Top = 64
Width = 144
ParentColor = False
end
object LEZip: TLabel
Left = 8
Height = 17
Top = 88
Width = 34
Alignment = taRightJustify
Caption = '&Zip'
Color = clNone
FocusControl = EZip
Layout = tlCenter
Left = 8
Height = 24
Top = 88
Width = 144
ParentColor = False
end
object LETown: TLabel
Left = 264
Height = 17
Top = 88
Width = 52
Alignment = taRightJustify
Caption = 'T&own'
Color = clNone
FocusControl = ETown
Layout = tlCenter
Left = 264
Height = 24
Top = 88
Width = 41
ParentColor = False
end
object LETelephone: TLabel
Left = 8
Height = 17
Top = 144
Width = 88
Alignment = taRightJustify
Caption = '&Telephone'
Color = clNone
FocusControl = ETelephone
Layout = tlCenter
Left = 8
Height = 24
Top = 144
Width = 144
ParentColor = False
end
object LECountry: TLabel
Left = 8
Height = 17
Top = 112
Width = 69
Alignment = taRightJustify
Caption = 'Countr&y'
Color = clNone
FocusControl = ECountry
Layout = tlCenter
Left = 8
Height = 24
Top = 112
Width = 144
ParentColor = False
end
object LEFax: TLabel
Left = 288
Height = 17
Top = 144
Width = 39
Alignment = taRightJustify
Caption = 'Fa&x'
Color = clNone
FocusControl = EFax
Layout = tlCenter
Left = 288
Height = 24
Top = 144
Width = 41
ParentColor = False
end
object LEMobile: TLabel
Left = 472
Height = 17
Top = 144
Width = 58
Alignment = taRightJustify
Caption = '&Mobile'
Color = clNone
FocusControl = EMobile
Layout = tlCenter
Left = 472
Height = 24
Top = 144
Width = 41
ParentColor = False
end
object LEEmail: TLabel
Left = 8
Height = 17
Top = 176
Width = 52
Alignment = taRightJustify
Caption = '&Email'
Color = clNone
FocusControl = EEmail
Layout = tlCenter
Left = 8
Height = 24
Top = 176
Width = 144
ParentColor = False
end
object LEWWW: TLabel
Left = 8
Height = 17
Top = 200
Width = 57
Alignment = taRightJustify
Caption = '&WWW'
Color = clNone
FocusControl = EWWW
Layout = tlCenter
Left = 8
Height = 24
Top = 200
Width = 144
ParentColor = False
end
object ELastName: TDBEdit
DataField = 'LastName'
DataSource = DSAddress
DragCursor = 65524
TabOrder = 0
TabOrder = 0
Left = 160
Height = 24
Top = 8
Width = 361
DataField = 'LastName'
DataSource = DSAddress
ParentColor = False
TabOrder = 0
end
object EFirstName: TDBEdit
DataField = 'FirstName'
DataSource = DSAddress
DragCursor = 65524
TabOrder = 1
TabOrder = 1
Left = 160
Height = 24
Top = 32
Width = 361
DataField = 'FirstName'
DataSource = DSAddress
ParentColor = False
TabOrder = 1
end
object EStreet: TDBEdit
DataField = 'Street'
DataSource = DSAddress
DragCursor = 65524
TabOrder = 2
TabOrder = 2
Left = 160
Height = 24
Top = 64
Width = 361
DataField = 'Street'
DataSource = DSAddress
ParentColor = False
TabOrder = 2
end
object EZip: TDBEdit
DataField = 'Zip'
DataSource = DSAddress
DragCursor = 65524
TabOrder = 3
TabOrder = 3
Left = 160
Height = 24
Top = 88
Width = 89
DataField = 'Zip'
DataSource = DSAddress
ParentColor = False
TabOrder = 3
end
object ECountry: TDBEdit
DataField = 'Country'
DataSource = DSAddress
DragCursor = 65524
TabOrder = 5
TabOrder = 5
Left = 160
Height = 24
Top = 112
Width = 361
DataField = 'Country'
DataSource = DSAddress
ParentColor = False
TabOrder = 5
end
object EWWW: TDBEdit
DataField = 'WWW'
DataSource = DSAddress
DragCursor = 65524
TabOrder = 10
TabOrder = 10
Left = 160
Height = 24
Top = 200
Width = 361
DataField = 'WWW'
DataSource = DSAddress
ParentColor = False
TabOrder = 10
end
object ETelephone: TDBEdit
DataField = 'Telephone'
DataSource = DSAddress
DragCursor = 65524
TabOrder = 6
TabOrder = 6
Left = 160
Height = 24
Top = 144
Width = 121
DataField = 'Telephone'
DataSource = DSAddress
ParentColor = False
TabOrder = 6
end
object EFax: TDBEdit
DataField = 'Fax'
DataSource = DSAddress
DragCursor = 65524
TabOrder = 7
TabOrder = 7
Left = 336
Height = 24
Top = 144
Width = 121
DataField = 'Fax'
DataSource = DSAddress
ParentColor = False
TabOrder = 7
end
object EMobile: TDBEdit
DataField = 'Mobile'
DataSource = DSAddress
DragCursor = 65524
TabOrder = 8
TabOrder = 8
Left = 520
Height = 24
Top = 144
Width = 121
DataField = 'Mobile'
DataSource = DSAddress
ParentColor = False
TabOrder = 8
end
object EEmail: TDBEdit
DataField = 'Email'
DataSource = DSAddress
DragCursor = 65524
TabOrder = 9
TabOrder = 9
Left = 160
Height = 24
Top = 176
Width = 361
DataField = 'Email'
DataSource = DSAddress
ParentColor = False
TabOrder = 9
end
object ETown: TDBEdit
DataField = 'Town'
DataSource = DSAddress
DragCursor = 65524
TabOrder = 4
TabOrder = 4
Left = 312
Left = 320
Height = 24
Top = 88
Width = 209
Width = 201
DataField = 'Town'
DataSource = DSAddress
ParentColor = False
TabOrder = 4
end
end
object MMain: TMainMenu
@ -368,36 +382,46 @@ object MainForm: TMainForm
Caption = '&Record'
object MIFirst: TMenuItem
Action = AFirst
OnClick = DoDataAction
end
object MILAst: TMenuItem
Action = ALast
OnClick = DoDataAction
end
object MIPrior: TMenuItem
Action = APrior
OnClick = DoDataAction
end
object MINext: TMenuItem
Action = ANext
OnClick = DoDataAction
end
object N2: TMenuItem
Caption = '-'
end
object MIInsert: TMenuItem
Action = AInsert
OnClick = DoDataAction
end
object MIEdit: TMenuItem
Action = AEdit
OnClick = DoDataAction
end
object MIDelete: TMenuItem
Action = ADelete
OnClick = DoDataAction
end
object MIPost: TMenuItem
Action = APost
OnClick = DoDataAction
end
object MICancel: TMenuItem
Action = ACancel
OnClick = DoDataAction
end
object MIRefresh: TMenuItem
Action = ARefresh
OnClick = DoDataAction
end
end
end
@ -428,89 +452,89 @@ object MainForm: TMainForm
ShortCut = 16465
end
object AFirst: TAction
Category = 'Dataset'
Caption = '&First'
HelpType = htKeyword
OnExecute = DoDataAction
OnUpdate = DataOpen
ShortCut = 16454
Category = 'Dataset'
end
object APrior: TAction
Tag = 1
Category = 'Dataset'
Caption = '&Prior'
HelpType = htKeyword
OnExecute = DoDataAction
OnUpdate = DataOpen
Category = 'Dataset'
Tag = 1
end
object ANext: TAction
Tag = 2
Category = 'Dataset'
Caption = '&Next'
HelpType = htKeyword
OnExecute = DoDataAction
OnUpdate = DataOpen
Category = 'Dataset'
Tag = 2
end
object ALast: TAction
Tag = 3
Category = 'Dataset'
Caption = '&Last'
HelpType = htKeyword
OnExecute = DoDataAction
OnUpdate = DataOpen
ShortCut = 16460
Category = 'Dataset'
Tag = 3
end
object AInsert: TAction
Tag = 4
Category = 'Dataset'
Caption = '&Insert'
HelpType = htKeyword
OnExecute = DoDataAction
OnUpdate = DataOpen
ShortCut = 16462
Category = 'Dataset'
Tag = 4
end
object ADelete: TAction
Tag = 5
Category = 'Dataset'
Caption = '&Delete'
HelpType = htKeyword
OnExecute = DoDataAction
OnUpdate = HaveDataNotEmpty
ShortCut = 16452
Category = 'Dataset'
Tag = 5
end
object AEdit: TAction
Tag = 6
Category = 'Dataset'
Caption = '&Edit'
HelpType = htKeyword
OnExecute = DoDataAction
OnUpdate = HaveDataNotEmpty
ShortCut = 113
Category = 'Dataset'
Tag = 6
end
object APost: TAction
Tag = 7
Category = 'Dataset'
Caption = 'P&ost'
HelpType = htKeyword
OnExecute = DoDataAction
OnUpdate = InEditMode
ShortCut = 16467
Category = 'Dataset'
Tag = 7
end
object ACancel: TAction
Tag = 8
Category = 'Dataset'
Caption = '&Cancel'
HelpType = htKeyword
OnExecute = DoDataAction
OnUpdate = InEditMode
Category = 'Dataset'
Tag = 8
end
object ARefresh: TAction
Category = 'Dataset'
Caption = '&Refresh'
HelpType = htKeyword
OnExecute = DoDataAction
OnUpdate = DataOpen
ShortCut = 116
Category = 'Dataset'
end
end
object DBA: TDbf
@ -522,20 +546,20 @@ object MainForm: TMainForm
top = 112
end
object SDDBA: TSaveDialog
Options = [ofHideReadOnly, ofPathMustExist, ofEnableSizing]
Title = 'Save file as'
DefaultExt = '.dbf'
Filter = 'DBF files|*.dbf|All files|*.*'
FilterIndex = 0
Options = [ofHideReadOnly, ofPathMustExist, ofEnableSizing]
left = 96
top = 144
end
object ODDBA: TOpenDialog
Options = [ofHideReadOnly, ofFileMustExist, ofEnableSizing]
Title = 'Open existing file'
DefaultExt = '.dbf'
Filter = 'DBF files|*.dbf|All files|*.*'
FilterIndex = 0
Options = [ofHideReadOnly, ofFileMustExist, ofEnableSizing]
left = 64
top = 144
end

View File

@ -1,88 +1,95 @@
{ Das ist eine automatisch erzeugte Lazarus-Ressourcendatei }
LazarusResources.Add('TMainForm','FORMDATA',[
'TPF0'#9'TMainForm'#8'MainForm'#13'ActiveControl'#7#4'GDBA'#7'Caption'#6#11'A'
+'ddressbook'#12'ClientHeight'#3#240#1#11'ClientWidth'#3#222#2#11'Font.Height'
+#2#243#9'Font.Name'#6#13'MS Sans Serif'#4'Menu'#7#5'MMain'#7'OnClose'#7#9'Fo'
+'rmClose'#12'OnCloseQuery'#7#14'FormCloseQuery'#10'TextHeight'#2#16#18'HorzS'
+'crollBar.Page'#3#223#2#18'VertScrollBar.Page'#3#241#1#4'Left'#3'?'#1#6'Heig'
+'ht'#3#10#2#3'Top'#3#165#0#5'Width'#3#222#2#0#6'TPanel'#4'PTop'#5'Align'#7#5
+'alTop'#10'BevelOuter'#7#9'bvLowered'#12'ClientHeight'#2'!'#11'ClientWidth'#3
+#222#2#11'FullRepaint'#8#8'TabOrder'#2#0#6'Height'#2'!'#5'Width'#3#222#2#0#12
+'TDBNavigator'#12'DBNavigator1'#7'Anchors'#11#5'akTop'#7'akRight'#0#10'Bevel'
+'Outer'#7#6'bvNone'#12'ClientHeight'#2#25#11'ClientWidth'#3#4#1#10'DataSourc'
+'e'#7#9'DSAddress'#8'TabOrder'#2#0#4'Left'#3#200#1#6'Height'#2#25#3'Top'#2#4
+#5'Width'#3#4#1#0#0#0#7'TdbGrid'#4'GDBA'#5'Align'#7#8'alClient'#5'Color'#7#7
+'clWhite'#10'DataSource'#7#9'DSAddress'#10'FixedColor'#7#9'clBtnFace'#8'Read'
+'Only'#9#8'TabOrder'#2#1#6'Height'#3#203#0#3'Top'#2'!'#5'Width'#3#222#2#7'Co'
+'lumns'#14#1#9'FieldName'#6#9'FirstName'#13'Title.Caption'#6#10'First name'#5
+'Width'#2'u'#0#1#9'FieldName'#6#8'LastName'#13'Title.Caption'#6#9'Last name'
+#5'Width'#2''#0#1#9'FieldName'#6#6'Street'#13'Title.Caption'#6#7'Street '#5
+'Width'#3#131#0#0#1#9'FieldName'#6#3'Zip'#13'Title.Caption'#6#4'Zip '#0#1#9
+'FieldName'#6#4'Town'#13'Title.Caption'#6#5'Town '#5'Width'#2'd'#0#1#9'Field'
+'Name'#6#7'Country'#13'Title.Caption'#6#8'Country '#0#1#9'FieldName'#6#9'Tel'
+'ephone'#13'Title.Caption'#6#10'Telephone '#0#1#9'FieldName'#6#3'Fax'#13'Tit'
+'le.Caption'#6#4'Fax '#0#1#9'FieldName'#6#6'Mobile'#13'Title.Caption'#6#7'Mo'
+'bile '#0#1#9'FieldName'#6#5'Email'#13'Title.Caption'#6#6'Email '#0#1#9'Fiel'
+'dName'#6#3'WWW'#13'Title.Caption'#6#4'WWW '#0#0#0#0#6'TPanel'#7'PBottom'#5
+'Align'#7#8'alBottom'#10'BevelOuter'#7#9'bvLowered'#12'ClientHeight'#3#4#1#11
+'ClientWidth'#3#222#2#11'FullRepaint'#8#8'TabOrder'#2#2#6'Height'#3#4#1#3'To'
+'p'#3#236#0#5'Width'#3#222#2#0#6'TLabel'#10'LELastName'#9'Alignment'#7#14'ta'
+'RightJustify'#7'Caption'#6#10'&Last name'#12'FocusControl'#7#9'ELastName'#6
+'Layout'#7#8'tlCenter'#4'Left'#2#8#6'Height'#2#24#3'Top'#2#8#5'Width'#3#144#0
+#0#0#6'TLabel'#11'LEFirstName'#9'Alignment'#7#14'taRightJustify'#7'Caption'#6
+#11'&First name'#12'FocusControl'#7#10'EFirstName'#6'Layout'#7#8'tlCenter'#4
+'Left'#2#8#6'Height'#2#24#3'Top'#2' '#5'Width'#3#144#0#0#0#6'TLabel'#8'LEStr'
+'eet'#9'Alignment'#7#14'taRightJustify'#7'Caption'#6#7'&Street'#12'FocusCont'
+'rol'#7#7'EStreet'#6'Layout'#7#8'tlCenter'#4'Left'#2#8#6'Height'#2#24#3'Top'
+#2'@'#5'Width'#3#144#0#0#0#6'TLabel'#5'LEZip'#9'Alignment'#7#14'taRightJusti'
+'fy'#7'Caption'#6#4'&Zip'#12'FocusControl'#7#4'EZip'#6'Layout'#7#8'tlCenter'
+#4'Left'#2#8#6'Height'#2#24#3'Top'#2'X'#5'Width'#3#144#0#0#0#6'TLabel'#6'LET'
+'own'#9'Alignment'#7#14'taRightJustify'#7'Caption'#6#5'T&own'#12'FocusContro'
+'l'#7#5'ETown'#6'Layout'#7#8'tlCenter'#4'Left'#3#8#1#6'Height'#2#24#3'Top'#2
+'X'#5'Width'#2')'#0#0#6'TLabel'#11'LETelephone'#9'Alignment'#7#14'taRightJus'
+'tify'#7'Caption'#6#10'&Telephone'#12'FocusControl'#7#10'ETelephone'#6'Layou'
+'t'#7#8'tlCenter'#4'Left'#2#8#6'Height'#2#24#3'Top'#3#144#0#5'Width'#3#144#0
+#0#0#6'TLabel'#9'LECountry'#9'Alignment'#7#14'taRightJustify'#7'Caption'#6#8
+'Countr&y'#12'FocusControl'#7#8'ECountry'#6'Layout'#7#8'tlCenter'#4'Left'#2#8
+#6'Height'#2#24#3'Top'#2'p'#5'Width'#3#144#0#0#0#6'TLabel'#5'LEFax'#9'Alignm'
+'ent'#7#14'taRightJustify'#7'Caption'#6#4'Fa&x'#12'FocusControl'#7#4'EFax'#6
+'Layout'#7#8'tlCenter'#4'Left'#3' '#1#6'Height'#2#24#3'Top'#3#144#0#5'Width'
+#2')'#0#0#6'TLabel'#8'LEMobile'#9'Alignment'#7#14'taRightJustify'#7'Caption'
+#6#7'&Mobile'#12'FocusControl'#7#7'EMobile'#6'Layout'#7#8'tlCenter'#4'Left'#3
+#216#1#6'Height'#2#24#3'Top'#3#144#0#5'Width'#2')'#0#0#6'TLabel'#7'LEEmail'#9
+'Alignment'#7#14'taRightJustify'#7'Caption'#6#6'&Email'#12'FocusControl'#7#6
+'EEmail'#6'Layout'#7#8'tlCenter'#4'Left'#2#8#6'Height'#2#24#3'Top'#3#176#0#5
+'Width'#3#144#0#0#0#6'TLabel'#5'LEWWW'#9'Alignment'#7#14'taRightJustify'#7'C'
+'aption'#6#4'&WWW'#12'FocusControl'#7#4'EWWW'#6'Layout'#7#8'tlCenter'#4'Left'
+#2#8#6'Height'#2#24#3'Top'#3#200#0#5'Width'#3#144#0#0#0#7'TDBEdit'#9'ELastNa'
+'me'#9'DataField'#6#8'LastName'#10'DataSource'#7#9'DSAddress'#10'DragCursor'
+#4#244#255#0#0#8'TabOrder'#2#0#8'TabOrder'#2#0#4'Left'#3#160#0#6'Height'#2#24
+#3'Top'#2#8#5'Width'#3'i'#1#0#0#7'TDBEdit'#10'EFirstName'#9'DataField'#6#9'F'
+'irstName'#10'DataSource'#7#9'DSAddress'#10'DragCursor'#4#244#255#0#0#8'TabO'
+'rder'#2#1#8'TabOrder'#2#1#4'Left'#3#160#0#6'Height'#2#24#3'Top'#2' '#5'Widt'
+'h'#3'i'#1#0#0#7'TDBEdit'#7'EStreet'#9'DataField'#6#6'Street'#10'DataSource'
+#7#9'DSAddress'#10'DragCursor'#4#244#255#0#0#8'TabOrder'#2#2#8'TabOrder'#2#2
+#4'Left'#3#160#0#6'Height'#2#24#3'Top'#2'@'#5'Width'#3'i'#1#0#0#7'TDBEdit'#4
+'EZip'#9'DataField'#6#3'Zip'#10'DataSource'#7#9'DSAddress'#10'DragCursor'#4
,#244#255#0#0#8'TabOrder'#2#3#8'TabOrder'#2#3#4'Left'#3#160#0#6'Height'#2#24#3
+'Top'#2'X'#5'Width'#2'Y'#0#0#7'TDBEdit'#8'ECountry'#9'DataField'#6#7'Country'
+#10'DataSource'#7#9'DSAddress'#10'DragCursor'#4#244#255#0#0#8'TabOrder'#2#5#8
+'TabOrder'#2#5#4'Left'#3#160#0#6'Height'#2#24#3'Top'#2'p'#5'Width'#3'i'#1#0#0
+#7'TDBEdit'#4'EWWW'#9'DataField'#6#3'WWW'#10'DataSource'#7#9'DSAddress'#10'D'
+'ragCursor'#4#244#255#0#0#8'TabOrder'#2#10#8'TabOrder'#2#10#4'Left'#3#160#0#6
+'Height'#2#24#3'Top'#3#200#0#5'Width'#3'i'#1#0#0#7'TDBEdit'#10'ETelephone'#9
+'DataField'#6#9'Telephone'#10'DataSource'#7#9'DSAddress'#10'DragCursor'#4#244
+#255#0#0#8'TabOrder'#2#6#8'TabOrder'#2#6#4'Left'#3#160#0#6'Height'#2#24#3'To'
+'p'#3#144#0#5'Width'#2'y'#0#0#7'TDBEdit'#4'EFax'#9'DataField'#6#3'Fax'#10'Da'
+'taSource'#7#9'DSAddress'#10'DragCursor'#4#244#255#0#0#8'TabOrder'#2#7#8'Tab'
+'Order'#2#7#4'Left'#3'P'#1#6'Height'#2#24#3'Top'#3#144#0#5'Width'#2'y'#0#0#7
+'TDBEdit'#7'EMobile'#9'DataField'#6#6'Mobile'#10'DataSource'#7#9'DSAddress'
+#10'DragCursor'#4#244#255#0#0#8'TabOrder'#2#8#8'TabOrder'#2#8#4'Left'#3#8#2#6
+'Height'#2#24#3'Top'#3#144#0#5'Width'#2'y'#0#0#7'TDBEdit'#6'EEmail'#9'DataFi'
+'eld'#6#5'Email'#10'DataSource'#7#9'DSAddress'#10'DragCursor'#4#244#255#0#0#8
+'TabOrder'#2#9#8'TabOrder'#2#9#4'Left'#3#160#0#6'Height'#2#24#3'Top'#3#176#0
+#5'Width'#3'i'#1#0#0#7'TDBEdit'#5'ETown'#9'DataField'#6#4'Town'#10'DataSourc'
+'e'#7#9'DSAddress'#10'DragCursor'#4#244#255#0#0#8'TabOrder'#2#4#8'TabOrder'#2
+#4#4'Left'#3'8'#1#6'Height'#2#24#3'Top'#2'X'#5'Width'#3#209#0#0#0#0#9'TMainM'
'TPF0'#9'TMainForm'#8'MainForm'#4'Left'#3#23#1#6'Height'#3#10#2#3'Top'#3#165#0
+#5'Width'#3#222#2#18'HorzScrollBar.Page'#3#221#2#18'VertScrollBar.Page'#3#235
+#1#13'ActiveControl'#7#4'GDBA'#7'Caption'#6#11'Addressbook'#12'ClientHeight'
+#3#236#1#11'ClientWidth'#3#222#2#11'Font.Height'#2#243#9'Font.Name'#6#13'MS '
+'Sans Serif'#4'Menu'#7#5'MMain'#7'OnClose'#7#9'FormClose'#12'OnCloseQuery'#7
+#14'FormCloseQuery'#0#6'TPanel'#4'PTop'#6'Height'#2'!'#5'Width'#3#222#2#5'Al'
+'ign'#7#5'alTop'#10'BevelOuter'#7#9'bvLowered'#12'ClientHeight'#2'!'#11'Clie'
+'ntWidth'#3#222#2#11'FullRepaint'#8#8'TabOrder'#2#0#0#12'TDBNavigator'#12'DB'
+'Navigator1'#4'Left'#3#200#1#6'Height'#2#25#3'Top'#2#4#5'Width'#3#4#1#7'Anch'
+'ors'#11#5'akTop'#7'akRight'#0#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#2
+#25#11'ClientWidth'#3#4#1#10'DataSource'#7#9'DSAddress'#8'TabOrder'#2#0#0#0#0
+#7'TDBGrid'#4'GDBA'#6'Height'#3#199#0#3'Top'#2'!'#5'Width'#3#222#2#5'Align'#7
+#8'alClient'#5'Color'#7#7'clWhite'#7'Columns'#14#1#13'Title.Caption'#6#10'Fi'
+'rst name'#5'Width'#2'u'#9'FieldName'#6#9'FirstName'#0#1#13'Title.Caption'#6
+#9'Last name'#5'Width'#2''#9'FieldName'#6#8'LastName'#0#1#13'Title.Caption'
+#6#7'Street '#5'Width'#3#131#0#9'FieldName'#6#6'Street'#0#1#13'Title.Caption'
+#6#4'Zip '#9'FieldName'#6#3'Zip'#0#1#13'Title.Caption'#6#5'Town '#5'Width'#2
+'d'#9'FieldName'#6#4'Town'#0#1#13'Title.Caption'#6#8'Country '#9'FieldName'#6
+#7'Country'#0#1#13'Title.Caption'#6#10'Telephone '#9'FieldName'#6#9'Telephon'
+'e'#0#1#13'Title.Caption'#6#4'Fax '#9'FieldName'#6#3'Fax'#0#1#13'Title.Capti'
+'on'#6#7'Mobile '#9'FieldName'#6#6'Mobile'#0#1#13'Title.Caption'#6#6'Email '
+#9'FieldName'#6#5'Email'#0#1#13'Title.Caption'#6#4'WWW '#9'FieldName'#6#3'WW'
+'W'#0#0#10'DataSource'#7#9'DSAddress'#10'FixedColor'#7#9'clBtnFace'#7'Option'
+'s'#11#9'dgEditing'#8'dgTitles'#11'dgIndicator'#14'dgColumnResize'#12'dgColu'
+'mnMove'#10'dgColLines'#10'dgRowLines'#6'dgTabs'#21'dgAlwaysShowSelection'#15
+'dgConfirmDelete'#14'dgCancelOnExit'#0#12'OptionsExtra'#11#14'dgeAutoColumns'
+#17'dgeCheckboxColumn'#0#11'ParentColor'#8#8'ReadOnly'#9#8'TabOrder'#2#1#7'T'
+'abStop'#9#0#0#6'TPanel'#7'PBottom'#6'Height'#3#4#1#3'Top'#3#232#0#5'Width'#3
+#222#2#5'Align'#7#8'alBottom'#10'BevelOuter'#7#9'bvLowered'#12'ClientHeight'
+#3#4#1#11'ClientWidth'#3#222#2#11'FullRepaint'#8#8'TabOrder'#2#2#0#6'TLabel'
+#10'LELastName'#4'Left'#2#8#6'Height'#2#17#3'Top'#2#8#5'Width'#2'Y'#9'Alignm'
+'ent'#7#14'taRightJustify'#7'Caption'#6#10'&Last name'#5'Color'#7#6'clNone'
+#12'FocusControl'#7#9'ELastName'#6'Layout'#7#8'tlCenter'#11'ParentColor'#8#0
+#0#6'TLabel'#11'LEFirstName'#4'Left'#2#8#6'Height'#2#17#3'Top'#2' '#5'Width'
+#2'Y'#9'Alignment'#7#14'taRightJustify'#7'Caption'#6#11'&First name'#5'Color'
+#7#6'clNone'#12'FocusControl'#7#10'EFirstName'#6'Layout'#7#8'tlCenter'#11'Pa'
+'rentColor'#8#0#0#6'TLabel'#8'LEStreet'#4'Left'#2#8#6'Height'#2#17#3'Top'#2
+'@'#5'Width'#2'8'#9'Alignment'#7#14'taRightJustify'#7'Caption'#6#7'&Street'#5
+'Color'#7#6'clNone'#12'FocusControl'#7#7'EStreet'#6'Layout'#7#8'tlCenter'#11
+'ParentColor'#8#0#0#6'TLabel'#5'LEZip'#4'Left'#2#8#6'Height'#2#17#3'Top'#2'X'
+#5'Width'#2'"'#9'Alignment'#7#14'taRightJustify'#7'Caption'#6#4'&Zip'#5'Colo'
+'r'#7#6'clNone'#12'FocusControl'#7#4'EZip'#6'Layout'#7#8'tlCenter'#11'Parent'
+'Color'#8#0#0#6'TLabel'#6'LETown'#4'Left'#3#8#1#6'Height'#2#17#3'Top'#2'X'#5
+'Width'#2'4'#9'Alignment'#7#14'taRightJustify'#7'Caption'#6#5'T&own'#5'Color'
+#7#6'clNone'#12'FocusControl'#7#5'ETown'#6'Layout'#7#8'tlCenter'#11'ParentCo'
+'lor'#8#0#0#6'TLabel'#11'LETelephone'#4'Left'#2#8#6'Height'#2#17#3'Top'#3#144
+#0#5'Width'#2'X'#9'Alignment'#7#14'taRightJustify'#7'Caption'#6#10'&Telephon'
+'e'#5'Color'#7#6'clNone'#12'FocusControl'#7#10'ETelephone'#6'Layout'#7#8'tlC'
+'enter'#11'ParentColor'#8#0#0#6'TLabel'#9'LECountry'#4'Left'#2#8#6'Height'#2
+#17#3'Top'#2'p'#5'Width'#2'E'#9'Alignment'#7#14'taRightJustify'#7'Caption'#6
+#8'Countr&y'#5'Color'#7#6'clNone'#12'FocusControl'#7#8'ECountry'#6'Layout'#7
+#8'tlCenter'#11'ParentColor'#8#0#0#6'TLabel'#5'LEFax'#4'Left'#3' '#1#6'Heigh'
+'t'#2#17#3'Top'#3#144#0#5'Width'#2''''#9'Alignment'#7#14'taRightJustify'#7'C'
+'aption'#6#4'Fa&x'#5'Color'#7#6'clNone'#12'FocusControl'#7#4'EFax'#6'Layout'
+#7#8'tlCenter'#11'ParentColor'#8#0#0#6'TLabel'#8'LEMobile'#4'Left'#3#216#1#6
+'Height'#2#17#3'Top'#3#144#0#5'Width'#2':'#9'Alignment'#7#14'taRightJustify'
+#7'Caption'#6#7'&Mobile'#5'Color'#7#6'clNone'#12'FocusControl'#7#7'EMobile'#6
+'Layout'#7#8'tlCenter'#11'ParentColor'#8#0#0#6'TLabel'#7'LEEmail'#4'Left'#2#8
+#6'Height'#2#17#3'Top'#3#176#0#5'Width'#2'4'#9'Alignment'#7#14'taRightJustif'
+'y'#7'Caption'#6#6'&Email'#5'Color'#7#6'clNone'#12'FocusControl'#7#6'EEmail'
+#6'Layout'#7#8'tlCenter'#11'ParentColor'#8#0#0#6'TLabel'#5'LEWWW'#4'Left'#2#8
+#6'Height'#2#17#3'Top'#3#200#0#5'Width'#2'9'#9'Alignment'#7#14'taRightJustif'
+'y'#7'Caption'#6#4'&WWW'#5'Color'#7#6'clNone'#12'FocusControl'#7#4'EWWW'#6'L'
+'ayout'#7#8'tlCenter'#11'ParentColor'#8#0#0#7'TDBEdit'#9'ELastName'#4'Left'#3
,#160#0#6'Height'#2#24#3'Top'#2#8#5'Width'#3'i'#1#9'DataField'#6#8'LastName'
+#10'DataSource'#7#9'DSAddress'#11'ParentColor'#8#8'TabOrder'#2#0#0#0#7'TDBEd'
+'it'#10'EFirstName'#4'Left'#3#160#0#6'Height'#2#24#3'Top'#2' '#5'Width'#3'i'
+#1#9'DataField'#6#9'FirstName'#10'DataSource'#7#9'DSAddress'#11'ParentColor'
+#8#8'TabOrder'#2#1#0#0#7'TDBEdit'#7'EStreet'#4'Left'#3#160#0#6'Height'#2#24#3
+'Top'#2'@'#5'Width'#3'i'#1#9'DataField'#6#6'Street'#10'DataSource'#7#9'DSAdd'
+'ress'#11'ParentColor'#8#8'TabOrder'#2#2#0#0#7'TDBEdit'#4'EZip'#4'Left'#3#160
+#0#6'Height'#2#24#3'Top'#2'X'#5'Width'#2'Y'#9'DataField'#6#3'Zip'#10'DataSou'
+'rce'#7#9'DSAddress'#11'ParentColor'#8#8'TabOrder'#2#3#0#0#7'TDBEdit'#8'ECou'
+'ntry'#4'Left'#3#160#0#6'Height'#2#24#3'Top'#2'p'#5'Width'#3'i'#1#9'DataFiel'
+'d'#6#7'Country'#10'DataSource'#7#9'DSAddress'#11'ParentColor'#8#8'TabOrder'
+#2#5#0#0#7'TDBEdit'#4'EWWW'#4'Left'#3#160#0#6'Height'#2#24#3'Top'#3#200#0#5
+'Width'#3'i'#1#9'DataField'#6#3'WWW'#10'DataSource'#7#9'DSAddress'#11'Parent'
+'Color'#8#8'TabOrder'#2#10#0#0#7'TDBEdit'#10'ETelephone'#4'Left'#3#160#0#6'H'
+'eight'#2#24#3'Top'#3#144#0#5'Width'#2'y'#9'DataField'#6#9'Telephone'#10'Dat'
+'aSource'#7#9'DSAddress'#11'ParentColor'#8#8'TabOrder'#2#6#0#0#7'TDBEdit'#4
+'EFax'#4'Left'#3'P'#1#6'Height'#2#24#3'Top'#3#144#0#5'Width'#2'y'#9'DataFiel'
+'d'#6#3'Fax'#10'DataSource'#7#9'DSAddress'#11'ParentColor'#8#8'TabOrder'#2#7
+#0#0#7'TDBEdit'#7'EMobile'#4'Left'#3#8#2#6'Height'#2#24#3'Top'#3#144#0#5'Wid'
+'th'#2'y'#9'DataField'#6#6'Mobile'#10'DataSource'#7#9'DSAddress'#11'ParentCo'
+'lor'#8#8'TabOrder'#2#8#0#0#7'TDBEdit'#6'EEmail'#4'Left'#3#160#0#6'Height'#2
+#24#3'Top'#3#176#0#5'Width'#3'i'#1#9'DataField'#6#5'Email'#10'DataSource'#7#9
+'DSAddress'#11'ParentColor'#8#8'TabOrder'#2#9#0#0#7'TDBEdit'#5'ETown'#4'Left'
+#3'@'#1#6'Height'#2#24#3'Top'#2'X'#5'Width'#3#201#0#9'DataField'#6#4'Town'#10
+'DataSource'#7#9'DSAddress'#11'ParentColor'#8#8'TabOrder'#2#4#0#0#0#9'TMainM'
+'enu'#5'MMain'#4'left'#2'@'#3'top'#2'H'#0#9'TMenuItem'#5'MFile'#7'Caption'#6
+#5'&File'#0#9'TMenuItem'#5'MINew'#6'Action'#7#4'ANew'#7'OnClick'#7#11'ANewEx'
+'ecute'#0#0#9'TMenuItem'#6'MIOpen'#6'Action'#7#5'AOpen'#7'OnClick'#7#12'AOpe'
@ -90,13 +97,17 @@ LazarusResources.Add('TMainForm','FORMDATA',[
+'ACloseExecute'#0#0#9'TMenuItem'#2'N1'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#6
+'MIQuit'#6'Action'#7#5'AQuit'#7'OnClick'#7#12'AQuitExecute'#0#0#0#9'TMenuIte'
+'m'#7'Record1'#7'Caption'#6#7'&Record'#0#9'TMenuItem'#7'MIFirst'#6'Action'#7
+#6'AFirst'#0#0#9'TMenuItem'#6'MILAst'#6'Action'#7#5'ALast'#0#0#9'TMenuItem'#7
+'MIPrior'#6'Action'#7#6'APrior'#0#0#9'TMenuItem'#6'MINext'#6'Action'#7#5'ANe'
+'xt'#0#0#9'TMenuItem'#2'N2'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#8'MIInsert'#6
+'Action'#7#7'AInsert'#0#0#9'TMenuItem'#6'MIEdit'#6'Action'#7#5'AEdit'#0#0#9
+'TMenuItem'#8'MIDelete'#6'Action'#7#7'ADelete'#0#0#9'TMenuItem'#6'MIPost'#6
+'Action'#7#5'APost'#0#0#9'TMenuItem'#8'MICancel'#6'Action'#7#7'ACancel'#0#0#9
+'TMenuItem'#9'MIRefresh'#6'Action'#7#8'ARefresh'#0#0#0#0#11'TActionList'#6'A'
+#6'AFirst'#7'OnClick'#7#12'DoDataAction'#0#0#9'TMenuItem'#6'MILAst'#6'Action'
+#7#5'ALast'#7'OnClick'#7#12'DoDataAction'#0#0#9'TMenuItem'#7'MIPrior'#6'Acti'
+'on'#7#6'APrior'#7'OnClick'#7#12'DoDataAction'#0#0#9'TMenuItem'#6'MINext'#6
+'Action'#7#5'ANext'#7'OnClick'#7#12'DoDataAction'#0#0#9'TMenuItem'#2'N2'#7'C'
+'aption'#6#1'-'#0#0#9'TMenuItem'#8'MIInsert'#6'Action'#7#7'AInsert'#7'OnClic'
+'k'#7#12'DoDataAction'#0#0#9'TMenuItem'#6'MIEdit'#6'Action'#7#5'AEdit'#7'OnC'
+'lick'#7#12'DoDataAction'#0#0#9'TMenuItem'#8'MIDelete'#6'Action'#7#7'ADelete'
+#7'OnClick'#7#12'DoDataAction'#0#0#9'TMenuItem'#6'MIPost'#6'Action'#7#5'APos'
+'t'#7'OnClick'#7#12'DoDataAction'#0#0#9'TMenuItem'#8'MICancel'#6'Action'#7#7
+'ACancel'#7'OnClick'#7#12'DoDataAction'#0#0#9'TMenuItem'#9'MIRefresh'#6'Acti'
+'on'#7#8'ARefresh'#7'OnClick'#7#12'DoDataAction'#0#0#0#0#11'TActionList'#6'A'
+'LMain'#4'left'#2'@'#3'top'#2'p'#0#7'TAction'#4'ANew'#7'Caption'#6#4'&New'#8
+'HelpType'#7#9'htKeyword'#9'OnExecute'#7#11'ANewExecute'#0#0#7'TAction'#5'AO'
+'pen'#7'Caption'#6#5'&Open'#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7#12'AOp'
@ -104,38 +115,38 @@ LazarusResources.Add('TMainForm','FORMDATA',[
+#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7#13'ACloseExecute'#8'OnUpdate'#7#12
+'ACloseUpdate'#0#0#7'TAction'#5'AQuit'#7'Caption'#6#5'&Quit'#8'HelpType'#7#9
+'htKeyword'#9'OnExecute'#7#12'AQuitExecute'#8'ShortCut'#3'Q@'#0#0#7'TAction'
+#6'AFirst'#7'Caption'#6#6'&First'#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7
+#12'DoDataAction'#8'OnUpdate'#7#8'DataOpen'#8'ShortCut'#3'F@'#8'Category'#6#7
+'Dataset'#0#0#7'TAction'#6'APrior'#7'Caption'#6#6'&Prior'#8'HelpType'#7#9'ht'
+'Keyword'#9'OnExecute'#7#12'DoDataAction'#8'OnUpdate'#7#8'DataOpen'#8'Catego'
+'ry'#6#7'Dataset'#3'Tag'#2#1#0#0#7'TAction'#5'ANext'#7'Caption'#6#5'&Next'#8
+'HelpType'#7#9'htKeyword'#9'OnExecute'#7#12'DoDataAction'#8'OnUpdate'#7#8'Da'
+'taOpen'#8'Category'#6#7'Dataset'#3'Tag'#2#2#0#0#7'TAction'#5'ALast'#7'Capti'
+'on'#6#5'&Last'#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7#12'DoDataAction'#8
+'OnUpdate'#7#8'DataOpen'#8'ShortCut'#3'L@'#8'Category'#6#7'Dataset'#3'Tag'#2
+#3#0#0#7'TAction'#7'AInsert'#7'Caption'#6#7'&Insert'#8'HelpType'#7#9'htKeywo'
+'rd'#9'OnExecute'#7#12'DoDataAction'#8'OnUpdate'#7#8'DataOpen'#8'ShortCut'#3
+'N@'#8'Category'#6#7'Dataset'#3'Tag'#2#4#0#0#7'TAction'#7'ADelete'#7'Caption'
+#6#7'&Delete'#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7#12'DoDataAction'#8'O'
+'nUpdate'#7#16'HaveDataNotEmpty'#8'ShortCut'#3'D@'#8'Category'#6#7'Dataset'#3
+'Tag'#2#5#0#0#7'TAction'#5'AEdit'#7'Caption'#6#5'&Edit'#8'HelpType'#7#9'htKe'
+'yword'#9'OnExecute'#7#12'DoDataAction'#8'OnUpdate'#7#16'HaveDataNotEmpty'#8
+'ShortCut'#2'q'#8'Category'#6#7'Dataset'#3'Tag'#2#6#0#0#7'TAction'#5'APost'#7
+'Caption'#6#5'P&ost'#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7#12'DoDataActi'
+'on'#8'OnUpdate'#7#10'InEditMode'#8'ShortCut'#3'S@'#8'Category'#6#7'Dataset'
+#3'Tag'#2#7#0#0#7'TAction'#7'ACancel'#7'Caption'#6#7'&Cancel'#8'HelpType'#7#9
+'htKeyword'#9'OnExecute'#7#12'DoDataAction'#8'OnUpdate'#7#10'InEditMode'#8'C'
+'ategory'#6#7'Dataset'#3'Tag'#2#8#0#0#7'TAction'#8'ARefresh'#7'Caption'#6#8
+'&Refresh'#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7#12'DoDataAction'#8'OnUp'
,'date'#7#8'DataOpen'#8'ShortCut'#2't'#8'Category'#6#7'Dataset'#0#0#0#4'TDbf'
+#3'DBA'#9'IndexDefs'#14#0#9'StoreDefs'#9#10'TableLevel'#2#4#11'AfterInsert'#7
+#14'DBAAfterInsert'#4'left'#2'`'#3'top'#2'p'#0#0#11'TSaveDialog'#5'SDDBA'#7
+'Options'#11#14'ofHideReadOnly'#15'ofPathMustExist'#14'ofEnableSizing'#0#5'T'
+'itle'#6#12'Save file as'#10'DefaultExt'#6#4'.dbf'#6'Filter'#6#29'DBF files|'
+'*.dbf|All files|*.*'#11'FilterIndex'#2#0#4'left'#2'`'#3'top'#3#144#0#0#0#11
+'TOpenDialog'#5'ODDBA'#7'Options'#11#14'ofHideReadOnly'#15'ofFileMustExist'
+#14'ofEnableSizing'#0#5'Title'#6#18'Open existing file'#10'DefaultExt'#6#4'.'
+'dbf'#6'Filter'#6#29'DBF files|*.dbf|All files|*.*'#11'FilterIndex'#2#0#4'le'
+#6'AFirst'#8'Category'#6#7'Dataset'#7'Caption'#6#6'&First'#8'HelpType'#7#9'h'
+'tKeyword'#9'OnExecute'#7#12'DoDataAction'#8'OnUpdate'#7#8'DataOpen'#8'Short'
+'Cut'#3'F@'#0#0#7'TAction'#6'APrior'#3'Tag'#2#1#8'Category'#6#7'Dataset'#7'C'
+'aption'#6#6'&Prior'#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7#12'DoDataActi'
+'on'#8'OnUpdate'#7#8'DataOpen'#0#0#7'TAction'#5'ANext'#3'Tag'#2#2#8'Category'
+#6#7'Dataset'#7'Caption'#6#5'&Next'#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7
+#12'DoDataAction'#8'OnUpdate'#7#8'DataOpen'#0#0#7'TAction'#5'ALast'#3'Tag'#2
+#3#8'Category'#6#7'Dataset'#7'Caption'#6#5'&Last'#8'HelpType'#7#9'htKeyword'
+#9'OnExecute'#7#12'DoDataAction'#8'OnUpdate'#7#8'DataOpen'#8'ShortCut'#3'L@'
+#0#0#7'TAction'#7'AInsert'#3'Tag'#2#4#8'Category'#6#7'Dataset'#7'Caption'#6#7
+'&Insert'#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7#12'DoDataAction'#8'OnUpd'
+'ate'#7#8'DataOpen'#8'ShortCut'#3'N@'#0#0#7'TAction'#7'ADelete'#3'Tag'#2#5#8
+'Category'#6#7'Dataset'#7'Caption'#6#7'&Delete'#8'HelpType'#7#9'htKeyword'#9
+'OnExecute'#7#12'DoDataAction'#8'OnUpdate'#7#16'HaveDataNotEmpty'#8'ShortCut'
,#3'D@'#0#0#7'TAction'#5'AEdit'#3'Tag'#2#6#8'Category'#6#7'Dataset'#7'Caption'
+#6#5'&Edit'#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7#12'DoDataAction'#8'OnU'
+'pdate'#7#16'HaveDataNotEmpty'#8'ShortCut'#2'q'#0#0#7'TAction'#5'APost'#3'Ta'
+'g'#2#7#8'Category'#6#7'Dataset'#7'Caption'#6#5'P&ost'#8'HelpType'#7#9'htKey'
+'word'#9'OnExecute'#7#12'DoDataAction'#8'OnUpdate'#7#10'InEditMode'#8'ShortC'
+'ut'#3'S@'#0#0#7'TAction'#7'ACancel'#3'Tag'#2#8#8'Category'#6#7'Dataset'#7'C'
+'aption'#6#7'&Cancel'#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7#12'DoDataAct'
+'ion'#8'OnUpdate'#7#10'InEditMode'#0#0#7'TAction'#8'ARefresh'#8'Category'#6#7
+'Dataset'#7'Caption'#6#8'&Refresh'#8'HelpType'#7#9'htKeyword'#9'OnExecute'#7
+#12'DoDataAction'#8'OnUpdate'#7#8'DataOpen'#8'ShortCut'#2't'#0#0#0#4'TDbf'#3
+'DBA'#9'IndexDefs'#14#0#9'StoreDefs'#9#10'TableLevel'#2#4#11'AfterInsert'#7
+#14'DBAAfterInsert'#4'left'#2'`'#3'top'#2'p'#0#0#11'TSaveDialog'#5'SDDBA'#5
+'Title'#6#12'Save file as'#10'DefaultExt'#6#4'.dbf'#6'Filter'#6#29'DBF files'
+'|*.dbf|All files|*.*'#11'FilterIndex'#2#0#7'Options'#11#14'ofHideReadOnly'
+#15'ofPathMustExist'#14'ofEnableSizing'#0#4'left'#2'`'#3'top'#3#144#0#0#0#11
+'TOpenDialog'#5'ODDBA'#5'Title'#6#18'Open existing file'#10'DefaultExt'#6#4
+'.dbf'#6'Filter'#6#29'DBF files|*.dbf|All files|*.*'#11'FilterIndex'#2#0#7'O'
+'ptions'#11#14'ofHideReadOnly'#15'ofFileMustExist'#14'ofEnableSizing'#0#4'le'
+'ft'#2'@'#3'top'#3#144#0#0#0#11'TDatasource'#9'DSAddress'#7'DataSet'#7#3'DBA'
+#4'left'#3#128#0#3'top'#2'p'#0#0#0
]);

Binary file not shown.

Binary file not shown.

View File

@ -13,28 +13,6 @@
<Title Value="project1"/>
<ActiveEditorIndexAtStart Value="0"/>
</General>
<Units Count="2">
<Unit0>
<CursorPos X="44" Y="15"/>
<Filename Value="fontenumeration.lpr"/>
<IsPartOfProject Value="True"/>
<TopLine Value="1"/>
<UnitName Value="fontenumeration"/>
<UsageCount Value="158"/>
</Unit0>
<Unit1>
<CursorPos X="55" Y="554"/>
<EditorIndex Value="0"/>
<Filename Value="mainunit.pas"/>
<ComponentName Value="frmMain"/>
<IsPartOfProject Value="True"/>
<Loaded Value="True"/>
<ResourceFilename Value="mainunit.lrs"/>
<TopLine Value="118"/>
<UnitName Value="mainunit"/>
<UsageCount Value="158"/>
</Unit1>
</Units>
<PublishOptions>
<Version Value="2"/>
<DestinationDirectory Value="$(ProjPath)/published"/>
@ -53,6 +31,28 @@
<PackageName Value="LCL"/>
</Item1>
</RequiredPackages>
<Units Count="2">
<Unit0>
<Filename Value="fontenumeration.lpr"/>
<IsPartOfProject Value="True"/>
<UnitName Value="fontenumeration"/>
<CursorPos X="44" Y="15"/>
<TopLine Value="1"/>
<UsageCount Value="158"/>
</Unit0>
<Unit1>
<Filename Value="mainunit.pas"/>
<ComponentName Value="frmMain"/>
<IsPartOfProject Value="True"/>
<ResourceFilename Value="mainunit.lrs"/>
<UnitName Value="mainunit"/>
<CursorPos X="55" Y="554"/>
<TopLine Value="118"/>
<EditorIndex Value="0"/>
<UsageCount Value="158"/>
<Loaded Value="True"/>
</Unit1>
</Units>
<JumpHistory Count="0" HistoryIndex="-1"/>
</ProjectOptions>
<CompilerOptions>

View File

@ -1,174 +1,186 @@
object frmMain: TfrmMain
Left = 563
Height = 440
Top = 356
Width = 714
HorzScrollBar.Page = 713
VertScrollBar.Page = 439
ActiveControl = lbFamily
Caption = 'frmMain'
ClientHeight = 440
ClientWidth = 714
OnCloseQuery = FormCloseQuery
OnCreate = FormCreate
OnShow = FormShow
PixelsPerInch = 75
ShowHint = True
HorzScrollBar.Page = 713
VertScrollBar.Page = 439
Left = 33
Height = 440
Top = 28
Width = 714
object Label3: TLabel
Left = 548
Height = 17
Top = 257
Width = 36
Caption = 'Filtro'
Color = clNone
Left = 548
Height = 12
Top = 257
Width = 28
ParentColor = False
end
object Label4: TLabel
Left = 216
Height = 17
Top = 16
Width = 94
Caption = 'Face font list'
Color = clNone
Left = 216
Height = 12
Top = 16
Width = 72
ParentColor = False
end
object Label5: TLabel
Left = 424
Height = 17
Top = 11
Width = 45
Caption = 'Styles'
Color = clNone
Left = 424
Height = 12
Top = 11
Width = 34
ParentColor = False
end
object Sizes: TLabel
Left = 648
Height = 17
Top = 11
Width = 40
Caption = 'Sizes'
Color = clNone
Left = 648
Height = 12
Top = 11
Width = 30
ParentColor = False
end
object lblCharset: TLabel
Left = 424
Height = 17
Top = 176
Width = 73
Caption = 'lblCharset'
Color = clNone
Left = 424
Height = 12
Top = 176
Width = 43
ParentColor = False
end
object Label6: TLabel
Left = 11
Height = 17
Top = 16
Width = 36
Caption = 'Filter'
Color = clNone
Left = 11
Height = 12
Top = 16
Width = 28
ParentColor = False
end
object lbFamily: TListBox
OnClick = lbFamilyClick
TabOrder = 0
TopIndex = -1
Left = 216
Height = 272
Top = 32
Width = 200
OnClick = lbFamilyClick
TabOrder = 0
TopIndex = -1
end
object cbCharset: TComboBox
MaxLength = 0
TabOrder = 1
Text = 'ANSI_CHARSET'
Left = 8
Height = 21
Top = 37
Width = 194
AutoCompleteText = [cbactEndOfLineComplete, cbactSearchAscending]
MaxLength = 0
TabOrder = 1
Text = 'ANSI_CHARSET'
end
object Button2: TButton
Caption = 'apply filter'
OnClick = Button2Click
TabOrder = 2
Left = 8
Height = 25
Top = 96
Width = 75
BorderSpacing.InnerBorder = 4
Caption = 'apply filter'
OnClick = Button2Click
TabOrder = 2
end
object lbStyles: TListBox
OnClick = lbStylesClick
TabOrder = 3
TopIndex = -1
Left = 424
Height = 128
Top = 32
Width = 208
OnClick = lbStylesClick
TabOrder = 3
TopIndex = -1
end
object lbSizes: TListBox
OnClick = lbSizesClick
TabOrder = 4
TopIndex = -1
Left = 640
Height = 272
Top = 32
Width = 56
OnClick = lbSizesClick
TabOrder = 4
TopIndex = -1
end
object lbCharset: TListBox
OnClick = lbCharsetClick
TabOrder = 5
TopIndex = -1
Left = 424
Height = 112
Top = 192
Width = 208
OnClick = lbCharsetClick
TabOrder = 5
TopIndex = -1
end
object cbPitch: TComboBox
Left = 8
Height = 21
Top = 61
Width = 194
AutoCompleteText = [cbactEndOfLineComplete, cbactSearchAscending]
ItemIndex = 0
Items.Strings = (
'DEFAULT_PITCH'
'FIXED_PITCH'
'VARIABLE_PITCH'
'MONO_FONT'
)
ItemIndex = 0
MaxLength = 0
TabOrder = 6
Text = 'DEFAULT_PITCH'
Left = 8
Height = 21
Top = 61
Width = 194
end
object BtnFontDlg: TButton
Caption = 'Font Dlg'
OnClick = BtnFontDlgClick
TabOrder = 7
Left = 56
Height = 40
Top = 368
Width = 152
BorderSpacing.InnerBorder = 4
Caption = 'Font Dlg'
OnClick = BtnFontDlgClick
TabOrder = 7
end
object chkStrike: TCheckBox
Left = 591
Height = 24
Top = 312
Width = 88
Caption = 'Strikeout'
TabOrder = 8
Left = 591
Height = 21
Top = 312
Width = 73
end
object chkUnderLine: TCheckBox
Left = 592
Height = 24
Top = 336
Width = 98
Caption = 'UnderLine'
TabOrder = 9
Left = 592
Height = 21
Top = 336
Width = 82
end
object Button1: TButton
Caption = 'Reset Sample Text'
OnClick = Button1Click
TabOrder = 10
Left = 56
Height = 41
Top = 312
Width = 153
BorderSpacing.InnerBorder = 4
Caption = 'Reset Sample Text'
OnClick = Button1Click
TabOrder = 10
end
object grid: TStringGrid
Left = 216
Height = 120
Top = 312
Width = 368
AutoFillColumns = True
ColCount = 1
DefaultRowHeight = 17
@ -179,15 +191,10 @@ object frmMain: TfrmMain
Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goEditing, goSmoothScroll]
RowCount = 5
ScrollBars = ssAutoBoth
VisibleColCount = 1
VisibleRowCount = 5
Left = 216
Height = 120
Top = 312
Width = 368
TabOrder = 11
TabStop = True
end
object FontDialog1: TFontDialog
Title = 'Select a font'
Title = 'Select a font'
left = 312
top = 384

View File

@ -1,49 +1,55 @@
{ Das ist eine automatisch erzeugte Lazarus-Ressourcendatei }
LazarusResources.Add('TfrmMain','FORMDATA',[
'TPF0'#8'TfrmMain'#7'frmMain'#7'Caption'#6#7'frmMain'#12'ClientHeight'#3#184#1
+#11'ClientWidth'#3#202#2#12'OnCloseQuery'#7#14'FormCloseQuery'#8'OnCreate'#7
+#10'FormCreate'#6'OnShow'#7#8'FormShow'#13'PixelsPerInch'#2'K'#8'ShowHint'#9
+#18'HorzScrollBar.Page'#3#201#2#18'VertScrollBar.Page'#3#183#1#4'Left'#2'!'#6
+'Height'#3#184#1#3'Top'#2#28#5'Width'#3#202#2#0#6'TLabel'#6'Label3'#7'Captio'
+'n'#6#6'Filtro'#5'Color'#7#6'clNone'#4'Left'#3'$'#2#6'Height'#2#12#3'Top'#3#1
+#1#5'Width'#2#28#0#0#6'TLabel'#6'Label4'#7'Caption'#6#14'Face font list'#5'C'
+'olor'#7#6'clNone'#4'Left'#3#216#0#6'Height'#2#12#3'Top'#2#16#5'Width'#2'H'#0
+#0#6'TLabel'#6'Label5'#7'Caption'#6#6'Styles'#5'Color'#7#6'clNone'#4'Left'#3
+#168#1#6'Height'#2#12#3'Top'#2#11#5'Width'#2'"'#0#0#6'TLabel'#5'Sizes'#7'Cap'
+'tion'#6#5'Sizes'#5'Color'#7#6'clNone'#4'Left'#3#136#2#6'Height'#2#12#3'Top'
+#2#11#5'Width'#2#30#0#0#6'TLabel'#10'lblCharset'#7'Caption'#6#10'lblCharset'
+#5'Color'#7#6'clNone'#4'Left'#3#168#1#6'Height'#2#12#3'Top'#3#176#0#5'Width'
+#2'+'#0#0#6'TLabel'#6'Label6'#7'Caption'#6#6'Filter'#5'Color'#7#6'clNone'#4
+'Left'#2#11#6'Height'#2#12#3'Top'#2#16#5'Width'#2#28#0#0#8'TListBox'#8'lbFam'
+'ily'#7'OnClick'#7#13'lbFamilyClick'#8'TabOrder'#2#0#8'TopIndex'#2#255#4'Lef'
+'t'#3#216#0#6'Height'#3#16#1#3'Top'#2' '#5'Width'#3#200#0#0#0#9'TComboBox'#9
+'cbCharset'#9'MaxLength'#2#0#8'TabOrder'#2#1#4'Text'#6#12'ANSI_CHARSET'#4'Le'
+'ft'#2#8#6'Height'#2#21#3'Top'#2'%'#5'Width'#3#194#0#0#0#7'TButton'#7'Button'
+'2'#7'Caption'#6#12'apply filter'#7'OnClick'#7#12'Button2Click'#8'TabOrder'#2
+#2#4'Left'#2#8#6'Height'#2#25#3'Top'#2'`'#5'Width'#2'K'#0#0#8'TListBox'#8'lb'
+'Styles'#7'OnClick'#7#13'lbStylesClick'#8'TabOrder'#2#3#8'TopIndex'#2#255#4
+'Left'#3#168#1#6'Height'#3#128#0#3'Top'#2' '#5'Width'#3#208#0#0#0#8'TListBox'
+#7'lbSizes'#7'OnClick'#7#12'lbSizesClick'#8'TabOrder'#2#4#8'TopIndex'#2#255#4
+'Left'#3#128#2#6'Height'#3#16#1#3'Top'#2' '#5'Width'#2'8'#0#0#8'TListBox'#9
+'lbCharset'#7'OnClick'#7#14'lbCharsetClick'#8'TabOrder'#2#5#8'TopIndex'#2#255
+#4'Left'#3#168#1#6'Height'#2'p'#3'Top'#3#192#0#5'Width'#3#208#0#0#0#9'TCombo'
+'Box'#7'cbPitch'#13'Items.Strings'#1#6#13'DEFAULT_PITCH'#6#11'FIXED_PITCH'#6
+#14'VARIABLE_PITCH'#6#9'MONO_FONT'#0#9'ItemIndex'#2#0#9'MaxLength'#2#0#8'Tab'
+'Order'#2#6#4'Text'#6#13'DEFAULT_PITCH'#4'Left'#2#8#6'Height'#2#21#3'Top'#2
+'='#5'Width'#3#194#0#0#0#7'TButton'#10'BtnFontDlg'#7'Caption'#6#8'Font Dlg'#7
+'OnClick'#7#15'BtnFontDlgClick'#8'TabOrder'#2#7#4'Left'#2'8'#6'Height'#2'('#3
+'Top'#3'p'#1#5'Width'#3#152#0#0#0#9'TCheckBox'#9'chkStrike'#7'Caption'#6#9'S'
+'trikeout'#8'TabOrder'#2#8#4'Left'#3'O'#2#6'Height'#2#21#3'Top'#3'8'#1#5'Wid'
+'th'#2'I'#0#0#9'TCheckBox'#12'chkUnderLine'#7'Caption'#6#9'UnderLine'#8'TabO'
+'rder'#2#9#4'Left'#3'P'#2#6'Height'#2#21#3'Top'#3'P'#1#5'Width'#2'R'#0#0#7'T'
+'Button'#7'Button1'#7'Caption'#6#17'Reset Sample Text'#7'OnClick'#7#12'Butto'
+'n1Click'#8'TabOrder'#2#10#4'Left'#2'8'#6'Height'#2')'#3'Top'#3'8'#1#5'Width'
+#3#153#0#0#0#11'TStringGrid'#4'grid'#15'AutoFillColumns'#9#8'ColCount'#2#1#16
+'DefaultRowHeight'#2#17#10'FixedColor'#7#9'clBtnFace'#9'FixedCols'#2#0#9'Fix'
+'edRows'#2#0#13'GridLineWidth'#2#0#7'Options'#11#15'goFixedVertLine'#15'goFi'
+'xedHorzLine'#10'goVertLine'#10'goHorzLine'#13'goRangeSelect'#9'goEditing'#14
+'goSmoothScroll'#0#8'RowCount'#2#5#10'ScrollBars'#7#10'ssAutoBoth'#15'Visibl'
+'eColCount'#2#1#15'VisibleRowCount'#2#5#4'Left'#3#216#0#6'Height'#2'x'#3'Top'
+#3'8'#1#5'Width'#3'p'#1#0#0#11'TFontDialog'#11'FontDialog1'#5'Title'#6#13'Se'
+'lect a font'#5'Title'#6#13'Select a font'#4'left'#3'8'#1#3'top'#3#128#1#0#0
+#0
'TPF0'#8'TfrmMain'#7'frmMain'#4'Left'#3'3'#2#6'Height'#3#184#1#3'Top'#3'd'#1#5
+'Width'#3#202#2#18'HorzScrollBar.Page'#3#201#2#18'VertScrollBar.Page'#3#183#1
+#13'ActiveControl'#7#8'lbFamily'#7'Caption'#6#7'frmMain'#12'ClientHeight'#3
+#184#1#11'ClientWidth'#3#202#2#12'OnCloseQuery'#7#14'FormCloseQuery'#8'OnCre'
+'ate'#7#10'FormCreate'#6'OnShow'#7#8'FormShow'#8'ShowHint'#9#0#6'TLabel'#6'L'
+'abel3'#4'Left'#3'$'#2#6'Height'#2#17#3'Top'#3#1#1#5'Width'#2'$'#7'Caption'#6
+#6'Filtro'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0#6'TLabel'#6'Label4'#4
+'Left'#3#216#0#6'Height'#2#17#3'Top'#2#16#5'Width'#2'^'#7'Caption'#6#14'Face'
+' font list'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0#6'TLabel'#6'Label5'#4
+'Left'#3#168#1#6'Height'#2#17#3'Top'#2#11#5'Width'#2'-'#7'Caption'#6#6'Style'
+'s'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0#6'TLabel'#5'Sizes'#4'Left'#3
+#136#2#6'Height'#2#17#3'Top'#2#11#5'Width'#2'('#7'Caption'#6#5'Sizes'#5'Colo'
+'r'#7#6'clNone'#11'ParentColor'#8#0#0#6'TLabel'#10'lblCharset'#4'Left'#3#168
+#1#6'Height'#2#17#3'Top'#3#176#0#5'Width'#2'I'#7'Caption'#6#10'lblCharset'#5
+'Color'#7#6'clNone'#11'ParentColor'#8#0#0#6'TLabel'#6'Label6'#4'Left'#2#11#6
+'Height'#2#17#3'Top'#2#16#5'Width'#2'$'#7'Caption'#6#6'Filter'#5'Color'#7#6
+'clNone'#11'ParentColor'#8#0#0#8'TListBox'#8'lbFamily'#4'Left'#3#216#0#6'Hei'
+'ght'#3#16#1#3'Top'#2' '#5'Width'#3#200#0#7'OnClick'#7#13'lbFamilyClick'#8'T'
+'abOrder'#2#0#8'TopIndex'#2#255#0#0#9'TComboBox'#9'cbCharset'#4'Left'#2#8#6
+'Height'#2#21#3'Top'#2'%'#5'Width'#3#194#0#16'AutoCompleteText'#11#22'cbactE'
+'ndOfLineComplete'#20'cbactSearchAscending'#0#9'MaxLength'#2#0#8'TabOrder'#2
+#1#4'Text'#6#12'ANSI_CHARSET'#0#0#7'TButton'#7'Button2'#4'Left'#2#8#6'Height'
+#2#25#3'Top'#2'`'#5'Width'#2'K'#25'BorderSpacing.InnerBorder'#2#4#7'Caption'
+#6#12'apply filter'#7'OnClick'#7#12'Button2Click'#8'TabOrder'#2#2#0#0#8'TLis'
+'tBox'#8'lbStyles'#4'Left'#3#168#1#6'Height'#3#128#0#3'Top'#2' '#5'Width'#3
+#208#0#7'OnClick'#7#13'lbStylesClick'#8'TabOrder'#2#3#8'TopIndex'#2#255#0#0#8
+'TListBox'#7'lbSizes'#4'Left'#3#128#2#6'Height'#3#16#1#3'Top'#2' '#5'Width'#2
+'8'#7'OnClick'#7#12'lbSizesClick'#8'TabOrder'#2#4#8'TopIndex'#2#255#0#0#8'TL'
+'istBox'#9'lbCharset'#4'Left'#3#168#1#6'Height'#2'p'#3'Top'#3#192#0#5'Width'
+#3#208#0#7'OnClick'#7#14'lbCharsetClick'#8'TabOrder'#2#5#8'TopIndex'#2#255#0
+#0#9'TComboBox'#7'cbPitch'#4'Left'#2#8#6'Height'#2#21#3'Top'#2'='#5'Width'#3
+#194#0#16'AutoCompleteText'#11#22'cbactEndOfLineComplete'#20'cbactSearchAsce'
+'nding'#0#9'ItemIndex'#2#0#13'Items.Strings'#1#6#13'DEFAULT_PITCH'#6#11'FIXE'
+'D_PITCH'#6#14'VARIABLE_PITCH'#6#9'MONO_FONT'#0#9'MaxLength'#2#0#8'TabOrder'
+#2#6#4'Text'#6#13'DEFAULT_PITCH'#0#0#7'TButton'#10'BtnFontDlg'#4'Left'#2'8'#6
+'Height'#2'('#3'Top'#3'p'#1#5'Width'#3#152#0#25'BorderSpacing.InnerBorder'#2
+#4#7'Caption'#6#8'Font Dlg'#7'OnClick'#7#15'BtnFontDlgClick'#8'TabOrder'#2#7
+#0#0#9'TCheckBox'#9'chkStrike'#4'Left'#3'O'#2#6'Height'#2#24#3'Top'#3'8'#1#5
+'Width'#2'X'#7'Caption'#6#9'Strikeout'#8'TabOrder'#2#8#0#0#9'TCheckBox'#12'c'
+'hkUnderLine'#4'Left'#3'P'#2#6'Height'#2#24#3'Top'#3'P'#1#5'Width'#2'b'#7'Ca'
+'ption'#6#9'UnderLine'#8'TabOrder'#2#9#0#0#7'TButton'#7'Button1'#4'Left'#2'8'
+#6'Height'#2')'#3'Top'#3'8'#1#5'Width'#3#153#0#25'BorderSpacing.InnerBorder'
+#2#4#7'Caption'#6#17'Reset Sample Text'#7'OnClick'#7#12'Button1Click'#8'TabO'
+'rder'#2#10#0#0#11'TStringGrid'#4'grid'#4'Left'#3#216#0#6'Height'#2'x'#3'Top'
+#3'8'#1#5'Width'#3'p'#1#15'AutoFillColumns'#9#8'ColCount'#2#1#16'DefaultRowH'
+'eight'#2#17#10'FixedColor'#7#9'clBtnFace'#9'FixedCols'#2#0#9'FixedRows'#2#0
+#13'GridLineWidth'#2#0#7'Options'#11#15'goFixedVertLine'#15'goFixedHorzLine'
+#10'goVertLine'#10'goHorzLine'#13'goRangeSelect'#9'goEditing'#14'goSmoothScr'
+'oll'#0#8'RowCount'#2#5#10'ScrollBars'#7#10'ssAutoBoth'#8'TabOrder'#2#11#7'T'
+'abStop'#9#0#0#11'TFontDialog'#11'FontDialog1'#5'Title'#6#13'Select a font'#4
+'left'#3'8'#1#3'top'#3#128#1#0#0#0
]);

View File

@ -1,43 +1,44 @@
object Form1: TForm1
Caption = 'Form1'
ClientHeight = 300
ClientWidth = 400
PixelsPerInch = 112
HorzScrollBar.Page = 399
VertScrollBar.Page = 299
Left = 290
Height = 300
Top = 163
Width = 400
HorzScrollBar.Page = 399
VertScrollBar.Page = 299
ActiveControl = Edit1
Caption = 'Form1'
ClientHeight = 300
ClientWidth = 400
OnCreate = FormCreate
object Edit1: TEdit
TabOrder = 0
Text = 'Edit1 - Press F1 for help'
Left = 60
Height = 23
Top = 40
Width = 207
HelpType = htKeyword
HelpKeyword = 'HTML/edit1.html'
TabOrder = 0
Text = 'Edit1 - Press F1 for help'
end
object Edit2: TEdit
TabOrder = 1
Text = 'Edit2 - Press F1 for help'
Left = 60
Height = 23
Top = 95
Width = 207
HelpType = htKeyword
HelpKeyword = 'HTML/edit2.html'
TabOrder = 1
Text = 'Edit2 - Press F1 for help'
end
object HelpButton: TButton
Caption = 'Help'
OnClick = HelpButtonClick
TabOrder = 2
Left = 60
Height = 25
Top = 155
Width = 98
BorderSpacing.InnerBorder = 4
Caption = 'Help'
OnClick = HelpButtonClick
TabOrder = 2
end
object HTMLHelpDatabase1: THTMLHelpDatabase
BaseURL = 'file://html/'

View File

@ -1,17 +1,20 @@
{ Das ist eine automatisch erzeugte Lazarus-Ressourcendatei }
LazarusResources.Add('TForm1','FORMDATA',[
'TPF0'#6'TForm1'#5'Form1'#7'Caption'#6#5'Form1'#12'ClientHeight'#3','#1#11'Cl'
+'ientWidth'#3#144#1#13'PixelsPerInch'#2'p'#18'HorzScrollBar.Page'#3#143#1#18
+'VertScrollBar.Page'#3'+'#1#4'Left'#3'"'#1#6'Height'#3','#1#3'Top'#3#163#0#5
+'Width'#3#144#1#0#5'TEdit'#5'Edit1'#8'TabOrder'#2#0#4'Text'#6#25'Edit1 - Pre'
+'ss F1 for help'#4'Left'#2'<'#6'Height'#2#23#3'Top'#2'('#5'Width'#3#207#0#8
+'HelpType'#7#9'htKeyword'#11'HelpKeyword'#6#15'HTML/edit1.html'#0#0#5'TEdit'
+#5'Edit2'#8'TabOrder'#2#1#4'Text'#6#25'Edit2 - Press F1 for help'#4'Left'#2
+'<'#6'Height'#2#23#3'Top'#2'_'#5'Width'#3#207#0#8'HelpType'#7#9'htKeyword'#11
+'HelpKeyword'#6#15'HTML/edit2.html'#0#0#7'TButton'#10'HelpButton'#7'Caption'
+#6#4'Help'#7'OnClick'#7#15'HelpButtonClick'#8'TabOrder'#2#2#4'Left'#2'<'#6'H'
+'eight'#2#25#3'Top'#3#155#0#5'Width'#2'b'#0#0#17'THTMLHelpDatabase'#17'HTMLH'
+'elpDatabase1'#7'BaseURL'#6#12'file://html/'#12'AutoRegister'#9#13'KeywordPr'
+'efix'#6#5'HTML/'#4'left'#3#200#0#3'top'#2'n'#0#0#22'THTMLBrowserHelpViewer'
+#22'HTMLBrowserHelpViewer1'#13'BrowserParams'#6#2'%s'#12'AutoRegister'#9#4'l'
+'eft'#3#200#0#3'top'#3#175#0#0#0#0
'TPF0'#6'TForm1'#5'Form1'#4'Left'#3'"'#1#6'Height'#3','#1#3'Top'#3#163#0#5'Wi'
+'dth'#3#144#1#18'HorzScrollBar.Page'#3#143#1#18'VertScrollBar.Page'#3'+'#1#13
+'ActiveControl'#7#5'Edit1'#7'Caption'#6#5'Form1'#12'ClientHeight'#3','#1#11
+'ClientWidth'#3#144#1#8'OnCreate'#7#10'FormCreate'#0#5'TEdit'#5'Edit1'#4'Lef'
+'t'#2'<'#6'Height'#2#23#3'Top'#2'('#5'Width'#3#207#0#8'HelpType'#7#9'htKeywo'
+'rd'#11'HelpKeyword'#6#15'HTML/edit1.html'#8'TabOrder'#2#0#4'Text'#6#25'Edit'
+'1 - Press F1 for help'#0#0#5'TEdit'#5'Edit2'#4'Left'#2'<'#6'Height'#2#23#3
+'Top'#2'_'#5'Width'#3#207#0#8'HelpType'#7#9'htKeyword'#11'HelpKeyword'#6#15
+'HTML/edit2.html'#8'TabOrder'#2#1#4'Text'#6#25'Edit2 - Press F1 for help'#0#0
+#7'TButton'#10'HelpButton'#4'Left'#2'<'#6'Height'#2#25#3'Top'#3#155#0#5'Widt'
+'h'#2'b'#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#4'Help'#7'OnClick'#7
+#15'HelpButtonClick'#8'TabOrder'#2#2#0#0#17'THTMLHelpDatabase'#17'HTMLHelpDa'
+'tabase1'#7'BaseURL'#6#12'file://html/'#12'AutoRegister'#9#13'KeywordPrefix'
+#6#5'HTML/'#4'left'#3#200#0#3'top'#2'n'#0#0#22'THTMLBrowserHelpViewer'#22'HT'
+'MLBrowserHelpViewer1'#13'BrowserParams'#6#2'%s'#12'AutoRegister'#9#4'left'#3
+#200#0#3'top'#3#175#0#0#0#0
]);

View File

@ -30,7 +30,7 @@
How was the example created:
Put a THTMLHelpDatabase on a form.
Set AutoRegister to true.
Set KeywordPrefix to 'HTML/'
Set KeywordPrefix to 'HTML/' an
Set BaseURL to 'file://html/'
Put a THTMLBrowserHelpViewer on the form.
@ -65,6 +65,7 @@ type
Edit2: TEdit;
HTMLBrowserHelpViewer1: THTMLBrowserHelpViewer;
HTMLHelpDatabase1: THTMLHelpDatabase;
procedure FormCreate(Sender: TObject);
procedure HelpButtonClick(Sender: TObject);
private
{ private declarations }
@ -85,6 +86,11 @@ begin
ShowHelpOrErrorForKeyword('','HTML/index.html');
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
HTMLHelpDatabase1.BaseURL:='/usr';
end;
initialization
{$I unit1.lrs}

View File

@ -1,17 +1,19 @@
object MainForm: TMainForm
Left = 315
Height = 327
Top = 177
Width = 569
HorzScrollBar.Page = 568
VertScrollBar.Page = 326
ActiveControl = OpenHTMLFileButton1
Caption = 'Example for turbopower internet pro HTML control'
ClientHeight = 327
ClientWidth = 569
OnCreate = MainFormCreate
PixelsPerInch = 96
HorzScrollBar.Page = 568
VertScrollBar.Page = 326
Left = 105
Height = 327
Top = 109
Width = 569
object IpHtmlPanel1: TIpHtmlPanel
Height = 285
Top = 42
Width = 569
Align = alClient
FixedTypeface = 'Courier New'
DefaultTypeFace = 'default'
@ -20,43 +22,39 @@ object MainForm: TMainForm
PrintSettings.MarginRight = 0.5
PrintSettings.MarginBottom = 0.5
OnHotClick = IpHtmlPanel1HotClick
Height = 285
Top = 42
Width = 569
end
object Panel1: TPanel
Height = 42
Width = 569
Align = alTop
ClientHeight = 42
ClientWidth = 569
TabOrder = 0
Height = 42
Width = 569
object OpenHTMLFileButton1: TButton
Caption = 'Open HTML File'
OnClick = OpenHTMLFileButtonClick
TabOrder = 0
Left = 16
Height = 26
Top = 8
Width = 152
BorderSpacing.InnerBorder = 4
Caption = 'Open HTML File'
OnClick = OpenHTMLFileButtonClick
TabOrder = 0
end
object Button1: TButton
Caption = 'Preview'
OnClick = Button1Click
TabOrder = 1
Left = 183
Height = 25
Top = 8
Width = 75
BorderSpacing.InnerBorder = 4
Caption = 'Preview'
OnClick = Button1Click
TabOrder = 1
end
end
object OpenDialog1: TOpenDialog
Title = 'Open existing file'
Filter = 'Web Pages|*.html;*.htm'
FilterIndex = 0
Title = 'Open existing file'
left = 26
top = 93
end

View File

@ -1,22 +1,24 @@
{ Das ist eine automatisch erzeugte Lazarus-Ressourcendatei }
LazarusResources.Add('TMainForm','FORMDATA',[
'TPF0'#9'TMainForm'#8'MainForm'#13'ActiveControl'#7#19'OpenHTMLFileButton1'#7
+'Caption'#6'0Example for turbopower internet pro HTML control'#12'ClientHeig'
+'ht'#3'G'#1#11'ClientWidth'#3'9'#2#8'OnCreate'#7#14'MainFormCreate'#13'Pixel'
+'sPerInch'#2'`'#18'HorzScrollBar.Page'#3'8'#2#18'VertScrollBar.Page'#3'F'#1#4
+'Left'#2'i'#6'Height'#3'G'#1#3'Top'#2'm'#5'Width'#3'9'#2#0#12'TIpHtmlPanel'
+#12'IpHtmlPanel1'#5'Align'#7#8'alClient'#13'FixedTypeface'#6#11'Courier New'
+#15'DefaultTypeFace'#6#7'default'#24'PrintSettings.MarginLeft'#5#0#0#0#0#0#0
+#0#128#254'?'#23'PrintSettings.MarginTop'#5#0#0#0#0#0#0#0#128#254'?'#25'Prin'
+'tSettings.MarginRight'#5#0#0#0#0#0#0#0#128#254'?'#26'PrintSettings.MarginBo'
+'ttom'#5#0#0#0#0#0#0#0#128#254'?'#10'OnHotClick'#7#20'IpHtmlPanel1HotClick'#6
+'Height'#3#29#1#3'Top'#2'*'#5'Width'#3'9'#2#0#0#6'TPanel'#6'Panel1'#5'Align'
+#7#5'alTop'#12'ClientHeight'#2'*'#11'ClientWidth'#3'9'#2#8'TabOrder'#2#0#6'H'
+'eight'#2'*'#5'Width'#3'9'#2#0#7'TButton'#19'OpenHTMLFileButton1'#7'Caption'
+#6#14'Open HTML File'#7'OnClick'#7#23'OpenHTMLFileButtonClick'#8'TabOrder'#2
+#0#4'Left'#2#16#6'Height'#2#26#3'Top'#2#8#5'Width'#3#152#0#0#0#7'TButton'#7
+'Button1'#7'Caption'#6#7'Preview'#7'OnClick'#7#12'Button1Click'#8'TabOrder'#2
+#1#4'Left'#3#183#0#6'Height'#2#25#3'Top'#2#8#5'Width'#2'K'#0#0#0#11'TOpenDia'
+'log'#11'OpenDialog1'#5'Title'#6#18'Open existing file'#6'Filter'#6#22'Web P'
+'ages|*.html;*.htm'#11'FilterIndex'#2#0#5'Title'#6#18'Open existing file'#4
+'left'#2#26#3'top'#2']'#0#0#0
'TPF0'#9'TMainForm'#8'MainForm'#4'Left'#3';'#1#6'Height'#3'G'#1#3'Top'#3#177#0
+#5'Width'#3'9'#2#18'HorzScrollBar.Page'#3'8'#2#18'VertScrollBar.Page'#3'F'#1
+#13'ActiveControl'#7#19'OpenHTMLFileButton1'#7'Caption'#6'0Example for turbo'
+'power internet pro HTML control'#12'ClientHeight'#3'G'#1#11'ClientWidth'#3
+'9'#2#8'OnCreate'#7#14'MainFormCreate'#0#12'TIpHtmlPanel'#12'IpHtmlPanel1'#6
+'Height'#3#29#1#3'Top'#2'*'#5'Width'#3'9'#2#5'Align'#7#8'alClient'#13'FixedT'
+'ypeface'#6#11'Courier New'#15'DefaultTypeFace'#6#7'default'#24'PrintSetting'
+'s.MarginLeft'#5#0#0#0#0#0#0#0#128#254'?'#23'PrintSettings.MarginTop'#5#0#0#0
+#0#0#0#0#128#254'?'#25'PrintSettings.MarginRight'#5#0#0#0#0#0#0#0#128#254'?'
+#26'PrintSettings.MarginBottom'#5#0#0#0#0#0#0#0#128#254'?'#10'OnHotClick'#7
+#20'IpHtmlPanel1HotClick'#0#0#6'TPanel'#6'Panel1'#6'Height'#2'*'#5'Width'#3
+'9'#2#5'Align'#7#5'alTop'#12'ClientHeight'#2'*'#11'ClientWidth'#3'9'#2#8'Tab'
+'Order'#2#0#0#7'TButton'#19'OpenHTMLFileButton1'#4'Left'#2#16#6'Height'#2#26
+#3'Top'#2#8#5'Width'#3#152#0#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6
+#14'Open HTML File'#7'OnClick'#7#23'OpenHTMLFileButtonClick'#8'TabOrder'#2#0
+#0#0#7'TButton'#7'Button1'#4'Left'#3#183#0#6'Height'#2#25#3'Top'#2#8#5'Width'
+#2'K'#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#7'Preview'#7'OnClick'#7
+#12'Button1Click'#8'TabOrder'#2#1#0#0#0#11'TOpenDialog'#11'OpenDialog1'#5'Ti'
+'tle'#6#18'Open existing file'#6'Filter'#6#22'Web Pages|*.html;*.htm'#11'Fil'
+'terIndex'#2#0#4'left'#2#26#3'top'#2']'#0#0#0
]);

View File

@ -3,7 +3,7 @@ unit MainUnit;
{$mode objfpc}{$H+}
{.$define UsePreview}
{.$define UseJPEG}
{$define UseJPEG}
interface

View File

@ -1,7 +1,7 @@
<?xml version="1.0"?>
<CONFIG>
<ProjectOptions>
<PathDelim Value="\"/>
<PathDelim Value="/"/>
<Version Value="5"/>
<General>
<Flags>
@ -13,40 +13,8 @@
<Title Value="tpiproexample"/>
<ActiveEditorIndexAtStart Value="0"/>
</General>
<LazDoc Paths=""/>
<Units Count="3">
<Unit0>
<CursorPos X="13" Y="6"/>
<Filename Value="tpiproexample.lpr"/>
<IsPartOfProject Value="True"/>
<TopLine Value="1"/>
<UnitName Value="TPIProExample"/>
<UsageCount Value="72"/>
</Unit0>
<Unit1>
<CursorPos X="22" Y="11"/>
<EditorIndex Value="0"/>
<Filename Value="mainunit.pas"/>
<ComponentName Value="MainForm"/>
<IsPartOfProject Value="True"/>
<Loaded Value="True"/>
<ResourceFilename Value="mainunit.lrs"/>
<TopLine Value="1"/>
<UnitName Value="MainUnit"/>
<UsageCount Value="72"/>
</Unit1>
<Unit2>
<CursorPos X="1" Y="1"/>
<Filename Value="index.html"/>
<IsPartOfProject Value="True"/>
<SyntaxHighlighter Value="HTML"/>
<TopLine Value="1"/>
<UsageCount Value="72"/>
</Unit2>
</Units>
<PublishOptions>
<Version Value="2"/>
<DestinationDirectory Value="$(TestDir)\publishedproject\"/>
<IgnoreBinaries Value="False"/>
<IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
<ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/>
@ -54,7 +22,7 @@
<RunParams>
<local>
<FormatVersion Value="1"/>
<LaunchingApplication PathPlusParams="\usr\X11R6\bin\xterm -T 'Lazarus Run Output' -e $(LazarusDir)\tools\runwait.sh $(TargetCmdLine)"/>
<LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
</local>
</RunParams>
<RequiredPackages Count="2">
@ -67,35 +35,43 @@
<MinVersion Major="1" Valid="True"/>
</Item2>
</RequiredPackages>
<JumpHistory Count="5" HistoryIndex="4">
<Position1>
<Units Count="3">
<Unit0>
<Filename Value="tpiproexample.lpr"/>
<IsPartOfProject Value="True"/>
<UnitName Value="TPIProExample"/>
<CursorPos X="13" Y="6"/>
<TopLine Value="1"/>
<UsageCount Value="72"/>
</Unit0>
<Unit1>
<Filename Value="mainunit.pas"/>
<Caret Line="84" Column="30" TopLine="80"/>
</Position1>
<Position2>
<Filename Value="mainunit.pas"/>
<Caret Line="92" Column="1" TopLine="90"/>
</Position2>
<Position3>
<Filename Value="mainunit.pas"/>
<Caret Line="9" Column="16" TopLine="1"/>
</Position3>
<Position4>
<Filename Value="mainunit.pas"/>
<Caret Line="1" Column="11" TopLine="1"/>
</Position4>
<Position5>
<Filename Value="mainunit.pas"/>
<Caret Line="101" Column="20" TopLine="91"/>
</Position5>
</JumpHistory>
<ComponentName Value="MainForm"/>
<IsPartOfProject Value="True"/>
<ResourceFilename Value="mainunit.lrs"/>
<UnitName Value="MainUnit"/>
<CursorPos X="22" Y="11"/>
<TopLine Value="1"/>
<EditorIndex Value="0"/>
<UsageCount Value="72"/>
<Loaded Value="True"/>
</Unit1>
<Unit2>
<Filename Value="index.html"/>
<IsPartOfProject Value="True"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="72"/>
<SyntaxHighlighter Value="HTML"/>
</Unit2>
</Units>
<JumpHistory Count="0" HistoryIndex="-1"/>
</ProjectOptions>
<CompilerOptions>
<Version Value="5"/>
<PathDelim Value="\"/>
<SearchPaths>
<OtherUnitFiles Value="$(LazarusDir)\components\units\$(TargetCPU)\$(TargetOS)\"/>
<SrcPath Value="$(LazarusDir)\lcl\;$(LazarusDir)\lcl\interfaces\$(LCLWidgetType)\"/>
<OtherUnitFiles Value="$(LazarusDir)/components/units/$(TargetCPU)/$(TargetOS)/"/>
<SrcPath Value="$(LazarusDir)/lcl/;$(LazarusDir)/lcl/interfaces/$(LCLWidgetType)/"/>
</SearchPaths>
<CodeGeneration>
<Generate Value="Faster"/>

View File

@ -5,7 +5,7 @@ program TPIProExample;
uses
//MemCheck,
Interfaces,
Forms, MainUnit;
Forms, MainUnit, JPEGForLazarus;
begin
Application.Initialize;

View File

@ -562,8 +562,7 @@ type
var BinCompStream: TExtMemoryStream): TModalResult;
function DoRemoveDanglingEvents(AnUnitInfo: TUnitInfo;
OkOnCodeErrors: boolean): TModalResult;
function DoRenameUnit(AnUnitInfo: TUnitInfo;
NewFilename, NewUnitName: string;
function DoRenameUnit(AnUnitInfo: TUnitInfo; NewFilename, NewUnitName: string;
var ResourceCode: TCodeBuffer): TModalresult;
// methods for 'open unit' and 'open main unit'
@ -3857,8 +3856,10 @@ var
SrcEdit: TSourceEditor;
FileWithoutPath: String;
PkgDefaultDirectory: String;
OldUnitName: String;
begin
SrcEdit:=GetSourceEditorForUnitInfo(AnUnitInfo);
//debugln('TMainIDE.DoShowSaveFileAsDialog ',AnUnitInfo.Filename);
// try to keep the old filename and extension
SaveAsFileExt:=ExtractFileExt(AnUnitInfo.FileName);
@ -3870,8 +3871,9 @@ begin
SaveAsFileExt:=EditorOpts.HighlighterList.GetDefaultFilextension(
SrcEdit.SyntaxHighlighterType);
end;
AnUnitInfo.ReadUnitNameFromSource(true);
SaveAsFilename:=AnUnitInfo.UnitName;
OldUnitName:=AnUnitInfo.ParseUnitNameFromSource(false);
//debugln('TMainIDE.DoShowSaveFileAsDialog sourceunitname=',OldUnitName);
SaveAsFilename:=OldUnitName;
if SaveAsFilename='' then
SaveAsFilename:=ExtractFileNameOnly(AnUnitInfo.Filename);
if SaveAsFilename='' then
@ -4410,6 +4412,7 @@ begin
SrcEdit:=GetSourceEditorForUnitInfo(AnUnitInfo);
if NewUnitName='' then
NewUnitName:=AnUnitInfo.UnitName;
//debugln('TMainIDE.DoRenameUnit ',AnUnitInfo.Filename,' NewUnitName=',NewUnitName,' OldUnitName=',AnUnitInfo.UnitName);
// check new resource file
if AnUnitInfo.ComponentName='' then begin

View File

@ -216,6 +216,7 @@ type
procedure IncreaseAutoRevertLock;
procedure LoadFromXMLConfig(XMLConfig: TXMLConfig; const Path: string;
Merge: boolean);
function ParseUnitNameFromSource(TryCache: boolean): string;
procedure ReadUnitNameFromSource(TryCache: boolean);
function CreateUnitName: string;
procedure ImproveUnitNameCache(const NewUnitName: string);
@ -898,25 +899,9 @@ procedure TUnitInfo.ReadUnitNameFromSource(TryCache: boolean);
var
NewUnitName: String;
begin
NewUnitName:='';
if TryCache then
NewUnitName:=CodeToolBoss.GetCachedSourceName(Source);
if NewUnitName='' then
NewUnitName:=CodeToolBoss.GetSourceName(fSource,false);
if NewUnitName='' then begin
// unable to parse the source
if FilenameIsPascalSource(Filename) then begin
// use default: the filename
NewUnitName:=ExtractFileNameOnly(Filename);
if CompareText(NewUnitName,fUnitName)=0 then begin
// the last stored unitname has the better case
exit;
end;
end;
end;
if NewUnitName<>'' then begin
NewUnitName:=ParseUnitNameFromSource(TryCache);
if NewUnitName<>'' then
fUnitName:=NewUnitName;
end;
end;
function TUnitInfo.CreateUnitName: string;
@ -1079,13 +1064,37 @@ begin
FBookmarks.LoadFromXMLConfig(XMLConfig,Path+'Bookmarks/');
end;
function TUnitInfo.ParseUnitNameFromSource(TryCache: boolean): string;
begin
Result:='';
if TryCache then
Result:=CodeToolBoss.GetCachedSourceName(Source);
if Result='' then
Result:=CodeToolBoss.GetSourceName(fSource,false);
if Result='' then begin
// unable to parse the source
if FilenameIsPascalSource(Filename) then begin
// use default: the filename
Result:=ExtractFileNameOnly(Filename);
if CompareText(Result,fUnitName)=0 then begin
// the last stored unitname has the better case
Result:=fUnitName;
end;
end;
end;
end;
procedure TUnitInfo.SetUnitName(const NewUnitName:string);
var Allowed:boolean;
OldUnitName: String;
begin
if (fUnitName<>NewUnitName) and (NewUnitName<>'') then begin
Allowed:=true;
OldUnitName:=fUnitName;
if OldUnitName='' then
OldUnitName:=ExtractFileNameOnly(Filename);
if Assigned(FOnUnitNameChange) then
FOnUnitNameChange(Self,fUnitName,NewUnitName,false,Allowed);
FOnUnitNameChange(Self,OldUnitName,NewUnitName,false,Allowed);
// (ignore Allowed)
if (fSource<>nil) then begin
CodeToolBoss.RenameSource(fSource,NewUnitName);
@ -3366,7 +3375,7 @@ begin
for i:=0 to UnitCount-1 do begin
if (Units[i].IsPartOfProject)
and (Units[i]<>AnUnitInfo) and (Units[i].UnitName<>'')
and (lowercase(Units[i].UnitName)=lowercase(NewUnitName)) then begin
and (CompareText(Units[i].UnitName,NewUnitName)=0) then begin
Allowed:=false;
exit;
end;

View File

@ -1,2 +1,2 @@
// Created by Svn2RevisionInc
const RevisionStr = '10034M';
const RevisionStr = '';

View File

@ -1491,6 +1491,8 @@ type
function GetTabOrder: TTabOrder;
function GetVisibleDockClientCount: Integer;
procedure SetChildSizing(const AValue: TControlChildSizing);
procedure SetClientHeight(const AValue: Integer);
procedure SetClientWidth(const AValue: Integer);
procedure SetDockSite(const NewDockSite: Boolean);
procedure SetHandle(NewHandle: HWND);
procedure SetBorderWidth(Value: TBorderWidth);
@ -1654,8 +1656,6 @@ type
property Brush: TBrush read GetBrush;
property CachedClientHeight: integer read FClientHeight;
property CachedClientWidth: integer read FClientWidth;
property ClientWidth: Integer read GetClientWidth write SetClientWidth stored True;
property ClientHeight: Integer read GetClientHeight write SetClientHeight stored True;
property ChildSizing: TControlChildSizing read FChildSizing write SetChildSizing;
property ControlCount: Integer read GetControlCount;
property Controls[Index: Integer]: TControl read GetControl;
@ -1693,11 +1693,13 @@ type
procedure EndUpdateBounds;
procedure LockRealizeBounds;
procedure UnlockRealizeBounds;
Function ControlAtPos(const Pos: TPoint; AllowDisabled: Boolean): TControl;
Function ControlAtPos(const Pos: TPoint;
AllowDisabled, AllowWinControls: Boolean): TControl;
Function ControlAtPos(const Pos: TPoint;
AllowDisabled, AllowWinControls, OnlyClientAreas: Boolean): TControl; virtual;
function ControlAtPos(const Pos: TPoint; AllowDisabled: Boolean): TControl;
function ControlAtPos(const Pos: TPoint;
AllowDisabled, AllowWinControls: Boolean): TControl;
function ControlAtPos(const Pos: TPoint;
AllowDisabled, AllowWinControls, OnlyClientAreas: Boolean): TControl;
function ControlAtPos(const Pos: TPoint;
AllowDisabled, AllowWinControls, OnlyClientAreas, Recursive: Boolean): TControl; virtual;
function ContainsControl(Control: TControl): Boolean;
procedure DoAdjustClientRectChange;
procedure InvalidateClientRectCache(WithChildControls: boolean);
@ -2402,7 +2404,8 @@ begin
then begin
Result := WinControl;
Control := WinControl.ControlAtPos(WinControl.ScreenToClient(Position),
AllowDisabled,true);
AllowDisabled,true,false,true);
//debugln(['FindControlAtPosition ',dbgs(Position),' ',DbgSName(WinControl),' ',dbgs(WinControl.ScreenToClient(Position)),' ',DbgSName(Control)]);
if Control <> nil then Result := Control;
end;
end;

View File

@ -409,6 +409,7 @@ var
P: TPoint;
begin
GetCursorPos(P);
//debugln(['TApplication.GetControlAtMouse p=',dbgs(p),' FLastMousePos=',dbgs(FLastMousePos)]);
if FLastMouseControlValid and (P.X=FLastMousePos.x) and (P.Y=FLastMousePos.Y)
then
Result := FLastMouseControl
@ -443,16 +444,8 @@ end;
------------------------------------------------------------------------------}
procedure TApplication.UpdateMouseControl(NewMouseControl: TControl);
begin
//debugln(['TApplication.UpdateMouseControl Old=',DbgSName(FMouseControl),' New=',DbgSName(NewMouseControl)]);
if FMouseControl=NewMouseControl then exit;
{write('TApplication.UpdateMouseControl A ');
if FMouseControl<>nil then
write(' Old=',FMouseControl.Name,':',FMouseControl.ClassName)
else
write(' Old=nil');
if NewMouseControl<>nil then
DebugLn' New=',NewMouseControl.Name,':',NewMouseControl.ClassName)
else
DebugLn' New=nil');}
if (FMouseControl<>nil) then begin
//DebugLn' MOUSELEAVE=',FMouseControl.Name,':',FMouseControl.ClassName);
FMouseControl.Perform(CM_MOUSELEAVE, 0, 0);
@ -1404,6 +1397,7 @@ end;
------------------------------------------------------------------------------}
procedure TApplication.DoBeforeMouseMessage(CurMouseControl: TControl);
begin
//debugln(['TApplication.DoBeforeMouseMessage ',DbgSName(CurMouseControl)]);
UpdateMouseControl(GetControlAtMouse);
end;

View File

@ -492,22 +492,6 @@ begin
end;
end;
{------------------------------------------------------------------------------}
{ TControl.GetClientHeight }
{------------------------------------------------------------------------------}
function TControl.GetClientHeight: Integer;
begin
Result := ClientRect.Bottom;
end;
{------------------------------------------------------------------------------}
{ TControl.GetClientWidth }
{------------------------------------------------------------------------------}
function TControl.GetClientWidth: Integer;
begin
Result := ClientRect.Right;
end;
{------------------------------------------------------------------------------
procedure TControl.CalculateDockSizes;
@ -1230,6 +1214,16 @@ Begin
Result.Bottom := FTop+FHeight;
end;
function TControl.GetClientHeight: Integer;
begin
Result:=ClientRect.Bottom;
end;
function TControl.GetClientWidth: Integer;
begin
Result:=ClientRect.Right;
end;
{------------------------------------------------------------------------------}
{ TControl GetEnabled }
{------------------------------------------------------------------------------}
@ -2919,14 +2913,13 @@ Begin
end;
{------------------------------------------------------------------------------}
{ TControl WMMouseMove
}
{------------------------------------------------------------------------------}
{------------------------------------------------------------------------------
TControl WMMouseMove
------------------------------------------------------------------------------}
Procedure TControl.WMMouseMove(Var Message: TLMMouseMove);
Begin
{$IFDEF VerboseMouseBugfix}
DebugLn('[TControl.WMMouseMove] ',Name,':',ClassName,' ',Message.XPos,',',Message.YPos);
DebugLn(['[TControl.WMMouseMove] ',Name,':',ClassName,' ',Message.XPos,',',Message.YPos]);
{$ENDIF}
DoBeforeMouseMessage;
if not (csNoStdEvents in ControlStyle)

View File

@ -648,6 +648,7 @@ begin
if NewState <> FState
then begin
//debugln(['TCustomSpeedButton.MouseMove ',DbgSName(Self),' fState=',ord(fstate),' NewState=',ord(NewState)]);
FState := NewState;
Invalidate;
end;

View File

@ -3171,10 +3171,16 @@ begin
Result := ControlAtPos(Pos,AllowDisabled,AllowWinControls,true);
end;
function TWinControl.ControlAtPos(const Pos: TPoint; AllowDisabled,
AllowWinControls, OnlyClientAreas: Boolean): TControl;
begin
Result := ControlAtPos(Pos,AllowDisabled,AllowWinControls,true,false);
end;
{------------------------------------------------------------------------------
TWinControl ControlAtPos
Params: const Pos : TPoint
AllowDisabled, AllowWinControls: Boolean
AllowDisabled, AllowWinControls, OnlyClientAreas, Recursive: Boolean
Results: TControl
Searches a child (not grand child) control, which contains Pos.
@ -3182,9 +3188,10 @@ end;
If AllowDisabled is true it will also search in disabled controls.
If AllowWinControls is true it will also search in the child wincontrols.
If OnlyClientAreas is true then only the client areas are compared.
If Recursive is true then continue in the child controls.
------------------------------------------------------------------------------}
function TWinControl.ControlAtPos(const Pos: TPoint; AllowDisabled,
AllowWinControls, OnlyClientAreas: Boolean): TControl;
AllowWinControls, OnlyClientAreas, Recursive: Boolean): TControl;
var
I: Integer;
P: TPoint;
@ -3230,12 +3237,14 @@ var
)
);
{$IFDEF VerboseMouseBugfix}
DebugLn('GetControlAtPos ',Name,':',ClassName,
//if Result then
DebugLn(['GetControlAtPos ',Name,':',ClassName,
' Pos=',Pos.X,',',Pos.Y,
' P=',P.X,',',P.Y,
' ControlPos=',dbgs(ControlPos),
' ClientBounds=',ClientBounds.Left,',',ClientBounds.Top,',',ClientBounds.Right,',',ClientBounds.Bottom,
' OnlyCl=',OnlyClientAreas,
' Result=',Result);
' Result=',Result]);
{$ENDIF}
if Result then
LControl := AControl;
@ -3244,10 +3253,17 @@ var
var
ScrolledOffset: TPoint;
OldClientOrigin: TPoint;
NewClientOrigin: TPoint;
NewPos: TPoint;
begin
//debugln(['TWinControl.ControlAtPos START ',DbgSName(Self),' P=',dbgs(Pos)]);
// check if Pos in visible client area
ClientBounds:=GetClientRect;
if not PtInRect(ClientBounds,Pos) then begin
//debugln(['TWinControl.ControlAtPos OUT OF CLIENTBOUNDS ',DbgSName(Self),' P=',dbgs(Pos),' ClientBounds=',dbgs(ClientBounds)]);
//DumpStack;
Result:=nil;
exit;
end;
@ -3268,6 +3284,22 @@ begin
if GetControlAtPos(TControl(FControls[I])) then
Break;
Result := LControl;
// check recursive sub childs
if Recursive and (Result is TWinControl)
and (TWinControl(Result).ControlCount>0) then begin
OldClientOrigin:=ClientOrigin;
NewClientOrigin:=TWinControl(Result).ClientOrigin;
NewPos:=Pos;
NewPos.X:=NewPos.X-NewClientOrigin.X+OldClientOrigin.X;
NewPos.Y:=NewPos.Y-NewClientOrigin.Y+OldClientOrigin.Y;
LControl:=TWinControl(Result).ControlAtPos(NewPos,
AllowDisabled,AllowWinControls,OnlyClientAreas,true);
//debugln(['TWinControl.RECURSED ControlAtPos Result=',DbgSName(Result),' LControl=',DbgSName(LControl),' ',dbgs(NewPos),' AllowDisabled=',AllowDisabled,' OnlyClientAreas=',OnlyClientAreas]);
if LControl<>nil then
Result:=LControl;
end;
//debugln(['TWinControl.ControlAtPos END ',DbgSName(Self),' P=',dbgs(Pos),' Result=',DbgSName(Result)]);
end;
{-------------------------------------------------------------------------------
@ -4373,9 +4405,9 @@ begin
Result:=FBrush;
end;
{------------------------------------------------------------------------------}
{ TWinControl GetControl }
{------------------------------------------------------------------------------}
{------------------------------------------------------------------------------
TWinControl GetControl
------------------------------------------------------------------------------}
function TWinControl.GetControl(const Index: Integer): TControl;
var
N: Integer;
@ -4390,9 +4422,9 @@ begin
Result := TControl(FWinControls[Index - N]);
end;
{------------------------------------------------------------------------------}
{ TWinControl GetControlCount }
{------------------------------------------------------------------------------}
{------------------------------------------------------------------------------
TWinControl GetControlCount
------------------------------------------------------------------------------}
function TWinControl.GetControlCount: Integer;
begin
Result := 0;
@ -5582,6 +5614,16 @@ begin
FChildSizing.Assign(AValue);
end;
procedure TWinControl.SetClientHeight(const AValue: Integer);
begin
end;
procedure TWinControl.SetClientWidth(const AValue: Integer);
begin
end;
{------------------------------------------------------------------------------
procedure TWinControl.SetDockSite(const NewDockSite: Boolean);
------------------------------------------------------------------------------}

View File

@ -967,6 +967,7 @@ var
DesignOnlySignal: boolean;
begin
Result := CallBackDefaultReturn;
MousePositionValid:=false;
{$IFDEF VerboseMouseBugfix}
DesignOnlySignal:=GetDesignOnlySignalFlag(Widget,dstMouseMotion);
@ -1003,6 +1004,7 @@ function GTKMotionNotifyAfter(widget:PGTKWidget; event: PGDKEventMotion;
data: gPointer): GBoolean; cdecl;
begin
Result := CallBackDefaultReturn;
MousePositionValid:=false;
{$IFDEF VerboseMouseBugfix}
DebugLn('[GTKMotionNotifyAfter] ',
@ -1220,6 +1222,8 @@ var
begin
if (Widget=nil) then ;
MousePositionValid:=false;
EventXY:=Point(TruncToInt(Event^.X),TruncToInt(Event^.Y));
ShiftState := GTKEventState2ShiftState(Event^.State);
MappedXY:=TranslateGdkPointToClientArea(Event^.Window,EventXY,
@ -1292,6 +1296,7 @@ end;
-------------------------------------------------------------------------------}
function gtkMouseBtnPress(widget: PGtkWidget; event: pgdkEventButton;
data: gPointer) : GBoolean; cdecl;
procedure CheckListSelection;
var
List: PGlist;
@ -1336,6 +1341,7 @@ var
MappedXY: TPoint;
begin
Result := CallBackDefaultReturn;
MousePositionValid:=false;
{$IFDEF VerboseMouseBugfix}
DebugLn('');
@ -1404,6 +1410,7 @@ function gtkMouseBtnPressAfter(widget: PGtkWidget; event : pgdkEventButton;
data: gPointer) : GBoolean; cdecl;
begin
Result := CallBackDefaultReturn;
MousePositionValid:=false;
{$IFDEF VerboseMouseBugfix}
debugln('[gtkMouseBtnPressAfter] ',
@ -1523,6 +1530,7 @@ var
DesignOnlySignal: boolean;
begin
Result := CallBackDefaultReturn;
MousePositionValid:=false;
{$IFDEF VerboseMouseBugfix}
DesignOnlySignal:=GetDesignOnlySignalFlag(Widget,dstMouseRelease);
@ -1570,6 +1578,7 @@ function gtkMouseBtnReleaseAfter(widget: PGtkWidget; event : pgdkEventButton;
data: gPointer) : GBoolean; cdecl;
begin
Result := CallBackDefaultReturn;
MousePositionValid:=false;
{$IFDEF VerboseMouseBugfix}
DebugLn('[gtkMouseBtnReleaseAfter] ',DbgSName(TObject(Data)),' ',
@ -2071,7 +2080,9 @@ var
var
AHistoryEntry: PFileSelHistoryEntry;
{$IFDEF Gtk1}
FilterMenu, ActiveFilterMenuItem: PGtkWidget;
{$ENDIF}
begin
Result:=false;
if (Data=nil) then ;

View File

@ -56,6 +56,9 @@ var
MouseCaptureWidget: PGtkWidget;
MouseCaptureType: TMouseCaptureType;
MouseCaptureIndex: cardinal;
MousePositionValid: boolean = false;
MousePosition: TPoint;
MousePositionTime: TDateTime;
const
DblClickTime = 250;// 250 miliseconds or less between clicks is a double click

View File

@ -3417,12 +3417,15 @@ procedure DestroyCommonDialogAddOns(ADialog: TCommonDialog);
var
DlgWindow: PGtkWidget;
HistoryList: TFPList; // list of TFileSelHistoryListEntry
FilterList: TFPList; // list of TFileSelFilterListEntry
AHistoryEntry: PFileSelHistoryEntry;
AFilterEntry: PFileSelFilterEntry;
i: integer;
FileSelWidget: PGtkFileSelection;
LCLFilterMenu, LCLHistoryMenu: PGTKWidget;
LCLHistoryMenu: PGTKWidget;
{$IFDEF Gtk}
AFilterEntry: PFileSelFilterEntry;
FilterList: TFPList; // list of TFileSelFilterListEntry
LCLFilterMenu: PGTKWidget;
{$ENDIF}
begin
if (ADialog=nil) or (not ADialog.HandleAllocated) then exit;

View File

@ -4706,27 +4706,36 @@ end;
Returns: True if succesful
------------------------------------------------------------------------------}
function TGtkWidgetSet.GetCursorPos(var lpPoint: TPoint ): Boolean;
function TGtkWidgetSet.GetCursorPos(var lpPoint: TPoint): Boolean;
{$IFDEF unix}
var
dpy: PDisplay;
root, child: twindow;
winx, winy: Integer;
xmask: Cardinal;
begin
Result := False;
{$IFDEF DebugGDKTraps}
BeginGDKErrorTrap;
{$ENDIF}
try
dpy := gdk_display;
XQueryPointer(dpy, RootWindow(dpy, DefaultScreen(dpy)), @root, @child,
@lpPoint.X,@lpPoint.Y,@winx,@winy,@xmask);
Result := True;
finally
{$IFDEF DebugGDKTraps}EndGDKErrorTrap;{$ENDIF}
if (not MousePositionValid) or (Abs(MousePositionTime-Now)>1/864000) then
begin
// querying the X cursor is expensive (especially on network connections)
// => use a lazy query
{$IFDEF DebugGDKTraps}
BeginGDKErrorTrap;
try
{$ENDIF}
dpy := gdk_display;
XQueryPointer(dpy, RootWindow(dpy, DefaultScreen(dpy)), @root, @child,
@MousePosition.X,@MousePosition.Y,@winx,@winy,@xmask);
Result := True;
{$IFDEF DebugGDKTraps}
finally
EndGDKErrorTrap;
end;
{$ENDIF}
MousePositionTime:=Now;
MousePositionValid:=true;
end;
lpPoint:=MousePosition;
end;
{$ELSE}
begin

View File

@ -86,18 +86,18 @@ function Frame(DC: HDC; const ARect: TRect): Integer; override;
function Frame3d(DC: HDC; var ARect: TRect; const FrameWidth : integer; const Style : TBevelCut): Boolean; override;
function FrameRect(DC: HDC; const ARect: TRect; hBr: HBRUSH): Integer; override;
Function GetActiveWindow : HWND; override;
function GetActiveWindow : HWND; override;
function GetBitmapBits(Bitmap: HBITMAP; Count: Longint; Bits: Pointer): Longint; override;
function GetBitmapRawImageDescription(Bitmap: HBITMAP; Desc: PRawImageDescription): boolean; override;
function GetCapture: HWND; override;
function GetCaretPos(var lpPoint: TPoint): Boolean; override;
function GetCaretRespondToFocus(handle: HWND; var ShowHideOnFocus: boolean): Boolean; override;
function GetCharABCWidths(DC: HDC; p2, p3: UINT; const ABCStructs): Boolean; override;
Function GetClientBounds(handle : HWND; var ARect : TRect) : Boolean; override;
Function GetClientRect(handle : HWND; var ARect : TRect) : Boolean; override;
Function GetClipBox(DC : hDC; lpRect : PRect) : Longint; override;
Function GetClipRGN(DC : hDC; RGN : hRGN) : Longint; override;
Function GetCmdLineParamDescForInterface: string; override;
function GetClientBounds(handle : HWND; var ARect : TRect) : Boolean; override;
function GetClientRect(handle : HWND; var ARect : TRect) : Boolean; override;
function GetClipBox(DC : hDC; lpRect : PRect) : Longint; override;
function GetClipRGN(DC : hDC; RGN : hRGN) : Longint; override;
function GetCmdLineParamDescForInterface: string; override;
function GetCursorPos(var lpPoint: TPoint): Boolean; override;
function GetDC(hWnd: HWND): HDC; override;
function GetDCOriginRelativeToWindow(PaintDC: HDC; WindowHandle: HWND; var OriginDiff: TPoint): boolean; override;
@ -110,11 +110,11 @@ function GetFocus: HWND; override;
function GetFontLanguageInfo(DC: HDC): DWord; override;
function GetKeyState(nVirtKey: Integer): Smallint; override;
function GetObject(GDIObj: HGDIOBJ; BufSize: Integer; Buf: Pointer): Integer; override;
Function GetParent(Handle : HWND): HWND; override;
Function GetProp(Handle : hwnd; Str : PChar): Pointer; override;
function GetParent(Handle : HWND): HWND; override;
function GetProp(Handle : hwnd; Str : PChar): Pointer; override;
function GetRawImageFromDevice(SrcDC: HDC; const SrcRect: TRect; var NewRawImage: TRawImage): boolean; override;
function GetRawImageFromBitmap(SrcBitmap, SrcMaskBitmap: HBITMAP; const SrcRect: TRect; var NewRawImage: TRawImage): boolean; override;
Function GetRgnBox(RGN : HRGN; lpRect : PRect) : Longint; override;
function GetRgnBox(RGN : HRGN; lpRect : PRect) : Longint; override;
function GetROP2(DC: HDC): Integer; override;
function GetScrollBarSize(Handle: HWND; BarKind: Integer): integer; override;
function GetScrollbarVisible(Handle: HWND; SBStyle: Integer): boolean; override;

View File

@ -843,9 +843,9 @@ procedure TGtk2WidgetSet.InitializeOpenDialog(OpenDialog: TOpenDialog;
var
FileSelWidget: PGtkFileChooser;
HelpButton: PGtkWidget;
FrameWidget: PGtkWidget;
HBox: PGtkWidget;
FileDetailLabel: PGtkWidget;
//FrameWidget: PGtkWidget;
//HBox: PGtkWidget;
//FileDetailLabel: PGtkWidget;
begin
FileSelWidget := GTK_FILE_CHOOSER(SelWidget);
@ -866,7 +866,7 @@ begin
// Filter
CreateOpenDialogFilter(OpenDialog,SelWidget);
(*
(* TODO
// Details - a frame with a label
if (ofViewDetail in OpenDialog.Options) then begin
@ -950,7 +950,6 @@ function TGtk2WidgetSet.CreateOpenDialogFilter(OpenDialog: TOpenDialog;
var
FilterList: TFPList;
i, j, k: integer;
s: String;
GtkFilter: PGtkFileFilter;
MaskList: TStringList;
begin

View File

@ -94,6 +94,9 @@ fi
# build fpc_crosswin32 deb
if [ $BuildCrossWin32DEB = "yes" ]; then
# check if bison is there
fakeroot -v
#----------------------------------------------------------------------------
# retrieve the version information
#----------------------------------------------------------------------------