mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-08 10:58:16 +02:00
ExamplesWindow: Read example directories from a text file and from package .lpk files. The window opens faster. Issue #40190, patch by dbannon.
This commit is contained in:
parent
b32b922e6e
commit
74cd012d9c
File diff suppressed because it is too large
Load Diff
@ -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
|
||||
|
@ -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
205
examples/examples.txt
Normal 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
|
Loading…
Reference in New Issue
Block a user