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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,17 +1,20 @@
{ Das ist eine automatisch erzeugte Lazarus-Ressourcendatei }
LazarusResources.Add('TForm1','FORMDATA',[ LazarusResources.Add('TForm1','FORMDATA',[
'TPF0'#6'TForm1'#5'Form1'#7'Caption'#6#5'Form1'#12'ClientHeight'#3','#1#11'Cl' 'TPF0'#6'TForm1'#5'Form1'#4'Left'#3'"'#1#6'Height'#3','#1#3'Top'#3#163#0#5'Wi'
+'ientWidth'#3#144#1#13'PixelsPerInch'#2'p'#18'HorzScrollBar.Page'#3#143#1#18 +'dth'#3#144#1#18'HorzScrollBar.Page'#3#143#1#18'VertScrollBar.Page'#3'+'#1#13
+'VertScrollBar.Page'#3'+'#1#4'Left'#3'"'#1#6'Height'#3','#1#3'Top'#3#163#0#5 +'ActiveControl'#7#5'Edit1'#7'Caption'#6#5'Form1'#12'ClientHeight'#3','#1#11
+'Width'#3#144#1#0#5'TEdit'#5'Edit1'#8'TabOrder'#2#0#4'Text'#6#25'Edit1 - Pre' +'ClientWidth'#3#144#1#8'OnCreate'#7#10'FormCreate'#0#5'TEdit'#5'Edit1'#4'Lef'
+'ss F1 for help'#4'Left'#2'<'#6'Height'#2#23#3'Top'#2'('#5'Width'#3#207#0#8 +'t'#2'<'#6'Height'#2#23#3'Top'#2'('#5'Width'#3#207#0#8'HelpType'#7#9'htKeywo'
+'HelpType'#7#9'htKeyword'#11'HelpKeyword'#6#15'HTML/edit1.html'#0#0#5'TEdit' +'rd'#11'HelpKeyword'#6#15'HTML/edit1.html'#8'TabOrder'#2#0#4'Text'#6#25'Edit'
+#5'Edit2'#8'TabOrder'#2#1#4'Text'#6#25'Edit2 - Press F1 for help'#4'Left'#2 +'1 - Press F1 for help'#0#0#5'TEdit'#5'Edit2'#4'Left'#2'<'#6'Height'#2#23#3
+'<'#6'Height'#2#23#3'Top'#2'_'#5'Width'#3#207#0#8'HelpType'#7#9'htKeyword'#11 +'Top'#2'_'#5'Width'#3#207#0#8'HelpType'#7#9'htKeyword'#11'HelpKeyword'#6#15
+'HelpKeyword'#6#15'HTML/edit2.html'#0#0#7'TButton'#10'HelpButton'#7'Caption' +'HTML/edit2.html'#8'TabOrder'#2#1#4'Text'#6#25'Edit2 - Press F1 for help'#0#0
+#6#4'Help'#7'OnClick'#7#15'HelpButtonClick'#8'TabOrder'#2#2#4'Left'#2'<'#6'H' +#7'TButton'#10'HelpButton'#4'Left'#2'<'#6'Height'#2#25#3'Top'#3#155#0#5'Widt'
+'eight'#2#25#3'Top'#3#155#0#5'Width'#2'b'#0#0#17'THTMLHelpDatabase'#17'HTMLH' +'h'#2'b'#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#4'Help'#7'OnClick'#7
+'elpDatabase1'#7'BaseURL'#6#12'file://html/'#12'AutoRegister'#9#13'KeywordPr' +#15'HelpButtonClick'#8'TabOrder'#2#2#0#0#17'THTMLHelpDatabase'#17'HTMLHelpDa'
+'efix'#6#5'HTML/'#4'left'#3#200#0#3'top'#2'n'#0#0#22'THTMLBrowserHelpViewer' +'tabase1'#7'BaseURL'#6#12'file://html/'#12'AutoRegister'#9#13'KeywordPrefix'
+#22'HTMLBrowserHelpViewer1'#13'BrowserParams'#6#2'%s'#12'AutoRegister'#9#4'l' +#6#5'HTML/'#4'left'#3#200#0#3'top'#2'n'#0#0#22'THTMLBrowserHelpViewer'#22'HT'
+'eft'#3#200#0#3'top'#3#175#0#0#0#0 +'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: How was the example created:
Put a THTMLHelpDatabase on a form. Put a THTMLHelpDatabase on a form.
Set AutoRegister to true. Set AutoRegister to true.
Set KeywordPrefix to 'HTML/' Set KeywordPrefix to 'HTML/' an
Set BaseURL to 'file://html/' Set BaseURL to 'file://html/'
Put a THTMLBrowserHelpViewer on the form. Put a THTMLBrowserHelpViewer on the form.
@ -65,6 +65,7 @@ type
Edit2: TEdit; Edit2: TEdit;
HTMLBrowserHelpViewer1: THTMLBrowserHelpViewer; HTMLBrowserHelpViewer1: THTMLBrowserHelpViewer;
HTMLHelpDatabase1: THTMLHelpDatabase; HTMLHelpDatabase1: THTMLHelpDatabase;
procedure FormCreate(Sender: TObject);
procedure HelpButtonClick(Sender: TObject); procedure HelpButtonClick(Sender: TObject);
private private
{ private declarations } { private declarations }
@ -85,6 +86,11 @@ begin
ShowHelpOrErrorForKeyword('','HTML/index.html'); ShowHelpOrErrorForKeyword('','HTML/index.html');
end; end;
procedure TForm1.FormCreate(Sender: TObject);
begin
HTMLHelpDatabase1.BaseURL:='/usr';
end;
initialization initialization
{$I unit1.lrs} {$I unit1.lrs}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -216,6 +216,7 @@ type
procedure IncreaseAutoRevertLock; procedure IncreaseAutoRevertLock;
procedure LoadFromXMLConfig(XMLConfig: TXMLConfig; const Path: string; procedure LoadFromXMLConfig(XMLConfig: TXMLConfig; const Path: string;
Merge: boolean); Merge: boolean);
function ParseUnitNameFromSource(TryCache: boolean): string;
procedure ReadUnitNameFromSource(TryCache: boolean); procedure ReadUnitNameFromSource(TryCache: boolean);
function CreateUnitName: string; function CreateUnitName: string;
procedure ImproveUnitNameCache(const NewUnitName: string); procedure ImproveUnitNameCache(const NewUnitName: string);
@ -898,25 +899,9 @@ procedure TUnitInfo.ReadUnitNameFromSource(TryCache: boolean);
var var
NewUnitName: String; NewUnitName: String;
begin begin
NewUnitName:=''; NewUnitName:=ParseUnitNameFromSource(TryCache);
if TryCache then if NewUnitName<>'' 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
fUnitName:=NewUnitName; fUnitName:=NewUnitName;
end;
end; end;
function TUnitInfo.CreateUnitName: string; function TUnitInfo.CreateUnitName: string;
@ -1079,13 +1064,37 @@ begin
FBookmarks.LoadFromXMLConfig(XMLConfig,Path+'Bookmarks/'); FBookmarks.LoadFromXMLConfig(XMLConfig,Path+'Bookmarks/');
end; 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); procedure TUnitInfo.SetUnitName(const NewUnitName:string);
var Allowed:boolean; var Allowed:boolean;
OldUnitName: String;
begin begin
if (fUnitName<>NewUnitName) and (NewUnitName<>'') then begin if (fUnitName<>NewUnitName) and (NewUnitName<>'') then begin
Allowed:=true; Allowed:=true;
OldUnitName:=fUnitName;
if OldUnitName='' then
OldUnitName:=ExtractFileNameOnly(Filename);
if Assigned(FOnUnitNameChange) then if Assigned(FOnUnitNameChange) then
FOnUnitNameChange(Self,fUnitName,NewUnitName,false,Allowed); FOnUnitNameChange(Self,OldUnitName,NewUnitName,false,Allowed);
// (ignore Allowed) // (ignore Allowed)
if (fSource<>nil) then begin if (fSource<>nil) then begin
CodeToolBoss.RenameSource(fSource,NewUnitName); CodeToolBoss.RenameSource(fSource,NewUnitName);
@ -3366,7 +3375,7 @@ begin
for i:=0 to UnitCount-1 do begin for i:=0 to UnitCount-1 do begin
if (Units[i].IsPartOfProject) if (Units[i].IsPartOfProject)
and (Units[i]<>AnUnitInfo) and (Units[i].UnitName<>'') 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; Allowed:=false;
exit; exit;
end; end;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -4706,27 +4706,36 @@ end;
Returns: True if succesful Returns: True if succesful
------------------------------------------------------------------------------} ------------------------------------------------------------------------------}
function TGtkWidgetSet.GetCursorPos(var lpPoint: TPoint ): Boolean; function TGtkWidgetSet.GetCursorPos(var lpPoint: TPoint): Boolean;
{$IFDEF unix} {$IFDEF unix}
var var
dpy: PDisplay; dpy: PDisplay;
root, child: twindow; root, child: twindow;
winx, winy: Integer; winx, winy: Integer;
xmask: Cardinal; xmask: Cardinal;
begin begin
Result := False; Result := False;
{$IFDEF DebugGDKTraps} if (not MousePositionValid) or (Abs(MousePositionTime-Now)>1/864000) then
BeginGDKErrorTrap; begin
{$ENDIF} // querying the X cursor is expensive (especially on network connections)
try // => use a lazy query
dpy := gdk_display; {$IFDEF DebugGDKTraps}
XQueryPointer(dpy, RootWindow(dpy, DefaultScreen(dpy)), @root, @child, BeginGDKErrorTrap;
@lpPoint.X,@lpPoint.Y,@winx,@winy,@xmask); try
Result := True; {$ENDIF}
finally dpy := gdk_display;
{$IFDEF DebugGDKTraps}EndGDKErrorTrap;{$ENDIF} 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; end;
lpPoint:=MousePosition;
end; end;
{$ELSE} {$ELSE}
begin 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 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 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 GetBitmapBits(Bitmap: HBITMAP; Count: Longint; Bits: Pointer): Longint; override;
function GetBitmapRawImageDescription(Bitmap: HBITMAP; Desc: PRawImageDescription): boolean; override; function GetBitmapRawImageDescription(Bitmap: HBITMAP; Desc: PRawImageDescription): boolean; override;
function GetCapture: HWND; override; function GetCapture: HWND; override;
function GetCaretPos(var lpPoint: TPoint): Boolean; override; function GetCaretPos(var lpPoint: TPoint): Boolean; override;
function GetCaretRespondToFocus(handle: HWND; var ShowHideOnFocus: boolean): Boolean; override; function GetCaretRespondToFocus(handle: HWND; var ShowHideOnFocus: boolean): Boolean; override;
function GetCharABCWidths(DC: HDC; p2, p3: UINT; const ABCStructs): Boolean; override; function GetCharABCWidths(DC: HDC; p2, p3: UINT; const ABCStructs): Boolean; override;
Function GetClientBounds(handle : HWND; var ARect : TRect) : Boolean; override; function GetClientBounds(handle : HWND; var ARect : TRect) : Boolean; override;
Function GetClientRect(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 GetClipBox(DC : hDC; lpRect : PRect) : Longint; override;
Function GetClipRGN(DC : hDC; RGN : hRGN) : Longint; override; function GetClipRGN(DC : hDC; RGN : hRGN) : Longint; override;
Function GetCmdLineParamDescForInterface: string; override; function GetCmdLineParamDescForInterface: string; override;
function GetCursorPos(var lpPoint: TPoint): Boolean; override; function GetCursorPos(var lpPoint: TPoint): Boolean; override;
function GetDC(hWnd: HWND): HDC; override; function GetDC(hWnd: HWND): HDC; override;
function GetDCOriginRelativeToWindow(PaintDC: HDC; WindowHandle: HWND; var OriginDiff: TPoint): boolean; 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 GetFontLanguageInfo(DC: HDC): DWord; override;
function GetKeyState(nVirtKey: Integer): Smallint; override; function GetKeyState(nVirtKey: Integer): Smallint; override;
function GetObject(GDIObj: HGDIOBJ; BufSize: Integer; Buf: Pointer): Integer; override; function GetObject(GDIObj: HGDIOBJ; BufSize: Integer; Buf: Pointer): Integer; override;
Function GetParent(Handle : HWND): HWND; override; function GetParent(Handle : HWND): HWND; override;
Function GetProp(Handle : hwnd; Str : PChar): Pointer; override; function GetProp(Handle : hwnd; Str : PChar): Pointer; override;
function GetRawImageFromDevice(SrcDC: HDC; const SrcRect: TRect; var NewRawImage: TRawImage): boolean; 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 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 GetROP2(DC: HDC): Integer; override;
function GetScrollBarSize(Handle: HWND; BarKind: Integer): integer; override; function GetScrollBarSize(Handle: HWND; BarKind: Integer): integer; override;
function GetScrollbarVisible(Handle: HWND; SBStyle: Integer): boolean; override; function GetScrollbarVisible(Handle: HWND; SBStyle: Integer): boolean; override;

View File

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

View File

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