Examples: added SQLite 'mushrooms' database example by Jurassic Pork, bug #25511

git-svn-id: trunk@43743 -
This commit is contained in:
maxim 2014-01-16 23:10:20 +00:00
parent 56325c433d
commit a51ef5c65e
20 changed files with 1247 additions and 0 deletions

19
.gitattributes vendored
View File

@ -4399,6 +4399,25 @@ examples/database/sqldbtutorial3/readme.txt svneol=native#text/plain
examples/database/sqldbtutorial3/sqldbtutorial3.ini svneol=native#text/plain
examples/database/sqldbtutorial3/sqldbtutorial3.lpi svneol=native#text/plain
examples/database/sqldbtutorial3/sqldbtutorial3.lpr svneol=native#text/pascal
examples/database/sqlite_mushrooms/ImageTest.db3 -text
examples/database/sqlite_mushrooms/Mushroom_Report.lrf svneol=native#text/plain
examples/database/sqlite_mushrooms/Readme.txt svneol=native#text/plain
examples/database/sqlite_mushrooms/images/320px-Amanita_phalloides.jpg -text svneol=unset#image/jpeg
examples/database/sqlite_mushrooms/images/320px-Conocybe.jpg -text svneol=unset#image/jpeg
examples/database/sqlite_mushrooms/images/320px-Destroying_Angel.jpg -text svneol=unset#image/jpeg
examples/database/sqlite_mushrooms/images/320px-FalseMorel.jpg -text svneol=unset#image/jpeg
examples/database/sqlite_mushrooms/images/320px-Galerina.jpg -text svneol=unset#image/jpeg
examples/database/sqlite_mushrooms/images/Small-Amanita_phalloides_1.JPG -text svneol=unset#image/jpeg
examples/database/sqlite_mushrooms/images/Small-Conocybe_rugosa.jpg -text svneol=unset#image/jpeg
examples/database/sqlite_mushrooms/images/Small-Destroying_Angel_02.jpg -text svneol=unset#image/jpeg
examples/database/sqlite_mushrooms/images/Small-FalseMorel.JPG -text svneol=unset#image/jpeg
examples/database/sqlite_mushrooms/images/Small-Galerina.jpg -text svneol=unset#image/jpeg
examples/database/sqlite_mushrooms/project1.ico -text svneol=unset#image/ico
examples/database/sqlite_mushrooms/project1.lpi svneol=native#text/plain
examples/database/sqlite_mushrooms/project1.lpr svneol=native#text/pascal
examples/database/sqlite_mushrooms/project1.res -text
examples/database/sqlite_mushrooms/unit1.lfm svneol=native#text/plain
examples/database/sqlite_mushrooms/unit1.pas svneol=native#text/pascal
examples/database/tsqlscript/dbconfig.pas svneol=native#text/pascal
examples/database/tsqlscript/dbconfiggui.lfm svneol=native#text/plain
examples/database/tsqlscript/dbconfiggui.pas svneol=native#text/pascal

Binary file not shown.

View File

@ -0,0 +1,439 @@
<?xml version="1.0" encoding="utf-8"?>
<CONFIG>
<LazReport>
<Version Value="26"/>
<Title Value=""/>
<Subject Value=""/>
<KeyWords Value=""/>
<Comments Value=""/>
<ReportCreateDate Value="1899-12-30 00:00:00"/>
<ReportLastChange Value="2014-01-16 02:43:56"/>
<ReportVersionBuild Value=""/>
<ReportVersionMajor Value=""/>
<ReportVersionMinor Value=""/>
<ReportVersionRelease Value=""/>
<ReportAutor Value=""/>
<Script Value=""/>
<Pages>
<PrintToDefault Value="False"/>
<DoublePass Value="True"/>
<SelectedPrinter Value="Microsoft XPS Document Writer"/>
<PageCount Value="1"/>
<Page1>
<Name Value="Page1"/>
<ClassName Value="TfrPageReport"/>
<Visible Value="True"/>
<Width Value="595"/>
<Height Value="842"/>
<Script Value=""/>
<PgSize Value="9"/>
<Margins>
<left Value="0"/>
<Top Value="0"/>
<Right Value="0"/>
<Bottom Value="0"/>
</Margins>
<Orientation Value="poPortrait"/>
<UseMargins Value="True"/>
<PrintToPrevPage Value="False"/>
<ColCount Value="0"/>
<ColGap Value="0"/>
<LayoutOrder Value="loColumns"/>
<ObjectCount Value="10"/>
<Object1>
<Name Value="MasterData1"/>
<ClassName Value="TfrBandView"/>
<Visible Value="True"/>
<Typ Value="gtBand"/>
<StreamMode Value="0"/>
<Size>
<Left Value="0"/>
<Top Value="104"/>
<Width Value="752"/>
<Height Value="812"/>
</Size>
<Flags Value="48"/>
<Data>
<Script Value=""/>
</Data>
<Tag Value=""/>
<FURLInfo Value=""/>
<BandType Value="btMasterData"/>
<Condition Value=""/>
<DatasetStr Value="frDBDataSet1"/>
</Object1>
<Object2>
<Name Value="PageHeader1"/>
<ClassName Value="TfrBandView"/>
<Visible Value="True"/>
<Typ Value="gtBand"/>
<StreamMode Value="0"/>
<Size>
<Left Value="0"/>
<Top Value="20"/>
<Width Value="752"/>
<Height Value="60"/>
</Size>
<Flags Value="48"/>
<Data>
<Script Value=""/>
</Data>
<Tag Value=""/>
<FURLInfo Value=""/>
<BandType Value="btPageHeader"/>
<Condition Value=""/>
<DatasetStr Value=""/>
</Object2>
<Object3>
<Name Value="Memo1"/>
<ClassName Value="TfrMemoView"/>
<Visible Value="True"/>
<Typ Value="gtMemo"/>
<StreamMode Value="0"/>
<Size>
<Left Value="248"/>
<Top Value="44"/>
<Width Value="272"/>
<Height Value="30"/>
</Size>
<Flags Value="3"/>
<FillColor Value="clNone"/>
<Frames>
<FrameColor Value="clBlack"/>
<FrameStyle Value="frsSolid"/>
<FrameWidth Value="1"/>
<FrameBorders Value=""/>
</Frames>
<Data>
<Format Value="558"/>
<FormatStr Value=""/>
<Memo Value="DEADLY MUSHROOMS&#xD;&#xA;"/>
<Script Value=""/>
</Data>
<Tag Value=""/>
<FURLInfo Value=""/>
<Font>
<Name Value="Arial"/>
<Size Value="18"/>
<Color Value="clBlack"/>
<Charset Value="0"/>
<Style Value=""/>
</Font>
<Highlight>
<FontStyle Value="2"/>
<FontColor Value="clBlack"/>
<FillColor Value="clWhite"/>
<HighlightStr Value=""/>
</Highlight>
<Alignment Value="taCenter"/>
<Layout Value="tlTop"/>
<Angle Value="0"/>
<Justify Value="False"/>
</Object3>
<Object4>
<Name Value="Memo2"/>
<ClassName Value="TfrMemoView"/>
<Visible Value="True"/>
<Typ Value="gtMemo"/>
<StreamMode Value="0"/>
<Size>
<Left Value="208"/>
<Top Value="140"/>
<Width Value="360"/>
<Height Value="38"/>
</Size>
<Flags Value="3"/>
<FillColor Value="clNone"/>
<Frames>
<FrameColor Value="clBlack"/>
<FrameStyle Value="frsSolid"/>
<FrameWidth Value="1"/>
<FrameBorders Value=""/>
</Frames>
<Data>
<Format Value="558"/>
<FormatStr Value=""/>
<Memo Value="[SQLQuery1.&quot;Common_Name&quot;]&#xD;&#xA;"/>
<Script Value=""/>
</Data>
<Tag Value=""/>
<FURLInfo Value=""/>
<Font>
<Name Value="Arial"/>
<Size Value="18"/>
<Color Value="clBlack"/>
<Charset Value="0"/>
<Style Value=""/>
</Font>
<Highlight>
<FontStyle Value="2"/>
<FontColor Value="clBlack"/>
<FillColor Value="clWhite"/>
<HighlightStr Value=""/>
</Highlight>
<Alignment Value="taCenter"/>
<Layout Value="tlTop"/>
<Angle Value="0"/>
<Justify Value="False"/>
</Object4>
<Object5>
<Name Value="Memo3"/>
<ClassName Value="TfrMemoView"/>
<Visible Value="True"/>
<Typ Value="gtMemo"/>
<StreamMode Value="0"/>
<Size>
<Left Value="16"/>
<Top Value="228"/>
<Width Value="712"/>
<Height Value="138"/>
</Size>
<Flags Value="3"/>
<FillColor Value="clNone"/>
<Frames>
<FrameColor Value="clBlack"/>
<FrameStyle Value="frsSolid"/>
<FrameWidth Value="1"/>
<FrameBorders Value=""/>
</Frames>
<Data>
<Format Value="46"/>
<FormatStr Value=""/>
<Memo Value="[SQLQuery1.&quot;Notes&quot;]&#xD;&#xA;"/>
<Script Value=""/>
</Data>
<Tag Value=""/>
<FURLInfo Value=""/>
<Font>
<Name Value="Arial"/>
<Size Value="12"/>
<Color Value="clBlack"/>
<Charset Value="0"/>
<Style Value=""/>
</Font>
<Highlight>
<FontStyle Value="2"/>
<FontColor Value="clBlack"/>
<FillColor Value="clWhite"/>
<HighlightStr Value=""/>
</Highlight>
<Alignment Value="taLeftJustify"/>
<Layout Value="tlTop"/>
<Angle Value="0"/>
<Justify Value="False"/>
</Object5>
<Object6>
<Name Value="Picture1"/>
<ClassName Value="TfrPictureView"/>
<Visible Value="True"/>
<Typ Value="gtPicture"/>
<StreamMode Value="0"/>
<Size>
<Left Value="40"/>
<Top Value="428"/>
<Width Value="172"/>
<Height Value="230"/>
</Size>
<Flags Value="6"/>
<FillColor Value="clNone"/>
<Frames>
<FrameColor Value="clBlack"/>
<FrameStyle Value="frsSolid"/>
<FrameWidth Value="1"/>
<FrameBorders Value=""/>
</Frames>
<Data>
<Memo Value="[SQLQuery1.&quot;Picture&quot;]&#xD;&#xA;"/>
<Script Value=""/>
</Data>
<Tag Value=""/>
<FURLInfo Value=""/>
<Picture>
<SharedName Value=""/>
<Type Value="0"/>
</Picture>
</Object6>
<Object7>
<Name Value="Memo4"/>
<ClassName Value="TfrMemoView"/>
<Visible Value="True"/>
<Typ Value="gtMemo"/>
<StreamMode Value="0"/>
<Size>
<Left Value="44"/>
<Top Value="392"/>
<Width Value="156"/>
<Height Value="18"/>
</Size>
<Flags Value="3"/>
<FillColor Value="clNone"/>
<Frames>
<FrameColor Value="clBlack"/>
<FrameStyle Value="frsSolid"/>
<FrameWidth Value="1"/>
<FrameBorders Value=""/>
</Frames>
<Data>
<Format Value="558"/>
<FormatStr Value=""/>
<Memo Value="Image in Database (Blob)&#xD;&#xA;"/>
<Script Value=""/>
</Data>
<Tag Value=""/>
<FURLInfo Value=""/>
<Font>
<Name Value="Arial"/>
<Size Value="10"/>
<Color Value="clBlack"/>
<Charset Value="0"/>
<Style Value=""/>
</Font>
<Highlight>
<FontStyle Value="2"/>
<FontColor Value="clBlack"/>
<FillColor Value="clWhite"/>
<HighlightStr Value=""/>
</Highlight>
<Alignment Value="taCenter"/>
<Layout Value="tlTop"/>
<Angle Value="0"/>
<Justify Value="False"/>
</Object7>
<Object8>
<Name Value="Memo5"/>
<ClassName Value="TfrMemoView"/>
<Visible Value="True"/>
<Typ Value="gtMemo"/>
<StreamMode Value="0"/>
<Size>
<Left Value="456"/>
<Top Value="392"/>
<Width Value="152"/>
<Height Value="20"/>
</Size>
<Flags Value="3"/>
<FillColor Value="clNone"/>
<Frames>
<FrameColor Value="clBlack"/>
<FrameStyle Value="frsSolid"/>
<FrameWidth Value="1"/>
<FrameBorders Value=""/>
</Frames>
<Data>
<Format Value="558"/>
<FormatStr Value=""/>
<Memo Value="External Image (Link)&#xD;&#xA;"/>
<Script Value=""/>
</Data>
<Tag Value=""/>
<FURLInfo Value=""/>
<Font>
<Name Value="Arial"/>
<Size Value="10"/>
<Color Value="clBlack"/>
<Charset Value="0"/>
<Style Value=""/>
</Font>
<Highlight>
<FontStyle Value="2"/>
<FontColor Value="clBlack"/>
<FillColor Value="clWhite"/>
<HighlightStr Value=""/>
</Highlight>
<Alignment Value="taCenter"/>
<Layout Value="tlTop"/>
<Angle Value="0"/>
<Justify Value="False"/>
</Object8>
<Object9>
<Name Value="Picture2"/>
<ClassName Value="TfrPictureView"/>
<Visible Value="True"/>
<Typ Value="gtPicture"/>
<StreamMode Value="0"/>
<Size>
<Left Value="348"/>
<Top Value="428"/>
<Width Value="376"/>
<Height Value="362"/>
</Size>
<Flags Value="6"/>
<FillColor Value="clNone"/>
<Frames>
<FrameColor Value="clBlack"/>
<FrameStyle Value="frsSolid"/>
<FrameWidth Value="1"/>
<FrameBorders Value=""/>
</Frames>
<Data>
<Memo Value=""/>
<Script Value=""/>
</Data>
<Tag Value=""/>
<FURLInfo Value=""/>
<Picture>
<SharedName Value=""/>
<Type Value="0"/>
</Picture>
</Object9>
<Object10>
<Name Value="Memo6"/>
<ClassName Value="TfrMemoView"/>
<Visible Value="True"/>
<Typ Value="gtMemo"/>
<StreamMode Value="0"/>
<Size>
<Left Value="644"/>
<Top Value="44"/>
<Width Value="68"/>
<Height Value="24"/>
</Size>
<Flags Value="3"/>
<FillColor Value="clNone"/>
<Frames>
<FrameColor Value="clBlack"/>
<FrameStyle Value="frsSolid"/>
<FrameWidth Value="1"/>
<FrameBorders Value=""/>
</Frames>
<Data>
<Format Value="558"/>
<FormatStr Value=""/>
<Memo Value="[PAGE#]/[TOTALPAGES]&#xD;&#xA;"/>
<Script Value=""/>
</Data>
<Tag Value=""/>
<FURLInfo Value=""/>
<Font>
<Name Value="Arial"/>
<Size Value="18"/>
<Color Value="clBlack"/>
<Charset Value="0"/>
<Style Value=""/>
</Font>
<Highlight>
<FontStyle Value="2"/>
<FontColor Value="clBlack"/>
<FillColor Value="clWhite"/>
<HighlightStr Value=""/>
</Highlight>
<Alignment Value="taLeftJustify"/>
<Layout Value="tlTop"/>
<Angle Value="0"/>
<Justify Value="False"/>
</Object10>
</Page1>
<FVal>
<Count Value="1"/>
<Objects1>
<Typ Value="0"/>
<OtherKind Value="0"/>
<Dataset Value=""/>
<Field Value=""/>
<Item Value="ImageLink"/>
</Objects1>
</FVal>
<ParentVars Value="My Variables&#xD;&#xA; ImageLink&#xD;&#xA;"/>
</Pages>
</LazReport>
</CONFIG>

View File

@ -0,0 +1,23 @@
MushRoomsDatabase by Jurassic Pork - January 2014
Features:
- Use SqlDb and lazreport components.
- Sqlite3 database DeadlyMushrooms with 5 mushrooms.
- The images are stored in blob field without extension at the beginning.
With this you can view blob images with database browser editor (ex sqlite2009pro).
- In the database there is also a field with images links (filenames).
- You can see the linked images in a Timage.
- The linked images are stored in the folder images of the project.
- You can change the images in the database :
- for Tdbimage double click on the component and choose your image.
- for Timage click on the button near the image filename.(you must be in edit mode )
- Transaction commit when you click on Tdbnavigator refresh button or on close form.
- Small pictures of the mushrooms are in the sqlite3Database. Largest images are in files in the folder images.
- Print button to print all the mushrooms (lazreport).
On each page you have:
- a title.
- the field common_name of the mushroom database.
- the field notes of the mushroom database.
- the field picture of the mushroom database (picture picture1).
- the picture of the field image_link (picture picture2).
The report name is Mushroom_Report.lrf

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@ -0,0 +1,105 @@
<?xml version="1.0" encoding="UTF-8"?>
<CONFIG>
<ProjectOptions>
<Version Value="9"/>
<PathDelim Value="\"/>
<General>
<SessionStorage Value="InProjectDir"/>
<MainUnit Value="0"/>
<Title Value="project1"/>
<ResourceType Value="res"/>
<UseXPManifest Value="True"/>
<Icon Value="0"/>
</General>
<i18n>
<EnableI18N LFM="False"/>
</i18n>
<VersionInfo>
<StringTable ProductVersion=""/>
</VersionInfo>
<BuildModes Count="1">
<Item1 Name="Default" Default="True"/>
</BuildModes>
<PublishOptions>
<Version Value="2"/>
<IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
<ExcludeFileFilter Value="*.(bak|ppu|o|so);*~;backup"/>
</PublishOptions>
<RunParams>
<local>
<FormatVersion Value="1"/>
</local>
</RunParams>
<RequiredPackages Count="4">
<Item1>
<PackageName Value="lazreport"/>
</Item1>
<Item2>
<PackageName Value="SQLDBLaz"/>
</Item2>
<Item3>
<PackageName Value="FCL"/>
</Item3>
<Item4>
<PackageName Value="LCL"/>
</Item4>
</RequiredPackages>
<Units Count="2">
<Unit0>
<Filename Value="project1.lpr"/>
<IsPartOfProject Value="True"/>
<UnitName Value="project1"/>
</Unit0>
<Unit1>
<Filename Value="unit1.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="Form1"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="Unit1"/>
</Unit1>
</Units>
</ProjectOptions>
<CompilerOptions>
<Version Value="11"/>
<PathDelim Value="\"/>
<Target>
<Filename Value="project1"/>
</Target>
<SearchPaths>
<IncludeFiles Value="$(ProjOutDir)"/>
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
</SearchPaths>
<CodeGeneration>
<Optimizations>
<OptimizationLevel Value="2"/>
</Optimizations>
</CodeGeneration>
<Linking>
<Options>
<Win32>
<GraphicApplication Value="True"/>
</Win32>
</Options>
</Linking>
<Other>
<CompilerMessages>
<MsgFileName Value=""/>
</CompilerMessages>
<CompilerPath Value="$(CompPath)"/>
</Other>
</CompilerOptions>
<Debugging>
<Exceptions Count="3">
<Item1>
<Name Value="EAbort"/>
</Item1>
<Item2>
<Name Value="ECodetoolError"/>
</Item2>
<Item3>
<Name Value="EFOpenError"/>
</Item3>
</Exceptions>
</Debugging>
</CONFIG>

View File

@ -0,0 +1,20 @@
program project1;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Interfaces, // this includes the LCL widgetset
Forms, Unit1;
{$R *.res}
begin
RequireDerivedFormResource := True;
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.

Binary file not shown.

View File

@ -0,0 +1,417 @@
object Form1: TForm1
Left = 517
Height = 667
Top = 119
Width = 531
BorderStyle = bsSingle
Caption = 'Deadly Mushrooms by Jurassic Pork'
ClientHeight = 667
ClientWidth = 531
Icon.Data = {
BE1000000000010001002020000001002000A810000016000000280000002000
000040000000010020000000000000100000120B0000120B0000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000D1212124E686A6C77A1A5A880AFB4B86D95
999C2C3C3D3E0000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000001010101506A6D6EA8E5EBF2A2E7F3FF96E1F0FF92DFEFFF96E2
F0FFA4E9F4FE5774777900000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000006D909496ABEBF6FF97E0F0FF8DDEEFFF89DDEEFF88DDEEFF8BDE
EEFF94DFEFFFA7E5F0FB141A1B1B000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00004358595BADEBF6FF96DFEFFF8ADDEEFF86DDEEFF8EE5F3FF96ECF6FF9DEF
F8FFA7F1F9FFB2F0F8FF3B4D4E50000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000406
0606A0D6DCE29AE0F0FF89DDEDFF84DEEEFF92ECF6FF9BEFF8FFA2F1F9FFA8F2
F9FFB1F3FAFFBAF5FBFF35454647000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000004054
5657A9E9F4FF8FDEEEFF82DCEEFF8DEAF5FF98EEF7FFA5F1F9FFAFF3FAFFB5F4
FAFFBAF5FBFFBCF2F7FC0F141414000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000083AD
B2B69BE1F0FF86DCEDFF89E6F3FF94EDF7FFA3F1F9FFB0F3FAFFB9F5FBFFBDF6
FBFFBEF6FBFF88B2B4B800000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000E131314ABE8
F1FA91DEEEFF85DFEFFF90EDF7FF9EEFF8FFAFF3FAFFB9F5FBFFBEF6FBFFBFF6
FBFFBEF4F9FE2E3B3C3D00000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000048606364A1E6
F2FF88DDEEFF87E6F3FF94EEF8FFA8F2F9FFB6F4FBFFBDF6FBFFBFF6FBFFBFF6
FBFF77989C9E0000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000007EABB0B694DF
EFFF81DCEDFF8AEBF5FF9AEFF8FFAFF3F9FFBAF5FBFFBEF6FBFFBFF6FBFFA0CD
D2D50A0C0C0D0000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000004050506A3E2EAF48ADC
ECFF7FE0EFFF8AEBF5FF9FF0F8FFB3F4FAFFBCF6FBFFBEF6FBFFAEE0E4E91A21
2222000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000243133349FE6F2FF80D5
E7FF7FE2EFFF8EEBF5FFA6F1F9FFB6F4FAFFBCF6FBFFB4E7EBF0253031320000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000455F616394DEEDFF7BD3
E4FF81E2EDFF96ECF6FFADF3FAFFB9F5FBFFB6ECF1F52E3B3C3D000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000005D84878D89D6E7FF7AD4
E2FF88E4EEFFA0EFF7FFB2F4FAFFB9F2F8FD394B4C4D00000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000072A4ABB381D1E2FF7FD9
E5FF91E8F2FFA8F2F9FFB6F4FAFF5C797C7E0000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000001010B0D0302
181D0404171B05060C0E0000000000000000000000007AB9C5D77ACDDEFF83DE
E9FF9AEDF5FFAEF3FAFF8CBBBEC3020303030000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000032404E516D89C3D40F0EC4FE100F
C6FF1312C7FF1A1AC8FE2425C2F01718A8D50B0D85B57FC6DCF96DC0D6FF81DA
E8FF9CEBF5FFA5E5EBF219212122000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000003443535790BCEBFE6F9DD8FF0A0AAEFF0D0F
8FFF0E117EFF090C78FF060774FF11117BFF131C93FF79C5DAFF6ABFD4FF7ED4
E6FF94DFEFFF4B62B7C70807363A000001010000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000090C10118DB5E1EE71A0D9FF567BCAFF10119AFF0A0D
6FFF02056AFF000064FF000059FF00004FFF243778FF70BED4FF6DC2D6FF85D7
E9FF72A7D6FF1415B8FF1C1AD7FF2323C3D93F4F7074090B0D0D000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000003F50666B85B2E5FF6793D2FF1A23A9FF1414A0FF0B0D
6AFF01035FFF000056FF00004AFF000042FF365486FF6AB9D1FF75CADCFF8CDA
EBFF23348FFF050878FF090C7EFF12149BFF2529C2FF576AD6EB2B336E740101
0505000000000000000000000000000000000000000000000000000000000000
00000000000000000000556B9CA65574D0FF141BA9FF050499FF04049AFF2020
9FFF0C0E67FF000050FF000042FF000038FF487497FF64B3C9FF78C9DAFF71AD
CDFF020466FF020469FF070A70FF0D1076FF10127AFF101288FF1A19CCFF1D19
C1D10403191B0000000000000000000000000000000000000000000000000000
000000000000000000000F0D9FBD0909B1FF05059DFF040393FF030392FF0403
9AFF0B0AA9FF0B0B96FF060574FF050657FF5B99B2FF5AA5B8FF6FBBCBFF3D5F
92FF000054FF000057FF01035EFF040664FF040769FF06096FFF1415B1FF211E
E6FF1916A6B30000000000000000000000000000000000000000000000000000
000000000000000000000F0C9BBB0908AFFF05049AFF030390FF03028DFF0302
91FF04039AFF0505A3FF0707ABFF0C0BBBFF1010BFFF2030BBFF3C5DC4FF1B26
8FFF09096AFF13136CFF141470FF19197CFF1C1C92FF1616B3FF1F1DE1FF2622
EDFF231FE9FB02020E0F00000000000000000000000000000000000000000000
000000000000000000000C0C859F0A09B3FF05049BFF03038EFF03028AFF0202
8CFF030291FF040397FF05059FFF0908B4FF0C0BBFFF110FCDFF1412D3FF1715
D6FF1817D7FF1918D9FF1C1ADCFF1E1CE0FF211EE7FF2522EEFF312FEFFF7788
F4FF7F9DF5FF21293E4100000000000000000000000000000000000000000000
00000000000000000000090856671517C0FF2A3BB1FF2B3CA8FF101693FF0202
8AFF02028DFF03028FFF030391FF0605A6FF0908B6FF3039D1FF6C86EAFF7897
F1FF5A6CF0FF2320EBFF211EECFF231FECFF2420EDFF3A38F2FFA1BBF8FFB4D6
F9FFA1CCF8FF303D4B4D00000000000000000000000000000000000000000000
000000000000000000000303131684AAE4F96D9DD5FF6D9CD2FF6C9ACFFF374D
ACFF02028CFF02028DFF03028FFF040499FF313DC4FF9AC5F1FF9DC8F4FF9EC9
F7FF9FCAF8FF667DF2FF221EECFF231FEDFF312CF3FF909DF9FFC2DEFBFFBADA
FAFFA2CCF8FF1920292A00000000000000000000000000000000000000000000
00000000000000000000000000005971969F7AA9DEFF6D9CD4FF6D9CD2FF6D9C
D0FF1B269EFF030290FF030394FF04039CFF526ECAFF9AC6F2FF9DC8F5FF9ECA
F7FF9FCAF8FF93BAF7FF221EECFF312BF4FF4640F9FFC5D5FCFFCDE3FBFFBEDB
FAFF8AACD2D90000000000000000000000000000000000000000000000000000
00000000000000000000000000000E121E2089B3E4F56F9FD8FF6D9CD4FF6D9C
D3FF3145B1FF040398FF04039DFF0505A6FF3E58C5FF7EADE3FF9DC9F6FF9FCA
F7FF9FCBF8FF99C2F8FF332EF5FF4840FDFF5952FBFFC7D3FCFFD4E7FCFFBCDA
FAFF415064670000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000002F3B575C8BB7E9FE709FD8FF6D9D
D5FF2432B3FF0606A4FF0606A9FF0707B1FF1921C0FF6B98D9FF90BCEFFF9FCA
F8FFA5CEF8FF95A5FBFF453DFEFF544CFEFF6862FCFFA2A5FBFFD0E6FCFF6E81
9DA1010101010000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000002B36515683A9DCEC6F96
DEFF0E0FB7FF0A0AB3FF0B0AB6FF0C0BBDFF0E0EC4FF242CCEFF556EE1FF748C
F6FF7279F9FF403AFAFF453EFCFF5C56FCFF716BFAFF5E59ECF4444C70730101
0101000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000004050C0E1518
535D0D0C7E950F0D96B5110FAACE1413C7ED1816D8FF1A18D8FF221FE5FF2D28
F2FF332DF5FF3832F7FF443EF9FF4741EEF528258D920706191A000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000030316190A09424812106D751A17
8D951E1A989F201B919817156266050513130000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000FFFFE07FFFFF803FFFFF801FFFFF001FFFFE001FFFFE001FFFFE003FFFFC
003FFFFC007FFFFC007FFFF800FFFFF801FFFFF803FFFFF807FFFFF80FFFFC38
0FFFF0001FFFE0000FFFC00003FFC00000FFC000007FC000007FC000003FC000
003FC000003FC000003FE000007FE000007FF000007FF80000FFFC0003FFFFF0
0FFF
}
OnClose = FormClose
OnCreate = FormCreate
Position = poScreenCenter
LCLVersion = '1.2.0.2'
object DBNavigator1: TDBNavigator
Left = 6
Height = 35
Top = 6
Width = 354
BeforeAction = DBNavigator1BeforeAction
BevelOuter = bvNone
ChildSizing.EnlargeHorizontal = crsScaleChilds
ChildSizing.EnlargeVertical = crsScaleChilds
ChildSizing.ShrinkHorizontal = crsScaleChilds
ChildSizing.ShrinkVertical = crsScaleChilds
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 100
ClientHeight = 35
ClientWidth = 354
DataSource = Datasource1
Options = []
TabOrder = 0
end
object BitBtn1: TBitBtn
Left = 429
Height = 32
Top = 6
Width = 93
DefaultCaption = True
Kind = bkClose
ModalResult = 11
TabOrder = 1
end
object DBText1: TDBText
Left = 88
Height = 20
Top = 48
Width = 240
Alignment = taCenter
AutoSize = False
DataField = 'Common_Name'
DataSource = Datasource1
Font.CharSet = ANSI_CHARSET
Font.Height = -19
Font.Name = 'Arial'
Font.Pitch = fpVariable
Font.Quality = fqDraft
Font.Style = [fsBold]
ParentColor = False
ParentFont = False
end
object DBMemo1: TDBMemo
Left = 8
Height = 72
Top = 440
Width = 514
DataField = 'Notes'
DataSource = Datasource1
TabOrder = 2
end
object DBEdit1: TDBEdit
Left = 128
Height = 23
Top = 408
Width = 166
DataField = 'Image_Link'
DataSource = Datasource1
CharCase = ecNormal
Color = clCream
MaxLength = 255
TabOrder = 3
OnChange = DBEdit1Change
end
object Button1: TButton
Left = 307
Height = 22
Top = 408
Width = 21
Caption = '...'
OnClick = Button1Click
TabOrder = 4
end
object DBGrid1: TDBGrid
Left = 8
Height = 144
Top = 520
Width = 514
AlternateColor = clCream
Color = clWindow
Columns = <
item
Title.Caption = 'Common Name'
Width = 101
FieldName = 'Common_Name'
end
item
Title.Caption = 'Scientific Name'
Width = 98
FieldName = 'Scientific_Name'
end
item
Title.Caption = 'Order'
Width = 45
FieldName = 'Order'
end
item
Title.Caption = 'Genus'
Width = 48
FieldName = 'Genus'
end
item
Title.Caption = 'ID'
Width = 26
FieldName = 'ID'
end
item
Title.Caption = 'Notes'
Width = 46
FieldName = 'Notes'
end>
DataSource = Datasource1
Options = [dgEditing, dgTitles, dgIndicator, dgColumnResize, dgColumnMove, dgColLines, dgRowLines, dgTabs, dgAlwaysShowSelection, dgConfirmDelete, dgCancelOnExit, dgAutoSizeColumns]
Scrollbars = ssAutoBoth
TabOrder = 5
OnPrepareCanvas = DBGrid1PrepareCanvas
end
object Panel1: TPanel
Left = 8
Height = 328
Top = 72
Width = 322
BevelOuter = bvNone
BorderWidth = 2
BorderStyle = bsSingle
ClientHeight = 324
ClientWidth = 318
ParentColor = False
TabOrder = 6
object Image1: TImage
AnchorSideLeft.Control = Panel1
AnchorSideTop.Control = Panel1
AnchorSideRight.Control = Panel1
AnchorSideBottom.Control = Panel1
Left = 2
Height = 320
Top = 2
Width = 316
Center = True
Proportional = True
Stretch = True
end
end
object Panel2: TPanel
Left = 360
Height = 328
Top = 72
Width = 162
BevelOuter = bvNone
BorderWidth = 2
BorderStyle = bsSingle
ClientHeight = 324
ClientWidth = 158
ParentColor = False
TabOrder = 7
object DBImage1: TDBImage
AnchorSideLeft.Control = Panel2
AnchorSideTop.Control = Panel2
AnchorSideRight.Control = Panel2
AnchorSideBottom.Control = Panel2
Left = 2
Height = 320
Top = 2
Width = 150
Center = True
DataField = 'Picture'
DataSource = Datasource1
OnDblClick = DBImage1DblClick
OnDBImageRead = DBImage1DBImageRead
OnDBImageWrite = DBImage1DBImageWrite
Proportional = True
end
end
object Label1: TLabel
Left = 8
Height = 15
Top = 55
Width = 22
Caption = 'Link'
ParentColor = False
end
object Label2: TLabel
Left = 360
Height = 15
Top = 55
Width = 24
Caption = 'Blob'
ParentColor = False
end
object Bt_Print: TButton
Left = 360
Height = 25
Top = 406
Width = 163
Caption = 'Print all Mushrooms'
OnClick = Bt_PrintClick
TabOrder = 8
end
object Label3: TLabel
Left = 8
Height = 15
Top = 424
Width = 32
Caption = 'Note :'
ParentColor = False
end
object Datasource1: TDatasource
DataSet = SQLQuery1
left = 216
top = 192
end
object OpenDialog1: TOpenDialog
left = 64
top = 288
end
object SQLQuery1: TSQLQuery
FieldDefs = <>
Database = SQLite3Connection1
Transaction = SQLTransaction1
SQL.Strings = (
'select * from DeadlyMushrooms'
)
Params = <>
left = 64
top = 192
end
object SQLTransaction1: TSQLTransaction
Active = True
Action = caCommitRetaining
Database = SQLite3Connection1
left = 208
top = 120
end
object SQLite3Connection1: TSQLite3Connection
Connected = True
LoginPrompt = False
DatabaseName = 'ImageTest.db3'
KeepConnection = False
Transaction = SQLTransaction1
LogEvents = []
Options = []
left = 64
top = 120
end
object frReport1: TfrReport
Dataset = frDBDataSet1
DefaultCopies = 0
InitialZoom = pzDefault
Options = []
PreviewButtons = [pbZoom, pbLoad, pbSave, pbPrint, pbFind, pbHelp, pbExit]
DataType = dtDataSet
OnEnterRect = frReport1EnterRect
OnDBImageRead = frReport1DBImageRead
left = 384
top = 344
end
object frDBDataSet1: TfrDBDataSet
DataSet = SQLQuery1
left = 464
top = 344
end
end

View File

@ -0,0 +1,224 @@
unit Unit1;
// J.P August 2013
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LR_Class, LR_DBSet, Forms, Controls, Graphics,
Dialogs, DbCtrls, Buttons, ExtCtrls, StdCtrls, DBGrids,
db, sqldb, sqlite3conn, Grids;
type
{ TForm1 }
TForm1 = class(TForm)
BitBtn1: TBitBtn;
Button1: TButton;
Bt_Print: TButton;
Datasource1: TDatasource;
DBEdit1: TDBEdit;
DBGrid1: TDBGrid;
DBImage1: TDBImage;
DBMemo1: TDBMemo;
DBNavigator1: TDBNavigator;
DBText1: TDBText;
frDBDataSet1: TfrDBDataSet;
frReport1: TfrReport;
Image1: TImage;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
OpenDialog1: TOpenDialog;
Panel1: TPanel;
Panel2: TPanel;
SQLite3Connection1: TSQLite3Connection;
SQLQuery1: TSQLQuery;
SQLTransaction1: TSQLTransaction;
procedure Button1Click(Sender: TObject);
procedure Bt_PrintClick(Sender: TObject);
procedure DBEdit1Change(Sender: TObject);
procedure DBGrid1PrepareCanvas(sender: TObject; DataCol: Integer;
Column: TColumn; AState: TGridDrawState);
procedure DBImage1DBImageRead(Sender: TObject; S: TStream;
var GraphExt: string);
procedure DBImage1DBImageWrite(Sender: TObject; S: TStream; GraphExt: string
);
procedure DBImage1DblClick(Sender: TObject);
procedure DBNavigator1BeforeAction(Sender: TObject; Button: TDBNavButtonType
);
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure frReport1DBImageRead(Sender: TObject; S: TStream;
var GraphExt: string);
procedure frReport1EnterRect(Memo: TStringList; View: TfrView);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.DBImage1DBImageRead(Sender: TObject; S: TStream;
var GraphExt: string);
var val1,val2: WORD;
begin
S.Seek(0, soFromBeginning);
S.Read(val1,2);
S.Position := 2;
S.Read(val2,2);
if (val1 = $4D42) then GraphExt := 'bmp';
if (val1 = $4947) and (val2 = $3846) then GraphExt := 'gif';
if (val1 = $5089) and (val2 = $474E) then GraphExt := 'png';
if (val1 = $D8FF) and (val2 = $E0FF) then GraphExt := 'jpg';
S.Seek(0, soFromBeginning);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if SQLQuery1.Active then begin
OpenDialog1.Filter :=
'All image files (*.bmp,*.jpg,*.png,*.gif)|*.bmp;*.jpg;*.png;*.gif|' +
'BMP files (*.bmp)|*.bmp|' +
'JPEG files (*.jpg)|*.jpg|' +
'PNG files (*.png)|*.png|' +
'GIF files (*.gif)|*.gif';
OpenDialog1.InitialDir := ExtractFilePath(ParamStr(0)) + 'images';
if OpenDialog1.Execute then begin
if SQLQuery1.State <> dsEdit then
SQLQuery1.Edit;
Image1.Picture.LoadFromFile(OpenDialog1.FileName);
DBEdit1.Text := ExtractFileName(OpenDialog1.FileName);
SQLQuery1.Post;
end;
end;
end;
procedure TForm1.Bt_PrintClick(Sender: TObject);
begin
frReport1.LoadFromFile(ExtractFilePath(application.ExeName) +
'\Mushroom_Report.lrf');
frReport1.ShowReport();
end;
procedure TForm1.DBEdit1Change(Sender: TObject);
begin
if DBEdit1.Text <> '' then
Image1.Picture.LoadFromFile(ExtractFilePath(ParamStr(0)) +
'images' + DirectorySeparator + DBEdit1.Text) else
Image1.Picture.Clear;
end;
procedure TForm1.DBGrid1PrepareCanvas(sender: TObject; DataCol: Integer;
Column: TColumn; AState: TGridDrawState);
var MyTextStyle: TTextStyle;
begin
if (DataCol =5) then
begin
MyTextStyle := DbGrid1.Canvas.TextStyle;
MyTextStyle.SingleLine := false;
DbGrid1.Canvas.TextStyle := MyTextStyle;
end;
end;
procedure TForm1.DBImage1DBImageWrite(Sender: TObject; S: TStream;
GraphExt: string);
begin
end;
procedure TForm1.DBImage1DblClick(Sender: TObject);
var
BlobStream: TStream;
FileStream: TStream;
begin
if SQLQuery1.Active then begin
OpenDialog1.Filter :=
'All image files (*.bmp,*.jpg,*.png,*.gif)|*.bmp;*.jpg;*.png;*.gif|' +
'BMP files (*.bmp)|*.bmp|' +
'JPEG files (*.jpg)|*.jpg|' +
'PNG files (*.png)|*.png|' +
'GIF files (*.gif)|*.gif';
if OpenDialog1.Execute then begin
begin
if SQLQuery1.State <> dsEdit then
SQLQuery1.Edit;
try
FileStream := TFileStream.Create(OpenDialog1.FileName, fmOpenRead);
try
BlobStream := SQLQuery1.CreateBlobStream(
SQLQuery1.FieldByName('Picture'), bmWrite);
BlobStream.CopyFrom(FileStream, FileStream.Size);
SQLQuery1.Post;
finally
FileStream.Free;
end;
finally
BlobStream.Free;
end;
end;
end;
end;
end;
procedure TForm1.DBNavigator1BeforeAction(Sender: TObject;
Button: TDBNavButtonType);
begin
if Button = nbRefresh then
begin
SQLQuery1.ApplyUpdates;
SQLTransaction1.CommitRetaining;
end;
end;
procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
SQLQuery1.ApplyUpdates;
SQLTransaction1.CommitRetaining;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
SQLQuery1.Close;
SQLite3Connection1.DatabaseName:= ExtractFilePath(ParamStr(0)) + 'ImageTest.db3';
SQLQuery1.Active := true;
end;
procedure TForm1.frReport1DBImageRead(Sender: TObject; S: TStream;
var GraphExt: string);
var val1,val2: WORD;
begin
S.Seek(0, soFromBeginning);
S.Read(val1,2);
S.Position := 2;
S.Read(val2,2);
if (val1 = $4D42) then GraphExt := 'bmp';
if (val1 = $4947) and (val2 = $3846) then GraphExt := 'gif';
if (val1 = $5089) and (val2 = $474E) then GraphExt := 'png';
if (val1 = $D8FF) and (val2 = $E0FF) then GraphExt := 'jpg';
S.Seek(0, soFromBeginning);
end;
procedure TForm1.frReport1EnterRect(Memo: TStringList; View: TfrView);
begin
if View.Name = 'Picture2' then
if DBEdit1.Text <> '' then
TFrPictureView(View).Picture.LoadFromFile(ExtractFilePath(ParamStr(0)) +
'images' + DirectorySeparator + frDBDataSet1.DataSet.FieldByName('Image_Link').AsString);
end;
end.