ExamplesWindow: Read example directories from a text file and from package .lpk files. The window opens faster. Issue , patch by dbannon.

This commit is contained in:
Juha 2023-04-16 14:28:23 +03:00
parent b32b922e6e
commit 74cd012d9c
4 changed files with 515 additions and 586 deletions

File diff suppressed because it is too large Load Diff

View File

@ -129,7 +129,7 @@ object FormLazExam: TFormLazExam
Width = 781
Panels = <>
end
object ButtonDownload: TButton
object ButtonCopy: TButton
AnchorSideLeft.Control = Owner
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = ButtonOpen
@ -137,12 +137,12 @@ object FormLazExam: TFormLazExam
Left = 6
Height = 31
Top = 340
Width = 89
Width = 50
Anchors = [akLeft, akBottom]
AutoSize = True
BorderSpacing.Left = 6
Caption = 'Download'
OnClick = ButtonDownloadClick
Caption = 'Copy'
OnClick = ButtonCopyClick
TabOrder = 5
end
object ButtonClose: TButton
@ -151,7 +151,7 @@ object FormLazExam: TFormLazExam
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = ButtonOpen
AnchorSideBottom.Side = asrBottom
Left = 270
Left = 231
Height = 31
Top = 340
Width = 54
@ -164,11 +164,11 @@ object FormLazExam: TFormLazExam
TabOrder = 8
end
object ButtonOpen: TButton
AnchorSideLeft.Control = ButtonDownload
AnchorSideLeft.Control = ButtonCopy
AnchorSideLeft.Side = asrBottom
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = StatusBar1
Left = 101
Left = 62
Height = 31
Top = 340
Width = 54
@ -186,7 +186,7 @@ object FormLazExam: TFormLazExam
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = ButtonOpen
AnchorSideBottom.Side = asrBottom
Left = 161
Left = 122
Height = 31
Top = 340
Width = 103

View File

@ -43,7 +43,7 @@ type
TFormLazExam = class(TForm)
ButtonView: TButton;
ButtonDownload: TButton;
ButtonCopy: TButton;
ButtonClose: TButton;
ButtonOpen: TButton;
CheckGroupCategory: TCheckGroup;
@ -54,7 +54,7 @@ type
Splitter2: TSplitter;
StatusBar1: TStatusBar;
procedure ButtonCloseClick(Sender: TObject);
procedure ButtonDownloadClick(Sender: TObject);
procedure ButtonCopyClick(Sender: TObject);
procedure ButtonOpenClick(Sender: TObject);
procedure ButtonViewClick(Sender: TObject);
procedure CheckGroupCategoryDblClick(Sender: TObject);
@ -65,7 +65,7 @@ type
procedure EditSearchKeyDown(Sender: TObject; var Key: Word; {%H-}Shift: TShiftState);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure FormKeyDown(Sender: TObject; var Key: Word; {%H-}Shift: TShiftState);
procedure FormShow(Sender: TObject);
procedure ListView1Click(Sender: TObject);
procedure ListView1DblClick(Sender: TObject);
@ -80,18 +80,13 @@ type
procedure BuildSearchList(SL: TStringList; const Term: AnsiString);
// Copies the passed ex dir to a dir named for the Proj.
// SrcDir includes name of actual dir, DestDir does not.
// Proj should be lowercase, used as dir name, as per Lazarus std
function CopyFiles(const Proj, SrcDir, DestDir: string): boolean;
// Checks for existance of passed path, the last element of which is case Insensitive.
// Returns with the actual name of the full path if successful.
function DirExistsCaseInSense(const APath: string; out ActualFullDir: string) : boolean;
// Passed the Full Path (with or without trailing delim) to a Project Dir, rets F if not
// present, T if Dir exists. If it finds an lpi file, rets with FFilename, else empty string.
// WriteProjectToOpen will cause a download / copy of the files.
// Sets the Regional Var, ProjectToOpen if WriteProjectToOpen is true.
// Thats triggers a Lazarus Open when this window closes.
function GetProjectFile(const APath: string; WriteProjectToOpen: boolean = false): boolean;
procedure KeyWordSearch;
procedure NewLVItem(const Proj, Path, KeyWords, Cat: string);
procedure NewLVItem(const Proj, Path, KeyWords, Cat: string; ExIndex: integer);
// Displays the current content of Examples List in the listview and
// populates the Category checkboxes.
procedure LoadUpListView();
@ -117,15 +112,16 @@ implementation
// ------------------------ L I S T V I E W ----------------------------------
procedure TFormLazExam.NewLVItem(const Proj, Path, KeyWords, Cat : string);
procedure TFormLazExam.NewLVItem(const Proj, Path, KeyWords, Cat : string; ExIndex : integer);
var
TheItem : TListItem;
begin
TheItem := ListView1.Items.Add;
TheItem.Caption := Proj;
TheItem.SubItems.Add(KeyWords);
TheItem.SubItems.Add(Path);
TheItem.SubItems.Add(Path); // Thats the original path, not the working copy
TheItem.SubItems.Add(Cat);
TheItem.Data := pointer(ExIndex); // we are just storing an integer in here, not a pointer
end;
procedure TFormLazExam.ListView1SelectItem(Sender: TObject; Item: TListItem; Selected: Boolean);
@ -137,28 +133,31 @@ procedure TFormLazExam.LoadUpListView();
var
Proj, Cat, Path, KeyW : string;
Cnt : integer = 0;
ExIndex : integer;
KeyList : TStringList = nil;
begin
Screen.Cursor := crHourGlass;
// Screen.Cursor := crHourGlass;
KeyList := TStringList.Create;
ListView1.BeginUpdate;
try
BuildSearchList(KeyList, EditSearch.Text);
if Ex.GetListData(Proj, Cat, Path, KeyW, True, KeyList) then begin
NewLVItem(Proj, Path, KeyW, Cat);
if Ex.GetListData(Proj, Cat, Path, KeyW, ExIndex, True, KeyList) then begin
NewLVItem(Proj, ExtractFilePath(Ex.ExList[ExIndex]^.FFName), KeyW, Ex.ExList[ExIndex]^.Category, ExIndex);
// NewLVItem(Proj, Path, KeyW, Cat);
inc(Cnt);
end;
while Ex.GetListData(Proj, Cat, Path, KeyW, False, KeyList) do begin
NewLVItem(Proj, Path, KeyW, Cat);
while Ex.GetListData(Proj, Cat, Path, KeyW, ExIndex, False, KeyList) do begin
NewLVItem(Proj, ExtractFilePath(Ex.ExList[ExIndex]^.FFName), KeyW, Ex.ExList[ExIndex]^.Category, ExIndex);
// NewLVItem(Proj, Path, KeyW, Cat);
inc(Cnt);
end;
finally
KeyList.Free;
Screen.Cursor := crDefault;
// Screen.Cursor := crDefault;
ListView1.EndUpdate;
end;
ButtonOpen.Enabled := false;
ButtonDownLoad.enabled := false;
ButtonCopy.enabled := false;
ButtonView.enabled := false;
Memo1.append(format(rsFoundExampleProjects, [Cnt]));
StatusBar1.SimpleText := format(rsFoundExampleProjects, [Cnt]);
@ -166,17 +165,22 @@ begin
end;
procedure TFormLazExam.ListView1Click(Sender: TObject);
var
ExIndex : integer;
begin
if ListView1.Selected = nil then exit; // White space below entries ....
ExIndex := integer(ListView1.Selected.Data); // Yes, tacky cludge, its not a pointer, just an integer
Memo1.Clear;
Memo1.append(ListView1.Selected.SubItems[1]);
Memo1.append('');
Memo1.Append(Ex.GetDesc(ListView1.Selected.SubItems[1] + ListView1.Selected.Caption));
// ListView1.Selected.Caption may be CamelCase from JSON.Name rather than path where we found it.
ButtonDownLoad.enabled := true;
Memo1.Append(Ex.ExList[ExIndex]^.Desc);
ButtonCopy.enabled := true;
ButtonView.enabled := true;
//ButtonOpen.Enabled := GetProjectFile(ListView1.Selected.SubItems[1]);
ButtonOpen.Enabled := GetProjectFile(Ex.ExampleWorkingDir() + ListView1.Selected.Caption);
ButtonOpen.Enabled := Ex.IsValidProject(ExIndex);
if Ex.ExList[ExIndex]^.ThirdParty then begin
ButtonCopy.Enabled := False;
ButtonView.Enabled := False;
end;
end;
procedure TFormLazExam.ListView1DblClick(Sender: TObject);
@ -185,7 +189,7 @@ begin
if ListView1.Selected = Nil then exit
else
LastListViewIndex := ListView1.ItemIndex; // So other methods can find user choice
ButtonDownloadClick(self);
ButtonCopyClick(self);
ButtonOpenClick(self);
end;
@ -229,47 +233,48 @@ procedure TFormLazExam.ButtonOpenClick(Sender: TObject);
begin
if LastListViewIndex < 0 then exit;
ListView1.ItemIndex:= LastListViewIndex;
if GetProjectFile(Ex.ExampleWorkingDir() + ListView1.Selected.Caption, True) // Sets ProjectToOpen on success
and ProjectToOpen.IsEmpty then
showmessage(rsExNoProjectFile)
else
close;
ProjectToOpen := Ex.GetProjectFile(integer(ListView1.Selected.Data)); // Yes, tacky cludge, its not a pointer, just an integer
if ProjectToOpen.IsEmpty then // Computer says no
showmessage(rsExNoProjectFile)
else
close;
end;
procedure TFormLazExam.ButtonDownloadClick(Sender: TObject);
procedure TFormLazExam.ButtonCopyClick(Sender: TObject);
var
ExIndex : integer;
begin
if LastListViewIndex < 0 then exit; // Can that happen ?
ListView1.ItemIndex:= LastListViewIndex;
if GetProjectFile(Ex.ExampleWorkingDir() + ListView1.Selected.Caption) then begin
ExIndex := integer(ListView1.Selected.Data); // Yes, tacky cludge, its not a pointer, just an integer
if Ex.ExList[ExIndex]^.ThirdParty then exit; // We don't 'download' ThirdParty examples.
if Ex.IsValidProject(ExIndex) then begin
// if GetProjectFile(Ex.ExampleWorkingDir() + ListView1.Selected.Caption) then begin
if Application.MessageBox(pchar(rsRefreshExistingExample)
, pchar(ListView1.Selected.Caption)
, MB_ICONQUESTION + MB_YESNO) <> IDYES then exit;
// OK - we overwrite. Any other files user has added are not removed
end;
Screen.Cursor := crHourGlass;
Application.ProcessMessages;
try
if Ex <> nil then begin
{$ifdef ONLINE_EXAMPLES}
StatusBar1.SimpleText := rsExDownloadingProject;
Application.ProcessMessages;
EX.DownLoadDir(ListView1.Selected.SubItems[1]);
StatusBar1.SimpleText := rsExProjectDownloadedTo + ' ' + Ex.MasterMeta(True)
+ ListView1.Selected.Caption;
{$else}
StatusBar1.SimpleText := rsExCopyingProject;
Application.ProcessMessages;
if copyFiles( ListView1.Selected.Caption,
// note we copy files to exampleworkingdir + lowercase(exampe name)
if copyFiles( lowercase(ListView1.Selected.Caption), // force toplevel ex dir to lowercase as per lazarus std
ListView1.Selected.SubItems[1], Ex.ExampleWorkingDir()) then
StatusBar1.SimpleText := rsExProjectCopiedTo + ' ' + Ex.ExampleWorkingDir()
+ ListView1.Selected.Caption
else StatusBar1.SimpleText := rsFailedToCopyFilesTo + ' ' + Ex.ExampleWorkingDir();
{$endif}
end;
finally
Screen.Cursor := crDefault;
Application.ProcessMessages;
end;
ButtonOpen.Enabled := GetProjectFile(Ex.ExampleWorkingDir() + ListView1.Selected.Caption);
ButtonOpen.Enabled := Ex.IsValidProject(ExIndex);
ListView1.ItemIndex := -1; // Unselect again for the Tabbers of this world.
end;
@ -294,7 +299,7 @@ var
St : string;
ChopOff : integer;
begin
ChopOff := length(AppendPathDelim(SrcDir));
ChopOff := length(ExpandFileName(AppendPathDelim(SrcDir)));
if not ForceDirectoriesUTF8(DestDir + Proj) then exit(False);
STL := FindAllDirectories(SrcDir, True);
for St in STL do
@ -304,7 +309,8 @@ begin
STL := FindAllFiles(SrcDir, AllFilesMask, True, faAnyFile);
for St in STL do begin
if not copyfile(St, DestDir + Proj + copy(St, ChopOff, 1000)) then exit(False);
//debugln('TFormLazExam.CopyFiles Copy ' + ST + #10 + ' to ' + DestDir + Proj + copy(St, ChopOff, 1000)); // DRB
// debugln('TFormLazExam.CopyFiles Copy ' + ST + #10 + ' to ' + DestDir + Proj + copy(St, ChopOff, 1000));
// debugln(' [' + DestDir + '] [' + Proj +'] [' + copy(St, ChopOff, 1000) +']');
end;
STL.Free;
end;
@ -329,24 +335,6 @@ begin
LoadUpListView();
end;
// ---------------------- Setting Project to Open ------------------------------
function TFormLazExam.GetProjectFile(const APath : string; WriteProjectToOpen : boolean = false) : boolean;
var
Info : TSearchRec;
RealDir : string;
// The project dir name may not be a case match for the Project Name.
// We are looking here at dir under example_work_area so some match is expected
begin
Result := DirExistsCaseInSense(APath, RealDir);
if not (Result and WriteProjectToOpen) then exit;
if FindFirst(RealDir + '*.lpi', faAnyFile, Info) = 0 then
ProjectToOpen := RealDir + Info.Name
else ProjectToOpen := '';
FindClose(Info);
end;
function TFormLazExam.DirExistsCaseInSense(const APath : string; out ActualFullDir : string) : boolean;
var
Info : TSearchRec;
@ -504,9 +492,9 @@ begin
// These are ObjectInspector set but I believe I cannot get OI literals set in a Package ??
ButtonClose.Caption := rsExampleClose;
{$ifdef ONLINE_EXAMPLES}
ButtonDownload.Caption := rsExampleDownLoad;
ButtonCopy.Caption := rsExampleDownLoad;
{$else}
ButtonDownload.Caption := rsExampleCopy;
ButtonCopy.Caption := rsExampleCopy;
{$endif}
ButtonView.Caption := rsExampleView;
ButtonOpen.Caption := rsExampleOpen;
@ -530,44 +518,40 @@ end;
procedure TFormLazExam.FormShow(Sender: TObject);
var
i : integer;
T1, T2, T3, T4, T5 : dword; // ToDo : remove
begin
Screen.BeginWaitCursor;
Application.ProcessMessages;
T1 := gettickcount64();
Memo1.clear;
EditSearch.text := ''; // or should we resume previous search ?
EditSearch.text := '';
Top := Screen.Height div 10;
Height := Screen.Height * 7 div 10;
ListView1.Height:= Screen.Height * 3 div 10;
Ex.Free;
StatusBar1.SimpleText := rsExSearchingForExamples;
Ex := TExampleData.Create();
Ex.GitDir := GitDir;
Ex.ExamplesHome := ExamplesHome;
Ex.RemoteRepo := RemoteRepo;
EX.LazConfigDir := LazConfigDir;
{$ifdef ONLINE_EXAMPLES}
Ex.LoadExData(FromCacheFile);
{$else}
Screen.BeginWaitCursor;
Application.ProcessMessages;
T2 := gettickcount64();
Ex.LoadExData(FromLazSrcTree);
T3 := gettickcount64();
Ex.LoadExData(FromThirdParty);
Screen.EndWaitCursor;
Application.ProcessMessages;
{$endif}
if Ex.ErrorMsg <> '' then
Showmessage(Ex.ErrorMsg); // Note : previously, we treated this as fatal ?
ex.getCategoryData(CheckGroupCategory.Items); // This sets the name of all categories in the CheckGroup
T4 := gettickcount64();
CheckGroupCategory.Items := Ex.CatList; // 13-15mS for any of these
for i := 0 to CheckGroupCategory.items.Count-1 do // check all the categories we found.
CheckGroupCategory.Checked[i] := true;
ListView1.Clear;
PrimeCatFilter();
LoadUpListView();
ListView1.SetFocus;
T5 := gettickcount64();
Screen.EndWaitCursor;
Application.ProcessMessages;
debugln('TFormLazExam.FormShow Timing ' + inttostr(T2-T1) + 'mS ' + inttostr(T3-T2) + 'mS ' + inttostr(T4-T3) + 'mS ' + inttostr(T5-T4) + 'mS');
end;
{ Must add a FormClose event
IDEDialogLayoutList.SaveLayout(Self);
}
end.

205
examples/examples.txt Normal file
View File

@ -0,0 +1,205 @@
./components/sqldbrest/demo/jsonclient/jsonclient.ex-meta
./components/sqldbrest/demo/bufclient/bufclient.ex-meta
./components/sqldbrest/demo/csvclient/csvclient.ex-meta
./components/sqldbrest/demo/restmodule/restmodule.ex-meta
./components/sqldbrest/demo/restbridge/restbridge.ex-meta
./components/mouseandkeyinput/example/mouseandkeyinput_example.ex-meta
./components/lazreport/source/addons/lrFclPDFExport/demo/lrFclPDFExport_demo.ex-meta
./components/lazreport/source/addons/lrcodereport/sample/lr_codereport_sample.ex-meta
./components/lazreport/source/addons/lrspreadsheetexport/demo/lrspreadsheetexport_demo.ex-meta
./components/lazreport/samples/Demo_CrossTab/Demo_CrossTab.ex-meta
./components/lazreport/samples/detail_reports/detail_reports.ex-meta
./components/lazreport/samples/userds/LazReport_userds.ex-meta
./components/lazreport/samples/report_url/Laz_report_url.ex-meta
./components/lazreport/samples/enduser_reports/sql_demo/LazReport_sql_demo.ex-meta
./components/lazreport/samples/enduser_reports/dbf_demo/LazReport_dbf_demo.ex-meta
./components/lazreport/samples/enduser_reports/test_lr_formstorage/test_lr_formstorage.ex-meta
./components/lazreport/samples/editor/LazReport_editor.ex-meta
./components/lazreport/samples/stringgrid/LazReport_stringgrid.ex-meta
./components/lazreport/samples/ChildBand_Example/Laz_Report_ChildBand_Example.ex-meta
./components/lazreport/samples/console_cgi_http/LazReport_console_cgi_http.ex-meta
./components/dbexport/demo/simple/dbexport_demo.ex-meta
./components/dbexport/demo/stdexports/stdexports.ex-meta
./components/mrumenu/demo/mrumenu_demo.ex-meta
./components/plotfunction/demo/expression/plotfunction_expression.ex-meta
./components/plotfunction/demo/event/plotevent_demo.ex-meta
./components/opengl/usergui_example/usergui_example.ex-meta
./components/opengl/rotate_example/rotate_example.ex-meta
./components/aggpas/lazarus/example/AggPas_LCLDemo1_example/AggPas_LCLDemo1_example.ex-meta
./components/aggpas/lazarus/example/AggPas_LCLDemo2_example/AggPas_LCLDemo2_example.ex-meta
./components/aggpas/lazarus/example/AggPasPango_example/AggPasPango_example.ex-meta
./components/paradox/demo/paradox_demo.ex-meta
./components/googleapis/demo/tasks/Google_tasks_demo.ex-meta
./components/googleapis/demo/calendar/Google_calendar_demo.ex-meta
./components/googleapis/demo/discovery/Google_discovery_demo.ex-meta
./components/googleapis/demo/drive/google_drive.ex-meta
./components/googleapis/demo/gmail/google_gmail.ex-meta
./components/cairocanvas/example/cairocanvas_example.ex-meta
./components/tachart/demo/fpvectorial/fpvectorial.ex-meta
./components/tachart/demo/imagelist/tachart_imagelist.ex-meta
./components/tachart/demo/db-pieseries/TaChart_db-pieseries.ex-meta
./components/tachart/demo/runtime/plotunit/TAChart_plotunit.ex-meta
./components/tachart/demo/runtime/dualaxes/TAChart_dualaxes.ex-meta
./components/tachart/demo/runtime/chartstyles/TAChart_chartstyles.ex-meta
./components/tachart/demo/panes/TAChart_panes.ex-meta
./components/tachart/demo/chartsource/TAChart_chartsource.ex-meta
./components/tachart/demo/animate/TAChart_animate.ex-meta
./components/tachart/demo/lazreport/TAChart_lazreport.ex-meta
./components/tachart/demo/multi/TAChart_multi.ex-meta
./components/tachart/demo/area/TAChart_area.ex-meta
./components/tachart/demo/axisalign/TAChart_axisalign.ex-meta
./components/tachart/demo/clone/TAChart_clone.ex-meta
./components/tachart/demo/panes-2/TAChart_panes-2.ex-meta
./components/tachart/demo/financial/TAChart_financial.ex-meta
./components/tachart/demo/barseriestools/TAChart_barseriestools.ex-meta
./components/tachart/demo/radial/TAChart_radial.ex-meta
./components/tachart/demo/liveview_paned/TAChart_liveview_paned.ex-meta
./components/tachart/demo/axistransf/TAChart_axistransf.ex-meta
./components/tachart/demo/opengl/TAChart_opengl.ex-meta
./components/tachart/demo/print/TAChart_print.ex-meta
./components/tachart/demo/wmf/TAChart_wmf.ex-meta
./components/tachart/demo/labels/TAChart_labels.ex-meta
./components/tachart/demo/extent/TAChart_extent.ex-meta
./components/tachart/demo/combobox/TaChart_combobox.ex-meta
./components/tachart/demo/fit/TAChart_fit.ex-meta
./components/tachart/demo/aggpas/TAChart_aggpas.ex-meta
./components/tachart/demo/navigate/TAChart_navigate.ex-meta
./components/tachart/demo/panes-3/TAChart_panes-3.ex-meta
./components/tachart/demo/nogui/TAChart_nogui.ex-meta
./components/tachart/demo/errorbars/TAChart_errorbars.ex-meta
./components/tachart/demo/manhattan/TAChart_manhattan.ex-meta
./components/tachart/demo/listbox/TAChart_listbox.ex-meta
./components/tachart/demo/legend/TAChart_legend.ex-meta
./components/tachart/demo/events/TAChart_events.ex-meta
./components/tachart/demo/line/TAChart_line.ex-meta
./components/tachart/demo/db/TAChart_db.ex-meta
./components/tachart/demo/rotate/TAChart_rotate.ex-meta
./components/tachart/demo/tools/TAChart_tools.ex-meta
./components/tachart/demo/script/TAChart_script.ex-meta
./components/tachart/demo/sorted_source/TAChart_sorted_source.ex-meta
./components/tachart/demo/dragdrop/TAChart_dragdrop.ex-meta
./components/tachart/demo/bgra/TAChart_bgra.ex-meta
./components/tachart/demo/html/TAChart_html.ex-meta
./components/tachart/demo/basic/TAChart_basic.ex-meta
./components/tachart/demo/3d/TAChart_3d.ex-meta
./components/tachart/demo/liveview/TAChart_liveview.ex-meta
./components/tachart/demo/nan/TAChart_nan.ex-meta
./components/tachart/demo/userdrawn_series/TAChart_userdrawn.ex-meta
./components/tachart/demo/charteditor/TAChart_editor.ex-meta
./components/tachart/demo/func/TAChart_func.ex-meta
./components/tachart/demo/datapointtools/TAChart_datapointtools.ex-meta
./components/tachart/demo/save/TAChart_save.ex-meta
./components/tachart/demo/axis/TAChart_axis.ex-meta
./components/tachart/demo/distance/TAChart_distance.ex-meta
./components/tachart/demo/barseriesshapes/barseriesshapes.ex-meta
./components/printers/samples/dialogs/Printer_dialogs.ex-meta
./components/printers/samples/rawmode/Printer_rawmode.ex-meta
./components/vlc/example/VLC_test.ex-meta
./examples/scanline/scanline.ex-meta
./examples/trayicon/TrayIcon.ex-meta
./examples/androidlcl/androidlcl.ex-meta
./examples/ReSizeImageDemo/ReSizeImageDemo.ex-meta
./examples/imagelist/imagelist.ex-meta
./examples/notebook/notebook.ex-meta
./examples/gridexamples/cell_overflow/cell_overflow.ex-meta
./examples/gridexamples/merged_cells/merged_cells.ex-meta
./examples/gridexamples/gridcelleditor/gridcelleditor.ex-meta
./examples/gridexamples/title_images/title_images.ex-meta
./examples/gridexamples/columneditors/columneditors.ex-meta
./examples/gridexamples/embedded_images/embedded_images.ex-meta
./examples/gridexamples/spreadsheet/spreadsheet.ex-meta
./examples/idehelp/idehelp.ex-meta
./examples/filteredits/filteredits.ex-meta
./examples/helphtml/helphtml.ex-meta
./examples/jpeg_more/jpeg_more.ex-meta
./examples/designnonlcl/designnonlcl.ex-meta
./examples/lazfreetype/lazfreetype.ex-meta
./examples/listview_example/listview_example.ex-meta
./examples/customhint/CustomHint.ex-meta
./examples/imagelist_highdpi_designtime/imagelist_highdpi_designtime.ex-meta
./examples/widestringstreaming/widestringstreaming.ex-meta
./examples/imagelist_highdpi_runtime/imagelist_highdpi_runtime.ex-meta
./examples/multithreading/multithread_basic/multithread_basic.ex-meta
./examples/multithreading/multithread_wait/multithread_wait.ex-meta
./examples/multithreading/multithread_single/multithread_single.ex-meta
./examples/multithreading/multithread_critical/multithread_critical.ex-meta
./examples/openurltest/openurltest.ex-meta
./examples/dropfiles/dropfiles.ex-meta
./examples/openglcontrol/openglcontrol.ex-meta
./examples/messages/messages.ex-meta
./examples/listview/listview.ex-meta
./examples/std_actions/std_actions.ex-meta
./examples/memo/memo.ex-meta
./examples/htmlhelp_ipro/htmlhelp_ipro.ex-meta
./examples/cooltoolbar/CoolToolBar.ex-meta
./examples/laz_hello/laz_hello.ex-meta
./examples/lazintfimage/lazintfimage.ex-meta
./examples/exploremenu/exploremenu.ex-meta
./examples/loadpicture/loadpicture.ex-meta
./examples/mousebuttons/mousebuttons.ex-meta
./examples/translation/translation.ex-meta
./examples/xmlstreaming/xmlstreaming.ex-meta
./examples/combobox/combobox.ex-meta
./examples/pen_brush/pen_brush.ex-meta
./examples/codepageconverter/codepageconverter.ex-meta
./examples/motiongraphics/motiongraphics.ex-meta
./examples/database/sqlite_encryption_pragma/SQLite_Encryption_Pragma.ex-meta
./examples/database/dbeditmask/dbeditmask.ex-meta
./examples/database/image_mushrooms/Image_Mushrooms.ex-meta
./examples/database/tsqlscript/TSQLScript.ex-meta
./examples/database/dblookup/dBLookup.ex-meta
./examples/database/fbadmin/FBAdmin.ex-meta
./examples/database/address_book/Address_book.ex-meta
./examples/database/sqldbtutorial3/SQLdBTutorial3.ex-meta
./examples/database/mssql/mssql.ex-meta
./examples/bidi/bidi.ex-meta
./examples/dragimagelist/DragImageList.ex-meta
./examples/idequickfix/idequickfix.ex-meta
./examples/easter/easter.ex-meta
./examples/autosize/childsizinglayout/childsizinglayout.ex-meta
./examples/xmlreader/xmlreader.ex-meta
./examples/postscript/postscript.ex-meta
./examples/listbox/listbox.ex-meta
./examples/jpeg/jpeg.ex-meta
./examples/popupnotifier/popupnotifier.ex-meta
./examples/SynEdit/SearchAndReplace/SynEdit - Search And Replace.ex-meta
./examples/SynEdit/SynAnyHighlighter/SynEdit - SynAny Highlighter.ex-meta
./examples/SynEdit/NewHighlighterTutorial/SynEdit - New Highlighter Tutorial.ex-meta
./examples/SynEdit/Completion/SynEdit - Completion.ex-meta
./examples/SynEdit/SynPositionHighlighter/SynEdit - SynPosition Highlighter.ex-meta
./examples/SynEdit/SynGutterMarks/SynEdit - GutterMarks.ex-meta
./examples/affinetransforms/affinetransforms.ex-meta
./examples/sprites/sprites.ex-meta
./examples/codetools/jumptoimplementation/jumptoimplementation.ex-meta
./examples/TDaemon/TDaemon.ex-meta
./examples/pascalstream/pascalstream.ex-meta
./examples/BitButton/bitbutton.ex-meta
./examples/lpicustomdata/lpicustomdata.ex-meta
./examples/cursors/cursors.ex-meta
./examples/propstorage/propstorage.ex-meta
./examples/comdialogs/comdialogs.ex-meta
./examples/icons/icons.ex-meta
./examples/bitbtn/bitbtn.ex-meta
./examples/turbopower_ipro/turbopower_ipro.ex-meta
./examples/treeview/treeview.ex-meta
./examples/fpreport/simple/LCLReport.ex-meta
./examples/objectinspector/objectinspector.ex-meta
./examples/virtualtreeview/vst_advanced/vst_advanced.ex-meta
./examples/virtualtreeview/vst_dragdrop/vst_dragdrop.ex-meta
./examples/virtualtreeview/vst_minimal/vst_minimal.ex-meta
./examples/lclversion/lclversion.ex-meta
./examples/shapedcontrols/shapedcontrols.ex-meta
./examples/laz_scalable/laz_scalable.ex-meta
./examples/NoteBk/NoteBk.ex-meta
./examples/controlhint/controlhint.ex-meta
./examples/imgviewer/imgviewer.ex-meta
./examples/levelgraph/levelgraph.ex-meta
./examples/componentstreaming/componentstreaming.ex-meta
./examples/lazresexplorer/lazresexplorer.ex-meta
./examples/messagedialogs/messagedialogs.ex-meta
./examples/designerbaseclass/designerbaseclass.ex-meta
./examples/groupedcontrol/groupedcontrol.ex-meta
./examples/stock_images/stock_images.ex-meta
./examples/canvas_test/canvas_test.ex-meta
./examples/cleandir/cleandir.ex-meta
./examples/fontenum/fontenum.ex-meta