Code:
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls, Vcl.ComCtrls,
Vcl.ToolWin, System.ImageList, Vcl.ImgList, Vcl.Menus, System.Actions,
Vcl.ActnList, Vcl.PlatformDefaultStyleActnCtrls, Vcl.ActnMan, Vcl.ActnCtrls, ShellAPI,
Vcl.StdActns, Vcl.ExtActns, rImprovedComps, rDBComponents, Vcl.DBCtrls,
Data.DB, Vcl.Grids, Vcl.DBGrids, ABSMain, System.Win.registry, Winapi.shlobj, System.IOUtils,
PropSaveMain, RosiCompGlobalCfg;
type
TMainForm = class(TForm)
Splitter2: TSplitter;
Panel1: TPanel;
Splitter1: TSplitter;
TreeviewImageList: TImageList;
MemoEditImageList: TImageList;
ListviewImageList: TImageList;
TreeviewPopUp: TPopupMenu;
Nieuwsubitem1: TMenuItem;
Nieuwhoofditemonder1: TMenuItem;
N1: TMenuItem;
MainToolbarImageList: TImageList;
SmallFileTypeImageList: TImageList;
LargeFileTypeImageList: TImageList;
AttachmentPopUp: TPopupMenu;
MenuItem1: TMenuItem;
MenuItem2: TMenuItem;
MenuItem3: TMenuItem;
MenuItem4: TMenuItem;
Attachmentverwijderen1: TMenuItem;
Attachmentverwijderen2: TMenuItem;
FileOpenDialog: TOpenDialog;
Panel2: TPanel;
MemoEditToolBarActionManager: TActionManager;
EditCut1: TEditCut;
EditCopy1: TEditCopy;
EditPaste1: TEditPaste;
EditSelectAll1: TEditSelectAll;
EditUndo1: TEditUndo;
EditDelete1: TEditDelete;
FormatRichEditBold1: TRichEditBold;
FormatRichEditItalic1: TRichEditItalic;
FormatRichEditUnderline1: TRichEditUnderline;
FormatRichEditStrikeOut1: TRichEditStrikeOut;
FormatRichEditBullets1: TRichEditBullets;
FormatRichEditAlignLeft1: TRichEditAlignLeft;
FormatRichEditAlignRight1: TRichEditAlignRight;
FormatRichEditAlignCenter1: TRichEditAlignCenter;
DialogOpenPicture1: TOpenPicture;
DialogSavePicture1: TSavePicture;
DialogColorSelect1: TColorSelect;
DialogFontEdit1: TFontEdit;
DialogPrintDlg1: TPrintDlg;
ActionToolBar1: TActionToolBar;
AttachmentToolBarActionManager: TActionManager;
AttachmentToolBarImageList: TImageList;
AddAttachment: TAction;
DeleteAttachment: TAction;
AttachmentActionToolbar: TActionToolBar;
MemoEdit: TrRichEdit;
Action3: TAction;
Action4: TAction;
Action5: TAction;
Action6: TAction;
N2: TMenuItem;
Kleineiconen1: TMenuItem;
Grotreiconen1: TMenuItem;
Lijst1: TMenuItem;
Lijst2: TMenuItem;
rStatusBar1: TrStatusBar;
TreeviewActionManager: TActionManager;
NodeAbove: TAction;
NodeUnder: TAction;
NodeChild: TAction;
Action7: TAction;
Panel3: TPanel;
Wijzigitem1: TMenuItem;
EditAttachment: TAction;
Label2: TLabel;
Header1: TAction;
Header2: TAction;
Header3: TAction;
ActionList1: TActionList;
Action1: TAction;
FilePageControl: TPageControl;
FilesTabSheet: TTabSheet;
LinksTabSheet: TTabSheet;
AttachmentListview: TListView;
DBGrid1: TDBGrid;
ToolBar1: TToolBar;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton4: TToolButton;
ToolButton5: TToolButton;
ToolButton6: TToolButton;
ToolButton3: TToolButton;
ToolButton7: TToolButton;
ToolButton8: TToolButton;
StorageDB: TABSDatabase;
ItemsTbl: TABSTable;
MemoTbl: TABSTable;
FilesTbl: TABSTable;
TreeViewPageControl: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
TabSheet3: TTabSheet;
MainMenu1: TMainMenu;
Bestand1: TMenuItem;
Bestand2: TMenuItem;
Open1: TMenuItem;
Laatstgebruikt1: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
Opslaanals1: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
Allessluiten1: TMenuItem;
Allessluiten2: TMenuItem;
Einde1: TMenuItem;
ItemsTreeView: TTreeView;
Bewerkewn1: TMenuItem;
Organizeren1: TMenuItem;
Organizeren2: TMenuItem;
Zoeken1: TMenuItem;
Zoeken2: TMenuItem;
oevoegen1: TMenuItem;
oevoegen2: TMenuItem;
Downloaden1: TMenuItem;
Downloaden2: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
Linkse1: TMenuItem;
oevoegen3: TMenuItem;
oevoegen4: TMenuItem;
Aanpassen1: TMenuItem;
Aanpassen2: TMenuItem;
Wissen1: TMenuItem;
Wissen2: TMenuItem;
DatabaseNewDialog: TSaveDialog;
LinksTbl: TABSTable;
Einde2: TMenuItem;
Einde3: TMenuItem;
DatabaseOpenDialog: TOpenDialog;
Icon1: TMenuItem;
ItemsTblITEM_NR: TAutoIncField;
ItemsTblITEM_ID: TSmallintField;
ItemsTblITEM_TEXT: TStringField;
ItemsTblITEM_IMAGEID: TIntegerField;
ItemsTblITEM_PARENTID: TIntegerField;
FilesTblFILE_ID: TAutoIncField;
FilesTblITEM_ID: TSmallintField;
FilesTblFILE_NAAM: TStringField;
FilesTblFILE_SIZE: TLargeintField;
FilesTblFILE_DATE: TDateField;
FilesTblFILE_INFO: TStringField;
FilesTblFILE_BLOB: TBlobField;
MemoTblMEMO_ID: TAutoIncField;
MemoTblITEM_ID: TSmallintField;
MemoTblMEMO_TEXT: TBlobField;
LinksTblLINK_ID: TAutoIncField;
LinksTblLINK_INFO: TStringField;
LinksTblLINK_STRING: TStringField;
LinksTblITEM_ID: TIntegerField;
MemoFilesLinkQuery: TABSQuery;
QueryDS: TDataSource;
procedure WMDropFiles(var Msg: TWMDropFiles); message WM_DROPFILES;
procedure Nieuwsubitem1Click(Sender: TObject);
procedure Nieuwsubitem2Click(Sender: TObject);
procedure VSListToolButtonClick(Sender: TObject);
procedure VSIconSmallToolButtonClick(Sender: TObject);
procedure VSIconLargeToolButtonClick(Sender: TObject);
procedure VSIconDetailsToolButtonClick(Sender: TObject);
procedure AttachmentListviewContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Attachmentverwijderen2Click(Sender: TObject);
procedure AttachmentListviewDragDrop(Sender, Source: TObject; X,
Y: Integer);
procedure DialogFontEdit1FontDialogApply(Sender: TObject; Wnd: HWND);
procedure DialogPrintDlg1BeforeExecute(Sender: TObject);
procedure ToolButton9Click(Sender: TObject);
procedure ToolButton8Click(Sender: TObject);
procedure Action3Execute(Sender: TObject);
procedure Action6Execute(Sender: TObject);
procedure Action4Execute(Sender: TObject);
procedure Action5Execute(Sender: TObject);
procedure DialogColorSelect1ColorDialogClose(Sender: TObject);
procedure Wijzigitem1Click(Sender: TObject);
procedure DeleteAttachmentExecute(Sender: TObject);
procedure Action1Execute(Sender: TObject);
procedure ToolButton1Click(Sender: TObject);
procedure ToolButton2Click(Sender: TObject);
procedure ToolButton6Click(Sender: TObject);
procedure ToolButton4Click(Sender: TObject);
procedure ToolButton3Click(Sender: TObject);
procedure ItemsTreeViewDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure ItemsTreeViewDragDrop(Sender, Source: TObject; X, Y: Integer);
procedure ItemsTreeViewEdited(Sender: TObject; Node: TTreeNode;
var S: string);
procedure ItemsTreeViewChanging(Sender: TObject; Node: TTreeNode;
var AllowChange: Boolean);
procedure Bestand2Click(Sender: TObject);
procedure Open1Click(Sender: TObject);
procedure ItemsTreeViewDblClick(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure ItemsTreeViewClick(Sender: TObject);
private
{ Private declarations }
public
IDCounter: Integer;
CurrentNodeID: integer;
PreviousNodeID: integer;
CurrentDatabaseFileName: String;
IsMemoDirty: boolean;
LastUsedDatabases: TStrings;
{ Public declarations }
end;
type
PMyRec = ^TMyRec;
TMyRec = record
ID: Integer;
NodeCaption: String;
ParentID: Integer;
IconID: Integer;
end;
var
MainForm: TMainForm;
implementation
{$R *.dfm}
procedure UnregisterFileType(FileExt: String; OnlyForCurrentUser: boolean = true);
var
R: TRegistry;
begin
R := TRegistry.Create;
try
if OnlyForCurrentUser then
R.RootKey := HKEY_CURRENT_USER
else
R.RootKey := HKEY_LOCAL_MACHINE;
R.DeleteKey('\Software\Classes\.' + FileExt);
R.DeleteKey('\Software\Classes\' + FileExt + 'File');
finally
R.Free;
end;
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, 0, 0);
end;
procedure RegisterFileType(FileExt: String; FileTypeDescription:
String; ICONResourceFileFullPath: String; ApplicationFullPath: String;
OnlyForCurrentUser: boolean = true);
var
R: TRegistry;
begin
R := TRegistry.Create;
try
if OnlyForCurrentUser then
R.RootKey := HKEY_CURRENT_USER
else
R.RootKey := HKEY_LOCAL_MACHINE;
if R.OpenKey('\Software\Classes\.' + FileExt, true) then begin
R.WriteString('', FileExt + 'File');
if R.OpenKey('\Software\Classes\' + FileExt + 'File', true) then begin
R.WriteString('', FileTypeDescription);
if R.OpenKey('\Software\Classes\' + FileExt + 'File\DefaultIcon', true) then
begin
R.WriteString('', ICONResourceFileFullPath);
if R.OpenKey('\Software\Classes\' + FileExt + 'File\shell\open\command', true) then
R.WriteString('', ApplicationFullPath + ' "%1"');
end;
end;
end;
finally
R.Free;
end;
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, 0, 0);
end;
function GetFileModDate(FileName: string): TDateTime;
var
F: TSearchRec;
begin
FindFirst(FileName, faAnyFile, F);
// Result := F.TimeStamp
// if you wanted a TDateTime, change the return type and use this line:
Result := FileDateToDatetime(F.Time);
FindClose(F);
end;
function GetFileSize(FileName: string): Integer;
var
F: TSearchRec;
begin
FindFirst(FileName, faAnyFile, F);
Result := F.Size;
// if you wanted a TDateTime, change the return type and use this line:
// Result := FileDateToDatetime(F.Time);
FindClose(F);
end;
Function CreateRootNode(TreeView: TTreeView; NodeText: String; ImageID: Integer;
ID: Integer): TTreeNode;
var
Node: TTreeNode;
MyRecPtr: PMyRec;
begin
New(MyRecPtr);
MyRecPtr^.ID := ID;
MyRecPtr^.ParentID := 0;
MyRecPtr^.NodeCaption := NodeText;
MyRecPtr^.IconID := ImageID;
Node := TreeView.Items.AddObject(nil, NodeText, MyRecPtr);
Node.ImageIndex := ImageID;
MainForm.PreviousNodeID := MainForm.CurrentNodeID;
MainForm.CurrentNodeID := MyRecPtr.ID;
Exit(Node)
end;
Function CreateSubNode(TreeView: TTreeView; NodeText: String; ImageID: Integer;
ID: Integer): TTreeNode;
var
Node: TTreeNode;
SelectedNode: TTreeNode;
MyRecPtr: PMyRec;
NodeRecPtr: PMyRec;
begin
New(MyRecPtr);
New(NodeRecPtr);
MyRecPtr^.ID := ID;
MyRecPtr^.IconID := ImageID;
MyRecPtr^.NodeCaption := NodeText;
SelectedNode := TreeView.Selected;
if SelectedNode <> NIL then
begin
NodeRecPtr := SelectedNode.Data;
MyRecPtr^.ParentID := NodeRecPtr.ID;
Node := TreeView.Items.AddChildObject(TreeView.Selected, NodeText,
MyRecPtr);
Node.ImageIndex := ImageID;
end;
Exit(Node);
end;
Procedure OpenDatabase(Database: TABSDatabase);
begin
try
Database.Open;
if MainForm.TreeViewPageControl.ActivePage.Caption = 'Default' then
MainForm.TreeViewPageControl.ActivePage.Caption := ExtractFileName(Database.DatabaseFileName);
MainForm.CurrentDatabaseFileName := Database.DatabaseFileName
except
on e: Exception do
MessageDlg(e.Message, mtError, [mbOK], 0);
end;
end;
Procedure CreateDatabase(Test: String);
begin
if MainForm.DatabaseNewDialog.Execute then
begin
MainForm.StorageDB.Close;
MainForm.StorageDB.DatabaseFileName := MainForm.DatabaseNewDialog.FileName;
MainForm.StorageDB.CreateDatabase;
CopyTables();
OpenDatabase(MainForm.StorageDB);
ShowMessage('Storage database '+ MainForm.DatabaseNewDialog.FileName + ' is aangemaakt en geopend')
end;
end;
Bookmarks