Adds lazedit, a text editor

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@2289 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
sekelsenmat
2012-02-14 15:53:59 +00:00
parent b9c8b62991
commit 15587b8ede
23 changed files with 10725 additions and 0 deletions

View File

@ -0,0 +1,59 @@
[Editor]
FontName=
FontSize=0
[MainForm]
Left=634
Top=143
Width=575
Height=418
InitialDir=
[NewHtmlDlg]
Top=-1
Left=-1
InitialDir=
[AnchorDlg]
Top=-1
Left=-1
[CharMapDlg]
Top=122
Left=775
[PictureDlg]
Top=-1
Left=-1
InitialDir=
DefaultFolderPrefix=
[TableDlg]
Top=-1
Left=-1
[RecentFiles]
File_0=
File_1=
File_2=
File_3=
File_4=
File_5=
[FileTypes]
eftNone=.txt
eftHtml=.htm;.html;.xhtml;.xhtm;.htmlt;.hks;
eftXml=.xml;.adfx
eftCSS=.css;.csst
eftJS=.js;.jst
eftFpc=.pp;.pas;.inc;.lpr;.dpr;.lrs;.lpk;.dpk
eftLfm=.lfm;.dfm
eftC=.c;.cpp;.h;.hpp;.hh;.gcc;.cc;.c++
eftPy=.py
eftPhp=.php
eftPerl=.pl
eftUnixShell=.sh
eftBat=.bat
eftDiff=.diff;.patch
eftIni=.ini;.conf;.cfg
eftPo=.po

View File

@ -0,0 +1,136 @@
object AnchorDlgForm: TAnchorDlgForm
Left = 781
Height = 377
Top = 138
Width = 320
BorderStyle = bsDialog
Caption = 'Hyperlink'
ClientHeight = 377
ClientWidth = 320
OnShow = FormShow
LCLVersion = '0.9.31'
object OkBtn: TBitBtn
Left = 237
Height = 30
Top = 336
Width = 75
Default = True
DefaultCaption = True
Kind = bkOK
ModalResult = 1
TabOrder = 0
end
object CancelBtn: TBitBtn
Left = 152
Height = 30
Top = 336
Width = 75
Cancel = True
DefaultCaption = True
Kind = bkCancel
ModalResult = 2
TabOrder = 1
end
object Label1: TLabel
Left = 8
Height = 14
Top = 8
Width = 61
Caption = 'Omschrijving'
ParentColor = False
end
object DescrEdit: TEdit
Left = 8
Height = 21
Top = 24
Width = 304
TabOrder = 2
Text = 'DescrEdit'
end
object UrlLabel: TLabel
Left = 8
Height = 14
Top = 56
Width = 14
Caption = 'Url'
ParentColor = False
end
object UrlEdit: TEdit
Left = 8
Height = 21
Top = 72
Width = 304
TabOrder = 3
end
object AnchorTypeGroup: TRadioGroup
Left = 8
Height = 81
Top = 104
Width = 304
AutoFill = True
Caption = 'Type hyperlink'
ChildSizing.LeftRightSpacing = 6
ChildSizing.TopBottomSpacing = 6
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
ChildSizing.EnlargeVertical = crsHomogenousChildResize
ChildSizing.ShrinkHorizontal = crsScaleChilds
ChildSizing.ShrinkVertical = crsScaleChilds
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
ClientHeight = 63
ClientWidth = 300
ItemIndex = 0
Items.Strings = (
'Url'
'Lokaal anker maken'
'Naar lokaal anker verwijzen'
)
OnClick = AnchorTypeGroupClick
TabOrder = 4
end
object Label3: TLabel
Left = 8
Height = 14
Top = 192
Width = 21
Caption = 'Titel'
ParentColor = False
end
object TitleEdit: TEdit
Left = 8
Height = 21
Top = 208
Width = 304
TabOrder = 5
end
object Label4: TLabel
Left = 8
Height = 14
Top = 240
Width = 12
Caption = 'ID'
ParentColor = False
end
object IdEdit: TEdit
Left = 8
Height = 21
Top = 256
Width = 304
TabOrder = 6
end
object Label5: TLabel
Left = 8
Height = 14
Top = 288
Width = 26
Caption = 'Class'
ParentColor = False
end
object ClassEdit: TEdit
Left = 8
Height = 21
Top = 304
Width = 304
TabOrder = 7
end
end

View File

@ -0,0 +1,144 @@
unit AnchorDlgForm;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Buttons,
StdCtrls, ExtCtrls, HtmlCode;
type
TAnchorType = (atUrl, atMakeLocalAnchor, atRefLocalAnchor);
{ TAnchorDlgForm }
TAnchorDlgForm = class(TForm)
CancelBtn: TBitBtn;
DescrEdit: TEdit;
AnchorTypeGroup: TRadioGroup;
ClassEdit: TEdit;
IdEdit: TEdit;
Label4: TLabel;
Label5: TLabel;
TitleEdit: TEdit;
Label3: TLabel;
UrlEdit: TEdit;
Label1: TLabel;
UrlLabel: TLabel;
OkBtn: TBitBtn;
procedure AnchorTypeGroupClick(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ private declarations }
function GetAnchorType: TAnchorType;
function GetDescription: String;
function GetDomClass: String;
function GetDomId: String;
function GetTitle: String;
function GetUrl: String;
procedure SetDescription(AValue: String);
procedure SetDomClass(AValue: String);
procedure SetDomId(AValue: String);
procedure SetTitle(AValue: String);
procedure SetUrl(AValue: String);
public
{ public declarations }
property AnchorType: TAnchorType read GetAnchorType;
property Description: String read GetDescription write SetDescription;
property Url: String read GetUrl write SetUrl;
property Title: String read GetTitle write SetTitle;
property DomId: String read GetDomId write SetDomId;
property DomClass: String read GetDomClass write SetDomClass;
end;
implementation
{$R *.lfm}
const
idxUrl = 0;
idxMakeLocalAnchor = 1;
idxRefLocalAnchor = 2;
{ TAnchorDlgForm }
procedure TAnchorDlgForm.AnchorTypeGroupClick(Sender: TObject);
begin
case AnchorTypeGroup.ItemIndex of
idxUrl: UrlLabel.Caption := 'Url';
idxMakeLocalAnchor: UrlLabel.Caption := 'Anker naam';
idxRefLocalAnchor: UrlLabel.Caption := 'Anker naam';
else UrlLabel.Caption := 'Url';
end;
end;
procedure TAnchorDlgForm.FormShow(Sender: TObject);
begin
ActiveControl := DescrEdit;
end;
function TAnchorDlgForm.GetAnchorType: TAnchorType;
begin
case AnchorTypeGroup.ItemIndex of
idxUrl: Result := atUrl;
idxMakeLocalAnchor: Result := atMakeLocalAnchor;
idxRefLocalAnchor: Result := atRefLocalAnchor;
else Result := atUrl;
end;
end;
function TAnchorDlgForm.GetDescription: String;
begin
Result := DescrEdit.Text;
end;
function TAnchorDlgForm.GetDomClass: String;
begin
Result := ClassEdit.Text;
end;
function TAnchorDlgForm.GetDomId: String;
begin
Result := IdEdit.Text;
end;
function TAnchorDlgForm.GetTitle: String;
begin
Result := TitleEdit.Text;
end;
function TAnchorDlgForm.GetUrl: String;
begin
Result := UrlEscape(UrlEdit.Text);
end;
procedure TAnchorDlgForm.SetDescription(AValue: String);
begin
DescrEdit.Text := AValue;
end;
procedure TAnchorDlgForm.SetDomClass(AValue: String);
begin
ClassEdit.Text := AValue;
end;
procedure TAnchorDlgForm.SetDomId(AValue: String);
begin
IdEdit.Text := AValue;
end;
procedure TAnchorDlgForm.SetTitle(AValue: String);
begin
TitleEdit.Text := AValue;
end;
procedure TAnchorDlgForm.SetUrl(AValue: String);
begin
UrlEdit.Text := AValue;
end;
end.

View File

@ -0,0 +1,59 @@
unit CopyLeft;
{
EPlus: a text editor with built-in features for HTML editing and
Syntax Highlighting for several text formats
(html, xml, css, javascript, pascal, c/c++, perl, python, php, bat, ini, diff)
Copyright (C) 2011 by Bart Broersma & Flying Sheep Inc.
http://home.tiscali.nl/~knmg0017/software.htm
This library is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at your
option) any later version with the following modification:
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent modules,and
to copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the terms
and conditions of the license of that module. An independent module is a
module which is not derived from or based on this library. If you modify
this library, you may extend this exception to your version of the library,
but you are not obligated to do so. If you do not wish to do so, delete this
exception statement from your version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License
for more details.
You should have received a copy of the GNU Library General Public License
along with this library; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
}
{$mode objfpc}{$H+}
interface
//uses GPL;
const
AppName = 'EPlus';
AboutTitle = 'Over ' + AppName;
AppVersion = 'Versie 1.0.0 RC1';
CopyLeftStatement = 'Copyright (c) 2011, 2012 by Bart Broersma & FlyingSheep Inc.';
MetaGeneratorName = AppName + #32 + AppVersion + ' by Bart Broersma and Flying Sheep Inc.';
AuthorWebName = 'Bart & Mariska''s Webstek';
AuthorWebUrl = 'http://home.tiscali.nl/~knmg0017/';
LicenseText = ''; //LGPL_Text;
LicenseUrl = '';//LGPL_Url;
LicenseName = 'Gnu LGPL';
implementation
end.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,128 @@
unit EPlus_Commons;
{
EPlus: a text editor with built-in features for HTML editing and
Syntax Highlighting for several text formats
(html, xml, css, javascript, pascal, c/c++, perl, python, php, bat, ini, diff)
Copyright (C) 2011 by Bart Broersma & Flying Sheep Inc.
http://home.tiscali.nl/~knmg0017/software.htm
This library is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at your
option) any later version with the following modification:
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent modules,and
to copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the terms
and conditions of the license of that module. An independent module is a
module which is not derived from or based on this library. If you modify
this library, you may extend this exception to your version of the library,
but you are not obligated to do so. If you do not wish to do so, delete this
exception statement from your version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License
for more details.
You should have received a copy of the GNU Library General Public License
along with this library; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
}
{$mode objfpc}{$H+}
{ *********************************************************************
Common type and variable definitions for the EPlus program
Some of these can be configurable at runtime
*********************************************************************** }
interface
Type
TEditorFileType = (eftNone, eftHtml, eftXml, eftCSS, eftJS, eftFpc, eftLfm, eftC, eftPy, eftPhp,
eftPerl, eftUnixShell, eftBat, eftDiff, eftIni, eftPo);
TFileTypeMaskList = array[TEditorFileType] of string;
const
HtmlTemplateExt = '.htmlt;.hks;';
CssTemplateExt = '.csst';
JavaTemplateExt = '.jst';
STemplate = 'Sjablonen';
eftNames: array[TEditorFileType] of string = ('eftNone', 'eftHtml', 'eftXml', 'eftCSS',
'eftJS', 'eftFpc', 'eftLfm', 'eftC' , 'eftPy', 'eftPhp',
'eftPerl', 'eftUnixShell', 'eftBat', 'eftDiff', 'eftIni', 'eftPo');
eftFilterNames: array[TEditorFileType] of string = ('', 'Html bestanden', 'XML bestanden', 'CSS bestanden',
'Javascript bestanden', 'Pascal bronbestanden', 'Lazarus en Delphi forms', 'C en C++ bronbestanden' ,
'Python bronbestanden', 'PHP bronbestanden',
'Perl bronbestanden', 'Unix shellscripts', 'Batch bestanden', 'Diff''s en patches',
'Configuratie bestanden', 'po language files');
{$IFDEF WINDOWS}
AllFilesMask = '*.*';
{$ENDIF}
FilterText = 'Tekst bestanden (*.txt)|*.txt';
FilterAll = 'Alle bestanden ('+ AllFilesMask + ')|' + AllFilesMask;
//Filter indexes
fiEftFirst = Ord(Low(TEditorFileType)) + 1;
fiHtml = Ord(eftHtml);
fiXml = Ord(eftXml);
fiCss = Ord(eftCss);
fiJS = Ord(eftJS);
fiFpc = Ord(eftFpc);
fiLfm = Ord(eftLfm);
fiC = Ord(eftC);
fiPy = Ord(eftPy);
fiPhp = Ord(eftPhp);
fiPerl = Ord(eftPerl);
fiUnixShell = Ord(eftUnixShell);
fiBat = Ord(eftBat);
fiDiff = Ord(eftDiff);
fiIni = Ord(eftIni);
fiPo = Ord(eftPo);
fiEftLast = Ord(High(TEditorFileType));
fiText = fiEftLast + 1;
fiAll = fiEftLast + 2;
DefaultFiletypeMaskList: TFileTypeMaskList = ('.txt',//eftNone (no need to guess syntax for .txt files)
'.htm;.html;.xhtml;.xhtm;' + HtmlTemplateExt, //eftHtml
'.xml;.adfx', //eftXml
'.css;' + CssTemplateExt, //eftCss
'.js;' + JavaTemplateExt, //eftJava
'.pp;.pas;.inc;.lpr;.dpr;.lrs;.lpk;.dpk', //eftFpc
'.lfm;.dfm', //eftLfm
'.c;.cpp;.h;.hpp;.hh;.gcc;.cc;.c++', //eftC
'.py', //eftPython
'.php', //eftPhp
'.pl', //eftPerl
'.sh', //eftUnixShell
'.bat', //eftBat
'.diff;.patch', //eftDiff
'.ini;.conf;.cfg', //eftIni
'.po'); //eftPo
DefaultTemplateMaskList = HtmlTemplateExt + ';' + CssTemplateExt + ';' + JavaTemplateExt;
MruEntries = 6;
implementation
end.

View File

@ -0,0 +1,265 @@
{
EPlus: a text editor with built-in features for HTML editing and
Syntax Highlighting for several text formats
(html, xml, css, javascript, pascal, c/c++, perl, python, php, bat, ini, diff)
Copyright (C) 2011 by Bart Broersma & Flying Sheep Inc.
http://home.tiscali.nl/~knmg0017/software.htm
This library is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at your
option) any later version with the following modification:
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent modules,and
to copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the terms
and conditions of the license of that module. An independent module is a
module which is not derived from or based on this library. If you modify
this library, you may extend this exception to your version of the library,
but you are not obligated to do so. If you do not wish to do so, delete this
exception statement from your version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License
for more details.
You should have received a copy of the GNU Library General Public License
along with this library; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
}
unit EPlus_Config;
{$mode objfpc}{$H+}
interface
uses
SysUtils, Classes, EditorPageControl, EPlus_COmmons, CopyLeft, Forms,{FCL_Misc,} IniFiles,
LCLProc;
type
//globale type for all configurable options
TEPlusOptions = record
EditorOptions: TEditorOptions;
MainForm: record
Position: TRect; //used as Left, Top, Widht, Height
InitialDir: String;
end;
HtmlCharMapDlg: record
Position: TPoint;
end;
NewHtmlDlg: record
Position: TPoint;
InitialDir: String;
end;
AnchorDlg: record
Position: TPoint;
end;
PictureDlg: record
Position: TPoint;
InitialDir: String;
DefaultFolderPrefix: String;
end;
TableDlg: record
Position: TPoint;
end;
FileTypeMaskList: TFileTypeMaskList;
TemplateMaskList: String;
RecentFiles: Array[0..MruEntries - 1] of String;
end;
function LoadOptions(var Options: TEPlusOptions; FileName: String): Boolean;
function SaveOptions(const Options: TEPlusOptions; FileName: String): Boolean;
function GetDefaultIniNameOnly: String;
function GetDefaultIniDir: String;
implementation
const
scMainForm = 'MainForm';
idTop = 'Top';
idLeft = 'Left';
idWidth = 'Width';
idHeight = 'Height';
idInitialDir = 'InitialDir'; //Last opened folder
scHtmlCharMapDlg = 'CharMapDlg';
scNewHtmlDlg = 'NewHtmlDlg';
scAnchorDlg = 'AnchorDlg';
scPictureDlg = 'PictureDlg';
idDefaultFolderPrefix = 'DefaultFolderPrefix'; //prefix for <.. src=SomeFolder/name.jpg ...>
scTableDlg = 'TableDlg';
scFileTypes = 'FileTypes';
scEditor = 'Editor';
idFontSize = 'FontSize';
idFontName = 'FontName';
scRecentFiles = 'RecentFiles';
idFilePrefix = 'File_%d';
function LoadOptions(var Options: TEPlusOptions; FileName: String): Boolean;
var
Ini: TIniFile;
ftIndex: TEditorFileType;
S: String;
i: Integer;
begin
Result := False;
try
Ini := Nil;
Ini := TIniFile.Create(FileName);
try
Result := True; //Return true if opening the Ini file is successfull
Options.EditorOptions.FontName := Ini.ReadString(scEditor, idFontName, '');
Options.EditorOptions.FontSize := Ini.ReadInteger(scEditor, idFontSize, 0);
Options.MainForm.Position.Left := Ini.ReadInteger(scMainForm, idLeft, -1);
Options.MainForm.Position.Top := Ini.ReadInteger(scMainForm, idTop, -1);
Options.MainForm.Position.Right := Ini.ReadInteger(scMainForm, idWidth, -1);
Options.MainForm.Position.Bottom := Ini.ReadInteger(scMainForm, idHeight, -1);
Options.MainForm.InitialDir := Ini.ReadString(scMainForm, idInitialDir, '');
//Dialogs
Options.NewHtmlDlg.Position.y := Ini.ReadInteger(scNewHtmlDlg, idTop, -1);
Options.NewHtmlDlg.Position.x := Ini.ReadInteger(scNewHtmlDlg, idLeft, -1);
Options.NewHtmlDlg.InitialDir := Ini.ReadString(scNewHtmlDlg, idInitialDir, '');
Options.AnchorDlg.Position.y := Ini.ReadInteger(scAnchorDlg, idTop, -1);
Options.AnchorDlg.Position.x := Ini.ReadInteger(scAnchorDlg, idLeft, -1);
Options.HtmlCharMapDlg.Position.y := Ini.ReadInteger(scHtmlCharmapDlg, idTop, -1);
Options.HtmlCharMapDlg.Position.x := Ini.ReadInteger(scHtmlCharmapDlg, idLeft, -1);
Options.PictureDlg.Position.y := Ini.ReadInteger(scPictureDlg, idTop, -1);
Options.PictureDlg.Position.x := Ini.ReadInteger(scPictureDlg, idLeft, -1);
Options.PictureDlg.InitialDir := Ini.ReadString(scPictureDlg, idInitialDir, '');
Options.PictureDlg.DefaultFolderPrefix := Ini.ReadString(scPictureDlg, idDefaultFolderPrefix, '');
Options.TableDlg.Position.y := Ini.ReadInteger(scTableDlg, idTop, -1);
Options.TableDlg.Position.x := Ini.ReadInteger(scTableDlg, idLeft, -1);
//Recent files
for i := 0 to MruEntries -1 do
begin
Options.RecentFiles[i] := Ini.ReadString(scRecentFiles, Format(idFilePrefix,[i]), '');
end;
//Filters
for ftIndex := Low(TEditorFileType) to High(TEditorFileType) do
begin
S := Ini.ReadString(scFileTypes, eftNames[ftIndex], '');
if (S <> '') then Options.FileTypeMaskList[ftIndex] := S;
end;
finally
Ini.Free;
Ini := Nil;
end;
except
//Only handle read errors here!
on E: EStreamError do
begin
Result := false;
if Assigned(Ini) then Ini.Free;
Exit;
end;
end;
end;
function SaveOptions(const Options: TEPlusOptions; FileName: String): Boolean;
var
Ini: TIniFile;
ftIndex: TEditorFileType;
i: Integer;
begin
Result := False;
try
Ini := Nil;
Ini := TIniFile.Create(FileName);
try
Ini.CacheUpdates := True;
Ini.WriteString(scEditor, idFontName, Options.EditorOptions.FontName);
Ini.WriteInteger(scEditor, idFontSize, Options.EditorOptions.FontSize);
Ini.WriteInteger(scMainForm, idLeft, Options.MainForm.Position.Left);
Ini.WriteInteger(scMainForm, idTop, Options.MainForm.Position.Top);
Ini.WriteInteger(scMainForm, idWidth, Options.MainForm.Position.Right);
Ini.WriteInteger(scMainForm, idHeight, Options.MainForm.Position.Bottom);
Ini.WriteString(scMainForm, idInitialDir, Options.MainForm.InitialDir);
//Dialogs
Ini.WriteInteger(scNewHtmlDlg, idTop, Options.NewHtmlDlg.Position.y);
Ini.WriteInteger(scNewHtmlDlg, idLeft, Options.NewHtmlDlg.Position.x);
Ini.WriteString(scNewHtmlDlg, idInitialDir, Options.NewHtmlDlg.InitialDir);
Ini.WriteInteger(scAnchorDlg, idTop, Options.AnchorDlg.Position.y);
Ini.WriteInteger(scAnchorDlg, idLeft, Options.AnchorDlg.Position.x);
Ini.WriteInteger(scHtmlCharMapDlg, idTop, Options.HtmlCharMapDlg.Position.y);
Ini.WriteInteger(scHtmlCharMapDlg, idLeft, Options.HtmlCharMapDlg.Position.x);
Ini.WriteInteger(scPictureDlg, idTop, Options.PictureDlg.Position.y);
Ini.WriteInteger(scPictureDlg, idLeft, Options.PictureDlg.Position.x);
Ini.WriteString(scPictureDlg, idInitialDir, Options.PictureDlg.InitialDir);
Ini.WriteString(scPictureDlg, idDefaultFolderPrefix, Options.PictureDlg.DefaultFolderPrefix);
Ini.WriteInteger(scTableDlg, idTop, Options.TableDlg.Position.y);
Ini.WriteInteger(scTableDlg, idLeft, Options.TableDlg.Position.x);
//Recent Files
for i := 0 to MruEntries - 1 do
begin
Ini.WriteString(scRecentFiles, Format(idFilePrefix,[i]), Options.RecentFiles[i]);
end;
//Filters
for ftIndex := Low(TEditorFileType) to High(TEditorFileType) do
begin
Ini.WriteString(scFileTypes, eftNames[ftIndex], Options.FileTypeMaskList[ftIndex]);
end;
try
Ini.UpdateFile;
Result := True;
except
Result := false;
end;
finally
Ini.Free;
Ini := Nil;
end;
except
//Only handle write errors
on E: EStreamError do
begin
debugln('Error creating/writing configfile: ',FileName);
Result := false;
if Assigned(Ini) then Ini.Free;
Exit;
end;
end;
end;
function GetDefaultIniNameOnly: String;
begin
Result := AppName + '.ini';//IniExt;
end;
function GetDefaultIniDir: String;
begin
Result := ExcludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName));
end;
end.

View File

@ -0,0 +1,320 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta name="generator" content="HTML KLadblok Versie 3.0.1 by Flying Sheep Inc.">
<title>EPlus historie informatie</title>
<style type="text/css">
body{
background-color: #ffffff;
color: #000000;
}
a:link {color: #0000ff;}
a:visited {color: #ff00ff;}
table{
border-collapse: collapse;
}
td, th{
border-style: inset;
border-color: gray;
border-width: 2px;
padding: 5px;
text-align: left;
}
td{
vertical-align: top;
}
</style>
</head>
<body>
<h1>EPlus</h1>
<p>
EPlus is de opvolger van Html Kladblok.<br>
De historie informatie van Html Kladblok is helaas nogal onvolledig, omdat ik niet alle wijzigingen heb bijgehouden
in het verleden en derhalve niet alle jaartallen en versienummers kan reproduceren.<br>
Vanaf Html Kladblok versie 3.0.0 is de versie historie compleet.<br>
Vanaf het verschijnen van EPlus start de versienummering weer bij 1.0.0.
</p>
<h3>Overzicht</h3>
<table summary="Historische informatie betreffende de ontwikkeling van HTML Kladblok">
<tr>
<th>Jaar
</th>
<th>Versie
</th>
<th>Opmerkingen
</th>
</tr>
<tr>
<td>2012
</td>
<td>1.0.0 RC1
</td>
<td>Eerste versie van EPlus.<br>
Het programma is volledig van de grond af opnieuw opgebouwd met Lazarus/FreePascal.<br>
De broncode is volledig cross-platform en kan gecompileerd worden voor Windows, Linus of MacOS (Darwin).<br>
Character encoding (ook intern) is UTF-8.
Forse uitbreiding van het aantal ondersteunde bestandstypen voor syntax highlighting, o.a. Pascal, C, Php,
Perl, Python, Linux shell scripts, Dos/Windows batch bestanden, Ini bestanden, po taalbestanden.
Menu's zijn herzien.
Charactermap voor invoegen van speciale tekens als html-entiteit (bijv. &amp;nbsp;).
</td>
</tr>
<tr>
<td>2011
</td>
<td>3.0.1.6
</td>
<td>Minor bugfix (bug 005). Laatse versie van Html Kladblok
</td>
</tr>
<tr>
<td>2008
</td>
<td>3.0.1.5
</td>
<td>Minor bugfix (bug 004).
</td>
<tr>
<td>2007
</td>
<td>3.0.1.4
</td>
<td>Bugfix van bug 003. Bij openen van sjabloon of "nieuw van sjabloon" wordt nu HTML als highlighter ingesteld.
</td>
</tr>
<tr>
<td>2006
</td>
<td>3.0.1.003
</td>
<td>Optie "Geen highlighter" toegevoegd aan Menu --> Beeld --> Highlighter.<br>
Geen highlighter is de standaard instelling voor bestanden die geen htm(l), css of js extensie hebben.
</td>
</tr>
<tr>
<td>&nbsp;
</td>
<td>3.0.1.002
</td>
<td>Workaround bug 002: bij sluiten van tabbladen worden tabs nu niet meer
"onzichtbaar". Tabs nu weer op 1 regel.<br>
Spaties in bestandsnamen van plaatjes worden vervangen door "%20"
</td>
</tr>
<tr>
<td>&nbsp;
</td>
<td>3.0.1
</td>
<td>Schermafhandeling bij cre�ren en sluiten van nieuwe tabbladen
aangepast, zodat er minder flikkeringen ontstaan<br>
Tabs op meerdere regels als scherm vol is (i.p.v. scrolllen),
vanwege bug in schermafhandeling na verwijderen tab (worden "onzichtbaar")<br>
Venstergrootte en -positie worden nu standaard bewaard
</td>
</tr>
<tr>
<td>&nbsp;
</td>
<td>3.0.0
</td>
<td>MDI interface vervangen door Tabbed Document Interface (TDI)
Highlighters voor Css en JavaScript toegevoegd
Regelnummering (op verticale liniaal) als optie
</td>
</tr>
<tr>
<td>&nbsp;
</td>
<td>2.0.5
</td>
<td>Laatste bugfixes van MDI versie
</td>
</tr>
<tr>
<td>2005
</td>
<td>2.0.0
</td>
<td>Syntax highlighting toegevoegd middels SynEdit componenenten<br>
Licentie nu Open Source middels MPL 1.1
</td>
</tr>
<tr>
<td>&nbsp;
</td>
<td>??
</td>
<td>"Drag and drop" geimplementeerd
</td>
</tr>
<tr>
<td>&nbsp;
</td>
<td>??
</td>
<td>Gegenereerde code is nu in pricipe Html 4.01 Strict
</td>
</tr>
<tr>
<td>2004
</td>
<td>??
</td>
<td>Opties voor bewaren van venstergroote en -plaats en fontgrootte toegevoegd<br>
Automatische detectie van plaatjesgrootte (jpg, bmp, gif) toegevoegd<br>
Sjablonen toegevoegd
</td>
</tr>
<tr>
<td>&nbsp;
</td>
<td>1.1.0
</td>
<td>Multiple Document Interface (MDI) ge�mplementeerd
</td>
</tr>
<tr>
<td>2001
</td>
<td>0.9.1
</td>
<td>Zoek en vervang functie toegevoegd
</td>
</tr>
<tr>
<td>&nbsp;
</td>
<td>0.9
</td>
<td>Eerste Win32 versie<br>
TMemo component vervangen door TRichedit zodat ook
bestanden > 64 K verwerkt kunnen worden
</td>
</tr>
<tr>
<td>2000
</td>
<td>0.1
</td>
<td>Eerste versie gemaakt met Delphi 1.0 onder Windows 3.10<br>
Html code in principe 4.01 transitional
</td>
</tr>
</table>
<h3>Bekende bugs sinds 2006</h3>
<table summary="">
<tr>
<th>Nr.
</th>
<th>Vanaf versie
</th>
<th>OS
</th>
<th>Omschrijving
</th>
<th>Status
</th>
</tr>
<tr>
<td>005
</td>
<td>?
</td>
<td>Win 9x/XP/2K
</td>
<td>Bestanden geopend via opdrachtregel worden niet correct opegslagen in MRU lijst
</td>
<td>Fix in 3.0.1.6
</td>
</tr>
<tr>
<td>004
</td>
<td>?
</td>
<td>Win 9x/XP/2K
</td>
<td>Functie IsASCIIFile geeft fout resultaat als bestand Tab-tekens bevat
</td>
<td>Fix in 3.0.1.5
</td>
</tr>
<tr>
<td>003
</td>
<td>3.0.1.003
</td>
<td>Win 9x/XP/2K
</td>
<td>Bij openen van sjabloon of "nieuw van sjabloon" wordt geen highlighter ingesteld.
</td>
<td>Fix in 3.0.1.4
</td>
</tr>
<tr>
<td>002
</td>
<td>3.0.0
</td>
<td>Win 9x/XP/2K
</td>
<td>Op niet reproduceerbare wijze ontstaat er soms bij het afsluiten van het programma een Access Violation (AV) exceptie
in de code die alle editor bestanden sluit. (Het opslaan van gewijzigde bestanden is dan reeds veilig voltooid.)
De betreffende code staat vol met debug code die bij een foutmelding getoond word.<br>
NB. De laaste ca 150x dat ik de laatste versie heb gedraaid deed de bug zich niet voor (vandaar dus: niet reproduceerbaar ...)
</td>
<td>Onduidelijk
</td>
</tr>
<tr>
<td>001
</td>
<td>3.0.0
</td>
<td>Win 9x/XP/2K
</td>
<td>Bij sluiten van tabbladen worden na het verdwijnen van de scroll-pijltjes
de overige tabbladen onzichtbaar, maar ze zijn wel aanklikbaar.<br>
Dit probleem lijkt niet rerpoduceerbaar in Delphi 5.
</td>
<td>Workaround in 3.0.1<br>
Nieuwe workaround in 3.0.1.002
</td>
</tr>
</table>
<h3>ToDo lijstje</h3>
<ul>
<li>Opties voor gebruiker om kleurgebruik van de highlighters aan te passen</li>
<li>Macro voor datum/tijd (als in: Dit bestand is het laats bijgewerkt op ...) ???</li>
</ul>
</body>
</html>

View File

@ -0,0 +1,96 @@
object HtmlCharmapForm: THtmlCharmapForm
Left = 775
Height = 227
Top = 122
Width = 431
BorderStyle = bsDialog
Caption = 'Speciale tekens'
ClientHeight = 227
ClientWidth = 431
OnCreate = FormCreate
OnShow = FormShow
LCLVersion = '0.9.31'
object EntityGrid: TStringGrid
Left = 0
Height = 160
Top = 0
Width = 431
Align = alTop
AlternateColor = 16774367
AutoEdit = False
AutoFillColumns = True
Color = 15138815
ExtendedSelect = False
FixedCols = 0
FixedRows = 0
ParentFont = False
ParentShowHint = False
RowCount = 7
ScrollBars = ssNone
ShowHint = True
TabOrder = 0
OnKeyPress = EntityGridKeyPress
OnMouseDown = EntityGridMouseDown
OnMouseMove = EntityGridMouseMove
OnPrepareCanvas = EntityGridPrepareCanvas
ColWidths = (
85
85
85
85
87
)
end
object SelectionBox: TComboBox
Left = 0
Height = 21
Top = 160
Width = 431
Align = alTop
ItemHeight = 13
ItemIndex = 0
Items.Strings = (
'Divers'
'Grieks'
'Wiskunde en rekenen'
'Pijltjes'
)
OnChange = SelectionBoxChange
Style = csDropDownList
TabOrder = 1
Text = 'Divers'
end
object CloseBtn: TBitBtn
Left = 304
Height = 30
Top = 192
Width = 123
Cancel = True
Caption = '&Sluiten'
Kind = bkClose
ModalResult = 11
TabOrder = 2
end
object ExampleLabel: TLabel
Left = 80
Height = 14
Top = 200
Width = 80
Caption = 'ExampleLabel'
Font.Color = clRed
Font.Style = [fsBold]
ParentColor = False
ParentFont = False
ShowAccelChar = False
end
object Label1: TLabel
Left = 12
Height = 14
Top = 201
Width = 63
Caption = 'Voorbeeld:'
Font.Style = [fsBold]
ParentColor = False
ParentFont = False
end
end

View File

@ -0,0 +1,319 @@
unit HtmlCharMap;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Grids,
StdCtrls, LCLProc, Buttons;
type
THtmlCharClickEvent = procedure(AHtmlEntity: String) of object;
{ THtmlCharmapForm }
THtmlCharmapForm = class(TForm)
CloseBtn: TBitBtn;
ExampleLabel: TLabel;
Label1: TLabel;
SelectionBox: TComboBox;
EntityGrid: TStringGrid;
procedure EntityGridKeyPress(Sender: TObject; var Key: char);
procedure EntityGridMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure EntityGridMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure EntityGridPrepareCanvas(sender: TObject; aCol, aRow: Integer;
aState: TGridDrawState);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure SelectionBoxChange(Sender: TObject);
private
{ private declarations }
FOnHtmlCharClick: THtmlCharClickEvent;
procedure DoOnHtmlCharClick(AValue: String);
procedure FillMisc;
procedure FillGreek;
procedure FillMath;
procedure FillArrow;
procedure ClearEntityGrid;
function RowColToIndex(const Row, Col: Integer): Integer;
function HtmlEntityFromIndex(SelectionIndex, CellIndex: Integer): String;
public
{ public declarations }
property OnHtmlCharClick: THtmlCharClickEvent read FOnHtmlCharClick write FOnHtmlCharClick;
end;
implementation
{$R *.lfm}
const
idxMisc = 0;
idxGreek = 1;
idxMath = 2;
idxArrow = 3;
SHint = 'Klik op het teken om het als HTML-entiteit in te voegen.'^m+
'De HTML-entiteit die ingevoegd zal worden staat in het voorbeeld';
MiscCount = 24;
MiscCaptions: Array[0..MiscCount-1] of String = ('CopyRight','Registered','Trademark','Paragraaf','Sectie',
'Ampersand (&)','Harde spatie','Zacht koppelteken','Euro','Pond','Yen','Gulden','Micro','AE ligatuur','ae ligatuur',
'OE ligatuur','oe ligatuur','O slash','o slash','<<','>>','! omgekeerd','? omgekeerd','Bullet');
MiscEntities: Array[0..MiscCount-1] of String = ('&copy;','&reg;','&#8482;','&para;','&sect;',
'&amp;','&nbsp;','&shy;','&euro;','&pound;','&yen;','&fnof;','&micro;','&Aelig;','&aelig;',
'&Oelig;','&oelig;','&Oslash;','&oslash;','&laquo;','&raquo','&iexlc;','&iquest;','&bull');
GreekCount = 33;
GreekCaptions: Array[0..GreekCount -1] of String = ('alpha','beta','gamma','delta','epsilon','zeta','eta','theta',
'kappa','lambda','mu','nu','xi','pi','rho','sigma','sigma (als laatste)','tau','upsilon','phi',
'chi','psi','omega','GAMMA','DELTA','THETA','THETA symbol','XI','RHO','SIGMA','PHI','PSI','OMEGA');
GreekEntities: Array[0..GreekCount -1] of String = ('&alpha;','&beta;','&gamma;','&delta;','&epsilon;','&zeta;','&eta;','&theta;',
'&kappa;','&lambda;','&mu;','&nu;','&xi;','&pi;','&rho;','&sigma;','&sigmaf;','&tau;','&upsilon;','&phi;',
'&chi;','&psi;','&omega;','&Gamma;','&Delta','&Theta;','&thetatsym;','&Xi;','&Rho;','&Sigma;','&Phi','&Psi;','&Omega;');
MathCount = 14;
MathCaptions: Array[0..MathCount - 1] of String = ('Kleiner dan','Groter dan','Kleiner of gelijk','Groter of gelijk',
'Plusminus','Kwart','Half','Driekwart','Kwadraat','Derde macht','Gedeeld door','Graden','Wortelteken','Oneindig');
MathEntities: Array[0..MathCount - 1] of String = ('&lt;','&gt;','&le;','&ge;',
'&plusmin;','&frac14;','&frac12;','&frac34;','&sup2;','&sup3;','&divide;','&deg;','&radic;','&inf;');
ArrowCount = 10;
ArrowCaptions: Array[0..ArrowCount -1] of String = ('Links','Rechts','Op','Neer','LinksRechts',
'Dubbel links','Dubbel rechts','Dubbel op','Dubbel neer','Dubbel LR');
ArrowEntities: Array[0..ArrowCount -1] of String = ('&larr;','&rarr;','&uarr;','&darr','&harr',
'&lArr;','&rArr;','&dArr;','&uArr;','&hArr;');
{ THtmlCharmapForm }
procedure THtmlCharmapForm.SelectionBoxChange(Sender: TObject);
begin
case SelectionBox.ItemIndex of
idxMisc: FillMisc;
idxGreek: FillGreek;
idxMath: FillMath;
idxArrow: FillArrow;
else FillMisc;
end;
end;
procedure THtmlCharmapForm.DoOnHtmlCharClick(AValue: String);
begin
if (AValue <> '') and Assigned(FOnHtmlCharClick) then FOnHtmlCharClick(AValue);
end;
procedure THtmlCharmapForm.FormCreate(Sender: TObject);
begin
SelectionBox.ItemIndex := idxMisc;
EntityGrid.Hint := SHint;
end;
procedure THtmlCharmapForm.EntityGridKeyPress(Sender: TObject; var Key: char);
var
Idx: Integer;
S: String;
begin
if (Key = #13) then
begin
Key := #0;
Idx := RowColToIndex(EntityGrid.Row, EntityGrid.Col);
S := HtmlEntityFromIndex(SelectionBox.ItemIndex, Idx);
DoOnHtmlCharClick(S);
end;
end;
procedure THtmlCharmapForm.EntityGridMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
Row, Col, Idx: Integer;
S: String;
begin
//debugln('THtmlCharmapForm.EntityGridMouseDown');
if (Button = mbLeft) and (EntityGrid.MouseToGridZone(X, Y) = gzNormal) then
begin
EntityGrid.MouseToCell(X, Y, Col, Row);
//debugln(' Col = ',dbgs(col),' Row = ',dbgs(row));
Idx := RowColToIndex(Row, Col);
//debugln(' Idx = ',dbgs(idx));
S := HtmlEntityFromIndex(SelectionBox.ItemIndex, Idx);
//debugln(' S = ',S);
DoOnHtmlCharClick(S);
end;
end;
procedure THtmlCharmapForm.EntityGridMouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
var
Row, Col, Idx: Integer;
S: String;
begin
//debugln('THtmlCharmapForm.EntityGridMouseMove');
if (EntityGrid.MouseToGridZone(X, Y) = gzNormal) then
begin
EntityGrid.MouseToCell(X, Y, Col, Row);
//debugln(' Col = ',dbgs(col),' Row = ',dbgs(row));
Idx := RowColToIndex(Row, Col);
//debugln(' Idx = ',dbgs(idx));
S := HtmlEntityFromIndex(SelectionBox.ItemIndex, Idx);
//debugln(' S = ',S);
EntityGrid.Row := Row;
EntityGrid.Col := Col;
ExampleLabel.Caption := S;
end;
end;
procedure THtmlCharmapForm.EntityGridPrepareCanvas(sender: TObject; aCol,
aRow: Integer; aState: TGridDrawState);
begin
if (gdSelected in aState) then
begin
EntityGrid.Canvas.Brush.Color := clLime;
end
end;
procedure THtmlCharmapForm.FormShow(Sender: TObject);
begin
SelectionBoxChange(Self);
ExampleLabel.Caption := '';
end;
procedure THtmlCharmapForm.FillMisc;
var
Col, Row, i: Integer;
begin
//debugln('FillMisc');
ClearEntityGrid;
i := (MiscCount div EntityGrid.ColCount);
if (MiscCount mod EntityGrid.ColCount) <> 0 then Inc(i);
EntityGrid.RowCount := i;
Col := 0;
Row := 0;
for i := 0 to MiscCount - 1 do
begin
EntityGrid.Cells[Col, Row] := MiscCaptions[i];
Inc(Col);
if (Col > EntityGrid.ColCount - 1) then
begin
Col := 0;
Inc(Row);
if (Row > EntityGrid.RowCount - 1) then Break;
end;
end;
end;
procedure THtmlCharmapForm.FillGreek;
var
Col, Row, i: Integer;
begin
//debugln('FillGreek');
ClearEntityGrid;
i := (GreekCount div EntityGrid.ColCount);
if (GreekCount mod EntityGrid.ColCount) <> 0 then Inc(i);
EntityGrid.RowCount := i;
Col := 0;
Row := 0;
for i := 0 to GreekCount - 1 do
begin
EntityGrid.Cells[Col, Row] := GreekCaptions[i];
Inc(Col);
if (Col > EntityGrid.ColCount - 1) then
begin
Col := 0;
Inc(Row);
if (Row > EntityGrid.RowCount - 1) then Break;
end;
end;
end;
procedure THtmlCharmapForm.FillMath;
var
Col, Row, i: Integer;
begin
//debugln('FillMath');
ClearEntityGrid;
i := (MathCount div EntityGrid.ColCount);
if (MathCount mod EntityGrid.ColCount) <> 0 then Inc(i);
EntityGrid.RowCount := i;
Col := 0;
Row := 0;
for i := 0 to MathCount - 1 do
begin
EntityGrid.Cells[Col, Row] := MathCaptions[i];
Inc(Col);
if (Col > EntityGrid.ColCount - 1) then
begin
Col := 0;
Inc(Row);
if (Row > EntityGrid.RowCount - 1) then Break;
end;
end;
end;
procedure THtmlCharmapForm.FillArrow;
var
Col, Row, i: Integer;
begin
//debugln('FillArrow');
ClearEntityGrid;
i := (ArrowCount div EntityGrid.ColCount);
if (ArrowCount mod EntityGrid.ColCount) <> 0 then Inc(i);
EntityGrid.RowCount := i;
Col := 0;
Row := 0;
for i := 0 to ArrowCount - 1 do
begin
EntityGrid.Cells[Col, Row] := ArrowCaptions[i];
Inc(Col);
if (Col > EntityGrid.ColCount - 1) then
begin
Col := 0;
Inc(Row);
if (Row > EntityGrid.RowCount - 1) then Break;
end;
end;
end;
procedure THtmlCharmapForm.ClearEntityGrid;
begin
EntityGrid.Clean(0,0,EntityGrid.ColCount-1,EntityGrid.RowCount-1, [gzNormal, gzFixedCols, gzFixedRows, gzFixedCells]);
EntityGrid.Col := 0;
EntityGrid.Row := 0;
end;
function THtmlCharmapForm.RowColToIndex(const Row, Col: Integer): Integer;
begin
Result := Row * EntityGrid.ColCount + Col;
end;
function THtmlCharmapForm.HtmlEntityFromIndex(SelectionIndex, CellIndex: Integer): String;
begin
Result := '';
if (CellIndex < 0) then exit;
case SelectionIndex of
idxMisc: if (CellIndex < MiscCount) then Result := MiscEntities[CellIndex];
idxGreek: if (CellIndex < GreekCount) then Result := GreekEntities[CellIndex];
idxMath: if (CellIndex < MathCount) then Result := MathEntities[CellIndex];
idxArrow: if (CellIndex < ArrowCount) then result := ArrowEntities[CellIndex];
end;
end;
end.

View File

@ -0,0 +1,417 @@
{ HtmlCode unit
Copyright (C) 2012 by Bart Broersma
This library is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at your
option) any later version with the following modification:
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent modules,and
to copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the terms
and conditions of the license of that module. An independent module is a
module which is not derived from or based on this library. If you modify
this library, you may extend this exception to your version of the library,
but you are not obligated to do so. If you do not wish to do so, delete this
exception statement from your version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License
for more details.
You should have received a copy of the GNU Library General Public License
along with this library; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
}
unit HtmlCode;
{$mode objfpc}{$H+}
interface
uses {CopyLeft,} Classes, SysUtils, Graphics, StdCtrls, fpimage{, LCL_Misc};
type
THtmlDocType = (DocType_Html_401_Strict, DocType_Html_401_TR, DocType_Html_5, DocType_None);
THtmlDocTypeStrings = Array[THtmlDocType] of String;
const
SDocType_Html401_Strict = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"' + LineEnding +
' "http://www.w3.org/TR/html4/strict.dtd">';
SDocType_Html401_TR = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"'+ LineEnding +
'"http://www.w3.org/TR/html4/loose.dtd">';
SDocType_Html_5 = '<!DOCTYPE html>';
SDocType_None = '';
HtmlDocTypeStrings: THtmlDocTypeStrings = (SDocType_Html401_Strict, SDocType_Html401_TR, SDocType_Html_5, SDocType_None);
html_start = '<html>';
html_end = '</html>';
head_start = '<head>';
head_end = '</head>';
meta_content_charset_utf8 = '<meta http-equiv="content-type" content="text/html; charset=utf8">';
meta_content_style_type = '<meta http-equiv="content-style-type" content="text/css">';
meta_content_script_type = '<meta http-equiv="content-script-type" content="text/javascript">';
meta_name_author = '<meta name="author" content="%s">';
meta_name_generator = '<meta name="generator" content="%s">';
title_start = '<title>';
title_end = '</title>';
anchor_end = '</a>';
bold_start= '<b>';
bold_end= '</b>';
italic_start= '<i>';
italic_end= '</i>';
underline_start= '<span style="text-decoration: underline;">';
underline_end= '</span>';
sub_start= '<sub>';
sub_end= '</sub>';
sup_start= '<sup>';
sup_end= '</sup>';
emphasis_start = '<em>';
emphasis_end = '</em>';
Strong_start = '<strong>';
Strong_end = '</strong>';
Code_start = '<code>';
Code_end = '</code>';
Quote_start = '<q>';
Quote_end = '</q>';
BlockQuote_start = '<blockquote>';
BlockQuote_end = '</blockquote>';
PRE_start = '<pre>';
PRE_end = '</pre>';
Comment_start= '<!-- ';
Comment_end= '// -->';
Script_start = '<script type="text/JavaScript">' + LineEnding ;
Script_end = LineEnding + '</script>';
Style_start = '<style type="text/css">' ;
Style_end = '</style>';
Font_end='</span>';
CenterAlign_start= '<div style="text-align: center;">';
CenterAlign_end= '</div>';
LeftAlign_start= '<div style="text-align: left;">';
LeftAlign_end= '</div>';
RightAlign_start= '<div style="text-align: right;">';
RightAlign_end= '</div>';
JustifyAlign_start = '<div style="text-align: justify;">';
JustifyAlign_end= '</div>';
Row_start = '<tr>';
Row_end = '</tr>';
Col_start = '<td>';
Col_end = '</td>';
ColHeading_start = '<th>';
ColHeading_end = '</th>';
Table_end = '</table>';
UnnumberedList_start= '<ul>'; UnnumberedList_end= '</ul>';
NumberedList_start= '<ol>'; NumberedList_end= '</ol>';
ListItem_start= '<li>'; ListItem_end= '</li>';
WordList_start= '<dl>'; WordList_end= '</dl>';
WordTerm_start= '<dt>'; WordTerm_end= '</dt>';
WordDef_start= '<dd>'; WordDef_end= '</dd>';
Red_start = '<span style="color: red;">';
Green_start = '<span style="color: green;">';
Blue_start = '<span style="color: blue;">';
Purple_start = '<span style="color: purple;">';
Orange_start = '<span style="color: orange;">';
Yellow_start = '<span style="color: yellow;">';
Black_start = '<span style="color: black;">';
White_start = '<span style="color: white;">';
Gray_start = '<span style="color: gray;">';
Maroon_start = '<span style="color: maroon;">';
Olive_start = '<span style="color: olive;">';
Fuchsia_start = '<span style="color: fuchsia;">';
Lime_start = '<span style="color: lime;">';
Navy_start = '<span style="color: navy;">';
Aqua_start = '<span style="color: aqua;">';
Teal_start = '<span style="color: teal;">';
Silver_start = '<span style="color: silver;">';
Paragraph_start= '<p>'; Paragraph_end= '</p>';
Div_start = '<div>'; Div_end = '</div>';
Span_start = '<span>'; Span_end = '</span>';
LineBreak = '<br>' ;
CopyRight = '&copy;';
Registered = '&reg;';
Trademark = '&#8482;';
NbSpace = '&nbsp;';
Lesser = '&lt;';
Greater = '&gt;';
Ampersand = '&amp;';
function Favicon(const ASource: String): String;
function StyleSheet(const ASource: String): String;
function StyleSheet(const ASource, AMedia: String): String;
function Table_Start(const AID, ACLass, ASummary: String): String;
function CreateTable(const AID, ACLass, ASummary: String; const ColCount, RowCount: Integer): String;
function TabbedTextToHtmlTableContent(const AText: String): String;
function Img(const ASource, AId, AClass, AFloatStyle, AWidth, AHeight, AAlt, ATitle: String): String;
function CreateHtml(const ADocType: THtmlDocType; const AAuthor, ATitle, AFavicon, AStyleSheet, AInlineStyle: String;
const AGeneratorName: String = ''): String;
function HtmlToColor(const Value: String): TColor;
function ColorToHtml(const AColor: TColor): String;
Procedure DoHtmlDirSeparators (Var FileName : String);
function UrlEscape(const Url: String): String;
implementation
const
HtmlDirectorySeparator = '/';
function Favicon(const ASource: String): String;
begin
Result := Format('<link rel="icon" href="%s" type="image/x-icon">',[ASource]) + LineEnding +
Format('<link rel="shortcut icon" href="%s" type="image/x-icon">',[ASource]);
end;
function StyleSheet(const ASource: String): String;
begin
Result := Format('<link rel="stylesheet" href="%s" type="text/css">',[ASource]);
end;
function StyleSheet(const ASource, AMedia: String): String;
begin
Result := Format('<link rel="stylesheet" href="%s" type="text/css" media="%s">',[ASource, AMedia]);
end;
function Table_Start(const AID, ACLass, ASummary: String): String;
begin
Result := '<table';
if AID <> '' then Result := Result + ' id="' + AID + '"';
if AClass <> '' then Result := Result + ' class="' + AClass + '"';
if ASummary <> '' then Result := Result + ' summary="' + ASummary + '"';
Result := Result + '>';
end;
function CreateTable(const AID, ACLass, ASummary: String; const ColCount,
RowCount: Integer): String;
const
Ident = #32#32;
var
Row, Col: Integer;
begin
Result := Table_Start(AID, ACLass, ASummary) + LineEnding;
for Row := 1 to RowCount do
begin
Result := Result + row_start + LineEnding;
for Col := 1 to ColCount do
begin
if (Row = 1) then
Result := Result + Ident + ColHeading_start + LineEnding
else
Result := Result + Ident + Col_start + LineEnding;
if (Row = 1) then
Result := Result + Ident + ColHeading_end + LineEnding
else
Result := Result + Ident + Col_end + LineEnding;
end;
Result := Result + row_end + LineEnding;
end;
Result := Result + table_end;
end;
function TabbedTextToHtmlTableContent(const AText: String): String;
const
Tab = #9;
var
SL: TStringList;
i, p: Integer;
Current, S: String;
begin
Result := '';
//workaround for bug in ClipBoard.GetAsText
if (Length(AText) = 0) then exit;
SL := TStringList.Create;
try
p := Pos(#0, AText);
if p > 0 then
begin
SL.Text := Copy(AText,1,p-1);
end
else SL.Text := AText;
for i := 0 to SL.Count - 1 do
begin
Current := SL.Strings[i];
//debugln('Current = "',Current,'" (',DbgS(Length(Current)),')');
if (Length({Trim}(Current)) > 0) then
begin
Result := Result + row_start + LineEnding;
repeat
p := Pos(Tab, Current);
if p = 0 then
S := Current
else
S := Copy(Current,1,p-1);
if (p > 0) then System.Delete(Current,1,p);
//debugln('S = "',S,'" p = ',DbgS(p));
Result := Result + ' ' + col_start + S + col_end + LineEnding;
until (p = 0) or (Length(Current) = 0);
Result := Result + row_end + LineEnding;
end;//Length(Current) > 0
end;//for
finally
Sl.Free;
end;
end;
function Img(const ASource, AId, AClass, AFloatStyle, AWidth, AHeight, AAlt,
ATitle: String): String;
var
_Alt, _Title: String;
begin
//<img src="_lazarus.gif" ID="id" class="class" style="float: left;" width="24" height="24" ALT="alt" title="title">
_Alt := AAlt;
_Title := ATitle;
if _Alt = '' then _Alt := _Title;
if (_Title = '') and (_Alt <> '') then _Title := _Alt;
Result := '<img src="' + ASource + '"';
if AId <> '' then Result := Result + ' id="' + AId + '"';
if AClass <> '' then Result := Result + ' class="' + AClass + '"';
if AFloatStyle <> '' then Result := Result + ' style="float:' + AFloatStyle + ';"';
if AWidth <> '' then Result := Result + ' width="' + AWidth + '"';
if AHeight <> '' then Result := Result + ' height="' + AHeight + '"';
if _Alt <> '' then Result := Result + ' alt="' + _Alt + '"';
if _Title <> '' then Result := Result + ' title ="' + _Title + '"';
Result := Result + '>';
end;
function CreateHtml(const ADocType: THtmlDocType; const AAuthor, ATitle, AFavicon, AStyleSheet, AInlineStyle: String;
const AGeneratorName: String = ''): String;
begin
Result := HtmlDocTypeStrings[ADocType];
if (Result <> '') then Result := Result + LineEnding;
Result := Result + Html_Start + LineEnding;
Result := Result + Head_Start + LineEnding + LineEnding;
Result := Result + meta_content_charset_utf8 + LineEnding;
Result := Result + meta_content_style_type + LineEnding;
Result := Result + meta_content_script_type + LineEnding;
if (AAuthor <> '') then Result := Result + Format(meta_name_author,[AAuthor]) + LineEnding;
if (AGeneratorName <> '') then
Result := Result + Format(meta_name_generator,[AGeneratorName]) + LineEnding;
Result := Result + LineEnding;
Result := Result + Title_Start + ATitle + Title_End + LineEnding + LineEnding;
{
<link rel="icon" href="pictures/favicon.ico" type="image/x-icon">
<link rel="shortcut icon" href="pictures/favicon.ico" type="image/x-icon">
<link rel="stylesheet" href="standaard.css" type="text/css">
<link rel="stylesheet" href="print.css" type="text/css" media="print">
}
if (AFavicon <> '') then Result := Result + Favicon(AFavicon) + LineEnding;
if (AStyleSheet <> '') then Result := Result + AStyleSheet + LineEnding;
if (AInlineStyle <> '') then Result := Result + LineEnding + AInlineStyle + LineEnding + LineEnding;
Result := Result + LineEnding + LineEnding + Head_End + LineEnding;
Result := Result + LineEnding + Html_End;
end;
function HtmlToColor(const Value: String): TColor;
begin
//ToDo
Result := 0;
end;
{
}
function ColorToHtml(const AColor: TColor): String;
const
//uses unthemed original values for this
clBlack = TColor($000000);
clMaroon = TColor($000080);
clGreen = TColor($008000);
clOlive = TColor($008080);
clNavy = TColor($800000);
clPurple = TColor($800080);
clTeal = TColor($808000);
clGray = TColor($808080);
clSilver = TColor($C0C0C0);
clRed = TColor($0000FF);
clLime = TColor($00FF00);
clYellow = TColor($00FFFF);
clBlue = TColor($FF0000);
clFuchsia = TColor($FF00FF);
clAqua = TColor($FFFF00);
clLtGray = TColor($C0C0C0); // clSilver alias
clDkGray = TColor($808080); // clGray alias
clWhite = TColor($FFFFFF);
var
RgbTriple: TFPColor;
begin
case AColor of
clRed: Result := 'red';
clGreen: Result := 'green';
clBlue: Result := 'blue';
clPurple: Result := 'purple';
clYellow: Result := 'yellow';
clBlack: Result := 'black';
clWhite: Result := 'white';
clGray: Result := 'gray';
clMaroon: Result := 'maroon';
clFuchsia: Result := 'fuchsia';
clLime: Result := 'lime';
clNavy: Result := 'navy';
clAqua: Result := 'aqua';
clTeal: Result := 'teal';
clSilver: Result := 'silver';
else
begin
RgbTriple := TColorToFPColor(AColor);
Result := '#'+ IntToHex(RgbTriple.Red div $FF,2) + IntToHex(RgbTriple.Green div $FF,2) + IntToHex(RgbTriple.Blue div $FF,2);
end;
end;
end;
Procedure DoHtmlDirSeparators (Var FileName : String);
Var I : longint;
begin
For I:=1 to Length(FileName) do
If FileName[I] in AllowDirectorySeparators then
FileName[i] := HtmlDirectorySeparator;
end;
function UrlEscape(const Url: String): String;
//see: http://en.wikipedia.org/wiki/Percent-encoding
begin
Result := StringReplace(Url, #32, '%20', [rfReplaceAll]);
end;
end.

View File

@ -0,0 +1,553 @@
{ HtmlDialogs unit
Copyright (C) 2012 by Bart Broersma & Flying Sheep Inc.
http://home.tiscali.nl/~knmg0017/
This library is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at your
option) any later version with the following modification:
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent modules,and
to copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the terms
and conditions of the license of that module. An independent module is a
module which is not derived from or based on this library. If you modify
this library, you may extend this exception to your version of the library,
but you are not obligated to do so. If you do not wish to do so, delete this
exception statement from your version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License
for more details.
You should have received a copy of the GNU Library General Public License
along with this library; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
}
unit HtmlDialogs;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, HtmlCode, Controls, Forms,
NewHtmlDlgForm, AnchorDlgForm, PictureDlgForm, HtmlCharMap, NewTableForm, CopyLeft;
type
{ TNewHtmlDlg }
TNewHtmlDlg = class
private
FTop: Integer;
FLeft: Integer;
FInitialDir: String;
FDocType: THtmlDocType;
FBackGroundColor: String;
FBackGroundImage: String;
FTextColor: String;
FLinkColor: String;
FVisitedColor: String;
FTitle: String;
FFavicon: String;
FUseStyleSheet: Boolean;
FDefaultStyleSheet: String;
FPrintStyleSheet: String;
//FInlineStyle: String;
FAuthor: String;
FHtmlText: String;
FDlg: TNewHtmlDlgForm;
protected
function GetInlineStyle: String;
function GetHtmlText: String;
procedure GetFormValues;
procedure SetFormValues;
public
function Execute: Boolean;
constructor Create;
destructor Destroy; override;
property Top: Integer read FTop write FTop;
property Left: Integer read FLeft write FLeft;
property InitialDir: string read FInitialDir write FInitialDir;
property Text: String read FHtmlText;
end;
{ TAnchorDlg }
TAnchorDlg = class
private
FAnchorText: String;
FTop: Integer;
FLeft: Integer;
FUrl: String;
FDescription: String; //the visual text for the link
FTitle: String;
FId: String;
FClass: String;
FAnchorType: TAnchorType;
FDlg: TAnchorDlgForm;
function GetLinkRef: String; // the < a href=""> part
protected
function GetAnchorText: String;
procedure GetFormValues;
procedure SetFormValues;
public
function Execute: Boolean;
constructor Create;
destructor Destroy; override;
property Top: Integer read FTop write FTop;
property Left: Integer read FLeft write FLeft;
property Text: String read FAnchorText;
property LinkRef: String read GetLinkRef;
property Description: String read FDescription write FDescription;
property Title: String read FTitle;
property DomID: String read FId;
property DomClass: String read FClass;
end;
{ THtmlCharMapDlg }
THtmlCharMapDlg = class(TObject)
private
FCharMapForm: THtmlCharMapForm;
function GetLeft: Integer;
procedure SetLeft(AValue: Integer);
function GetTop: Integer;
procedure SetTop(AValue: Integer);
function GetCharClick: THtmlCharClickEvent;
procedure SetCharClick(AValue: THtmlCharClickEvent);
protected
public
property Left: Integer read GetLeft write SetLeft;
property Top: Integer read GetTop write SetTop;
property OnHtmlCharClick: THtmlCharClickEvent read GetCharClick write SetCharClick;
constructor Create;
destructor Destroy; override;
procedure Execute;
end;
{ TPictureDlg }
TPictureDlg = class(TObject)
private
FDlg: TPictureDlgForm;
FTop: Integer;
TFop: Integer;
FLeft: Integer;
FFileName: String;
FInitialDir: String;
FDefaultFolderPrefix: String;
FPicWidth: String;
FPicHeight: String;
FTitle: String;
FAlt: String;
FFloatStyle: String;
FDomId: String;
FDomClass: String;
protected
procedure GetFormValues;
procedure SetFormValues;
public
function Execute: Boolean;
constructor Create;
destructor Destroy; override;
property Top: Integer read FTop write FTop;
property Left: Integer read FLeft write FLeft;
property InitialDir: string read FInitialDir write FInitialDir;
property DefaultFolderPrefix: String read FDefaultFolderPrefix write FDefaultFolderPrefix;
property FileName: String read FFileName write FFileName;
property Title: String read FTitle;
property Alt: String read FAlt;
property PicWidth: String read FPicWidth;
property PicHeight: String read FPicHeight;
property FloatStyle: String read FFloatStyle;
property DomID: String read FDomId;
property DomClass: String read FDomClass;
end;
{ TTableDlg }
TTableDlg = class(TObject)
private
FDlg: TNewTableForm;
FTop: Integer;
TFop: Integer;
FLeft: Integer;
FDomId: String;
FDomClass: String;
FSummary: String;
FColCount: Integer;
FRowCount: Integer;
protected
procedure GetFormValues;
procedure SetFormValues;
public
function Execute: Boolean;
constructor Create;
destructor Destroy; override;
property Top: Integer read FTop write FTop;
property Left: Integer read FLeft write FLeft;
property DomID: String read FDomId;
property DomClass: String read FDomClass;
property Summary: String read FSummary;
property RowCount: Integer read FRowCount;
property ColCount: Integer read FColCount;
end;
var
NewHtmlDlg: TNewHtmlDlg;
AnchorDlg: TAnchorDlg;
HtmlCharMapDlg: THtmlCharMapDlg;
PictureDlg: TPictureDlg;
TableDlg: TTableDlg;
implementation
{ TTableDlg }
procedure TTableDlg.GetFormValues;
begin
FTop := FDlg.Top;
FLeft := FDlg.Left;
FSummary := FDlg.Summary;
FDomID := FDlg.DomId;
FDomClass := FDlg.DomClass;
FRowCount := FDlg.RowCount;
FColCount := FDlg.ColCount;
end;
procedure TTableDlg.SetFormValues;
begin
if FTop > -1 then FDlg.Top := FTop;
if FLeft > -1 then FDlg.Left := FLeft;
end;
function TTableDlg.Execute: Boolean;
begin
if not Assigned(FDlg) then FDlg := TNewTableForm.Create(nil);
SetFormValues;
Result := (FDlg.ShowModal = mrOk);
if Result then GetFormValues
else
begin //always remember Top/Left
FTop := FDlg.Top;
FLeft := FDlg.Left;
end;
end;
constructor TTableDlg.Create;
begin
FDlg := nil;
end;
destructor TTableDlg.Destroy;
begin
if Assigned(FDlg) then FDlg.Free;
inherited Destroy;
end;
{ TPictureDlg }
procedure TPictureDlg.GetFormValues;
begin
FTop := FDlg.Top;
FLeft := FDlg.Left;
FFileName := FDlg.Src;
FInitialDir := FDlg.InitialDir;
FDefaultFolderPrefix := FDlg.DefaultFolderPrefix;
FDomId := FDlg.DomId;
FDomClass := FDlg.DomClass;
FTitle := FDlg.Title;
FAlt := FDlg.Alt;
FPicWidth := FDlg.PicWidth;
FPicHeight := FDlg.PicHeight;
FFloatStyle := FDlg.FloatStyle;
end;
procedure TPictureDlg.SetFormValues;
begin
if (TFop > -1) then FDlg.Top := FTop;
if (FLeft > -1) then FDlg.Left := FLeft;
FDlg.InitialDir := FInitialDir;
FDlg.DefaultFolderPrefix := FDefaultFolderPrefix;
end;
function TPictureDlg.Execute: Boolean;
begin
if not Assigned(FDlg) then FDlg := TPictureDlgForm.Create(nil);
SetFormValues;
Result := (FDlg.ShowModal = mrOk);
if Result then GetFormValues
else
begin //always remember Top/Left
FTop := FDlg.Top;
FLeft := FDlg.Left;
end;
end;
constructor TPictureDlg.Create;
begin
FDlg := nil;
end;
destructor TPictureDlg.Destroy;
begin
if Assigned(FDlg) then FDlg.Free;
inherited Destroy;
end;
{ TAnchorDlg }
function TAnchorDlg.GetLinkRef: String;
var
STitle, SId, SClass, SCombined: String;
begin
if (FTitle <> '') then STitle := 'title="' + FTitle + '"' else STitle := '';
if (FId <> '') then SId := 'id="' + FId + '"' else SId := '';
if (FClass <> '') then SClass := 'class="' + FClass + '"' else SClass := '';
SCombined := STitle;
if (SId <> '') then SCombined := SCombined + #32 + SId;
if (SClass <> '') then SCombined := SCombined + #32 + SClass;
case FAnchorType of
atUrl:
begin
Result := '<a href="' + FUrl + '"';
if (SCombined <> '') then Result := Result + #32 + SCombined;
Result := Result + '>';
end;
atMakeLocalAnchor:
begin
Result := '<a name="' + FUrl + '"';
if (SCombined <> '') then Result := Result + #32 + SCombined;
Result := Result + '>';
end;
atRefLocalAnchor:
begin
Result := '<a href="#' + FUrl + '"';
if (SCombined <> '') then Result := Result + #32 + SCombined;
Result := Result + '>';
end;
end;
end;
function TAnchorDlg.GetAnchorText: String;
begin
end;
procedure TAnchorDlg.GetFormValues;
begin
FDescription := FDlg.Description;
FUrl := FDlg.Url;
FTitle := FDlg.Title;
FId := FDlg.DomId;
FClass := FDlg.DomClass;
FAnchorType := FDlg.AnchorType;
FTop := FDlg.Top;
FLeft := FDlg.Left;
end;
procedure TAnchorDlg.SetFormValues;
begin
FDlg.Description := FDescription;
//clear Title and ID
FDlg.Title := '';
FDlg.DomId := '';
if (FTop >= 0) then FDlg.Top := FTop;
if (FLeft >= 0) then FDlg.Left := FLeft;
end;
function TAnchorDlg.Execute: Boolean;
begin
if not Assigned(FDlg) then FDlg := TAnchorDlgForm.Create(nil);
SetFormValues;
Result := (FDlg.ShowModal = mrOk);
if Result then GetFormValues
else
begin //always remember Top/Left
FTop := FDlg.Top;
FLeft := FDlg.Left;
end;
end;
constructor TAnchorDlg.Create;
begin
FDlg := nil;
FTop := -1;
FLeft := -1;
end;
destructor TAnchorDlg.Destroy;
begin
FDlg.Free;
inherited Destroy;
end;
{ TNewHtmlDlg }
function TNewHtmlDlg.GetInlineStyle: String;
begin
Result := Style_Start + LineEnding +
'body{' + LineEnding;
if (FBackGroundImage <> '') then
Result := Result + 'background: url("' + FBackGroundImage + '");' + LineEnding;
Result := Result +
'background-color: ' + FBackGroundColor + ';'+ LineEnding +
'color: ' + FTextColor + ';'+ LineEnding +
'}' + LineEnding +
'a:link {color: ' + FLinkColor + ';}' + LineEnding +
'a:visited {color: ' + FVisitedColor + ';}' + LineEnding +
Style_End;
end;
function TNewHtmlDlg.GetHtmlText: String;
var
AStyleSheet, AInlineStyle: String;
begin
AStyleSheet := '';
AInlineStyle := '';
if FUseStyleSheet then
begin
if (FDefaultStyleSheet <> '') then AStyleSheet := StyleSheet(FDefaultStyleSheet);
if (FprintStyleSheet <> '') then
begin
if (AStyleSheet <> '') then AStyleSheet := AStyleSheet + LineEnding;
AStyleSheet := AStyleSheet + StyleSheet(FPrintStyleSheet, 'print');
end;
end
else
begin
AInlineStyle := GetInlineStyle;
end;
Result := CreateHtml(FDocType, FAuthor, FTitle, FFavicon, AStyleSheet, AInlineStyle, MetaGeneratorName);
end;
procedure TNewHtmlDlg.GetFormValues;
begin
FDocType := FDlg.DocType;
FAuthor := FDlg.Author;
FTitle := FDlg.Title;
FDefaultStyleSheet := FDlg.DefaultStyleSheet;
FPrintStyleSheet := FDlg.PrintStyleSheet;
FBackGroundImage := FDlg.BackgroundImage;
FUseStyleSheet := FDlg.UseStyleSheet;
FLeft := FDlg.Left;
FTop := FDlg.Top;
FInitialDir := FDlg.InitialPictureDir;
end;
procedure TNewHtmlDlg.SetFormValues;
begin
if (FTop >= 0) then FDlg.Top := FTop;
if (FLeft >= 0) then FDlg.Left := FLeft;
FDlg.InitialPictureDir := FInitialDir;
end;
function TNewHtmlDlg.Execute: Boolean;
begin
if not Assigned(Fdlg) then FDlg := TNewHtmlDlgForm.Create(nil);
SetFormValues;
//Result := True; //<------ REMOVE THIS
Result := (FDlg.ShowModal = mrOk);
if Result then GetFormValues
else
begin //always remember Top/Left
FTop := FDlg.Top;
FLeft := FDlg.Left;
end;
if Result then FHtmlText := GetHtmlText;
end;
constructor TNewHtmlDlg.Create;
begin
FBackGroundColor := '#ffffff';
FTextColor := '#000000';
FLinkColor := '#0000ff';
FVisitedColor := '#ff00ff';
FLeft := -1;
FTop := -1;
FDocType := DocType_Html_401_Strict;
FDlg := nil;
end;
destructor TNewHtmlDlg.Destroy;
begin
if Assigned(FDlg) then FDlg.Free;
inherited Destroy;
end;
{ THtmlCharMapDlg }
constructor THtmlCharMapDlg.Create;
begin
FCharMapForm := THtmlCharMapForm.Create(nil);
end;
destructor THtmlCharMapDlg.Destroy;
begin
if Assigned(FCharMapForm) then FCharMapForm.Free;
end;
procedure THtmlCharMapDlg.Execute;
begin
FCharMapForm.Show;
end;
procedure THtmlCharMapDlg.SetLeft(AValue: Integer);
begin
if (AValue < 0) then Exit;
FCharMapForm.Left := AValue;
end;
function THtmlCharMapDlg.GetLeft: Integer;
begin
Result := FCharMapForm.Left;
end;
procedure THtmlCharMapDlg.SetTop(AValue: Integer);
begin
if (AValue < 0) then Exit;
FCharMapForm.Top := AValue;
end;
function THtmlCharMapDlg.GetTop: Integer;
begin
Result := FCharMapForm.Top;
end;
function THtmlCharMapDlg.GetCharClick: THtmlCharClickEvent;
begin
Result := FCharMapForm.OnHtmlCharClick;
end;
procedure THtmlCharMapDlg.SetCharClick(AValue: THtmlCharClickEvent);
begin
FCharMapForm.OnHtmlCharClick := AValue;
end;
end.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,22 @@
program lazedit;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Interfaces, // this includes the LCL widgetset
Forms, main {,newtableform, test_ed, eplus_commons, CopyLeft, eplus_config, HtmlCharMap,
HtmlDialogs, NewHtmlDlgForm, AnchorDlgForm, PictureDlgForm}
{ you can add units after this };
{$R *.res}
begin
RequireDerivedFormResource := True;
Application.Initialize;
Application.CreateForm(TEPlusForm, EPlusForm);
Application.Run;
end.

Binary file not shown.

File diff suppressed because it is too large Load Diff

2363
applications/lazedit/main.pp Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,752 @@
object NewHtmlDlgForm: TNewHtmlDlgForm
Left = 745
Height = 618
Top = 108
Width = 424
ActiveControl = TitleEdit
BorderStyle = bsDialog
Caption = 'Nieuwe Html pagina'
ClientHeight = 618
ClientWidth = 424
OnCreate = FormCreate
OnShow = FormShow
LCLVersion = '0.9.31'
object Label1: TLabel
Left = 19
Height = 14
Top = 8
Width = 21
Caption = 'Titel'
ParentColor = False
end
object TitleEdit: TEdit
Left = 19
Height = 21
Top = 21
Width = 385
TabOrder = 0
end
object InlineStyleBox: TGroupBox
Left = 19
Height = 272
Top = 256
Width = 385
Caption = 'Opmaak via inline stijl'
ClientHeight = 254
ClientWidth = 381
TabOrder = 3
object BackColorEdit: TEdit
Left = 11
Height = 21
Top = 16
Width = 288
TabOrder = 0
end
object TextColorEdit: TEdit
Left = 11
Height = 21
Top = 56
Width = 288
TabOrder = 1
end
object Label2: TLabel
Left = 11
Height = 14
Top = 0
Width = 82
Caption = 'Achtergrondkleur'
ParentColor = False
end
object Label3: TLabel
Left = 11
Height = 14
Top = 40
Width = 51
Caption = 'Tekstkleur'
ParentColor = False
end
object Label4: TLabel
Left = 11
Height = 14
Top = 80
Width = 47
Caption = 'Link kleur'
ParentColor = False
end
object LinkColorEdit: TEdit
Left = 13
Height = 21
Top = 96
Width = 286
TabOrder = 2
end
object Label5: TLabel
Left = 13
Height = 14
Top = 120
Width = 88
Caption = 'Bezochte linkkleur'
ParentColor = False
end
object VisitedLinkColorEdit: TEdit
Left = 13
Height = 21
Top = 136
Width = 286
TabOrder = 3
end
object Label6: TLabel
Left = 13
Height = 14
Top = 160
Width = 84
Caption = 'Achterrondplaatje'
ParentColor = False
end
object BackImageEdit: TEdit
Left = 13
Height = 21
Top = 176
Width = 286
TabOrder = 4
end
object BackColorBtn: TSpeedButton
Left = 322
Height = 22
Top = 16
Width = 23
Glyph.Data = {
36090000424D3609000000000000360000002800000018000000180000000100
2000000000000009000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00BFBD
BDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBD
BDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBD
BDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFFFFFFF00927777FF9277
77FF927777FF927777FF927777FF927777FF927777FF927777FF927777FF9277
77FF927777FF927777FF927777FF927777FF927777FF927777FF927777FF9277
77FF927777FF927777FF927777FF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBD
BDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBD
BDFFBFBDBDFFBFBDBDFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDF
DFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDF
DFFFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFF927777FF927777FF927777FF927777FF927777FF927777FF9277
77FF927777FF927777FF927777FF927777FF927777FF927777FF927777FF9277
77FFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFF927777FFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDF
DFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFF9277
77FFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFF927777FFDBDFDFFF4040FFFF4040FFFF4040FFFFDBDFDFFF36B1
77FF36B177FF36B177FFDBDFDFFFFF80FFFFFF80FFFFFF80FFFFDBDFDFFF9277
77FFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFF927777FFDBDFDFFF4040FFFF4040FFFF4040FFFFDBDFDFFF36B1
77FF36B177FF36B177FFDBDFDFFFFF80FFFFFF80FFFFFF80FFFFDBDFDFFF9277
77FFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFF927777FFDBDFDFFF4040FFFF4040FFFF4040FFFFDBDFDFFF36B1
77FF36B177FF36B177FFDBDFDFFFFF80FFFFFF80FFFFFF80FFFFDBDFDFFF9277
77FFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFF927777FFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDF
DFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFF9277
77FFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFF927777FFDBDFDFFF73AAFFFF73AAFFFF73AAFFFFDBDFDFFFFF4A
4AFFFF4A4AFFFF4A4AFFDBDFDFFF00FFFFFF00FFFFFF00FFFFFFDBDFDFFF9277
77FFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFF927777FFDBDFDFFF73AAFFFF73AAFFFF73AAFFFFDBDFDFFFFF4A
4AFFFF4A4AFFFF4A4AFFDBDFDFFF00FFFFFF00FFFFFF00FFFFFFDBDFDFFF9277
77FFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFF927777FFDBDFDFFF73AAFFFF73AAFFFF73AAFFFFDBDFDFFFFF4A
4AFFFF4A4AFFFF4A4AFFDBDFDFFF00FFFFFF00FFFFFF00FFFFFFDBDFDFFF9277
77FFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFF927777FFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDF
DFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFF9277
77FFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFF927777FF927777FF927777FF927777FF927777FF927777FF9277
77FF927777FF927777FF927777FF927777FF927777FF927777FF927777FF9277
77FFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDF
DFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDF
DFFFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFF927777FFBFBDBDFFFFFFFF00927777FF9277
77FF927777FF927777FF927777FF927777FF927777FF927777FF927777FF9277
77FF927777FF927777FF927777FF927777FF927777FF927777FF927777FF9277
77FF927777FF927777FF927777FF927777FFBFBDBDFFFFFFFF00927777FFDD96
6AFFDD966AFFDD966AFFDD966AFFDD966AFFDD966AFFDD966AFFDD966AFFDD96
6AFFDD966AFFDD966AFFDD966AFFDD966AFFDD966AFFA4A4FFFFDD966AFFA4A4
FFFFDD966AFFA4A4FFFFDD966AFF927777FFBFBDBDFFFFFFFF00927777FFE8B6
97FFE8B697FFE8B697FFE8B697FFE8B697FFE8B697FFE8B697FFE8B697FFE8B6
97FFE8B697FFE8B697FFE8B697FFE8B697FFA4A4FFFF400080FFA4A4FFFF4000
80FFA4A4FFFF400080FFA4A4FFFF927777FFBFBDBDFFFFFFFF00927777FFF4DD
CEFFF4DDCEFFF4DDCEFFF4DDCEFFF4DDCEFFF4DDCEFFF4DDCEFFF4DDCEFFF4DD
CEFFF4DDCEFFF4DDCEFFF4DDCEFFF4DDCEFFF4DDCEFFA4A4FFFFF4DDCEFFA4A4
FFFFF4DDCEFFA4A4FFFFF4DDCEFF927777FFFFFFFF00FFFFFF00BFBDBDFF9277
77FF927777FF927777FF927777FF927777FF927777FF927777FF927777FF9277
77FF927777FF927777FF927777FF927777FF927777FF927777FF927777FF9277
77FF927777FF927777FF927777FFBFBDBDFFFFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = ColorBtnClick
end
object TextColorBtn: TSpeedButton
Left = 322
Height = 22
Top = 56
Width = 23
Glyph.Data = {
36090000424D3609000000000000360000002800000018000000180000000100
2000000000000009000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00BFBD
BDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBD
BDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBD
BDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFFFFFFF00927777FF9277
77FF927777FF927777FF927777FF927777FF927777FF927777FF927777FF9277
77FF927777FF927777FF927777FF927777FF927777FF927777FF927777FF9277
77FF927777FF927777FF927777FF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBD
BDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBD
BDFFBFBDBDFFBFBDBDFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDF
DFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDF
DFFFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFF927777FF927777FF927777FF927777FF927777FF927777FF9277
77FF927777FF927777FF927777FF927777FF927777FF927777FF927777FF9277
77FFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFF927777FFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDF
DFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFF9277
77FFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFF927777FFDBDFDFFF4040FFFF4040FFFF4040FFFFDBDFDFFF36B1
77FF36B177FF36B177FFDBDFDFFFFF80FFFFFF80FFFFFF80FFFFDBDFDFFF9277
77FFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFF927777FFDBDFDFFF4040FFFF4040FFFF4040FFFFDBDFDFFF36B1
77FF36B177FF36B177FFDBDFDFFFFF80FFFFFF80FFFFFF80FFFFDBDFDFFF9277
77FFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFF927777FFDBDFDFFF4040FFFF4040FFFF4040FFFFDBDFDFFF36B1
77FF36B177FF36B177FFDBDFDFFFFF80FFFFFF80FFFFFF80FFFFDBDFDFFF9277
77FFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFF927777FFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDF
DFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFF9277
77FFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFF927777FFDBDFDFFF73AAFFFF73AAFFFF73AAFFFFDBDFDFFFFF4A
4AFFFF4A4AFFFF4A4AFFDBDFDFFF00FFFFFF00FFFFFF00FFFFFFDBDFDFFF9277
77FFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFF927777FFDBDFDFFF73AAFFFF73AAFFFF73AAFFFFDBDFDFFFFF4A
4AFFFF4A4AFFFF4A4AFFDBDFDFFF00FFFFFF00FFFFFF00FFFFFFDBDFDFFF9277
77FFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFF927777FFDBDFDFFF73AAFFFF73AAFFFF73AAFFFFDBDFDFFFFF4A
4AFFFF4A4AFFFF4A4AFFDBDFDFFF00FFFFFF00FFFFFF00FFFFFFDBDFDFFF9277
77FFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFF927777FFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDF
DFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFF9277
77FFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFF927777FF927777FF927777FF927777FF927777FF927777FF9277
77FF927777FF927777FF927777FF927777FF927777FF927777FF927777FF9277
77FFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDF
DFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDF
DFFFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFF927777FFBFBDBDFFFFFFFF00927777FF9277
77FF927777FF927777FF927777FF927777FF927777FF927777FF927777FF9277
77FF927777FF927777FF927777FF927777FF927777FF927777FF927777FF9277
77FF927777FF927777FF927777FF927777FFBFBDBDFFFFFFFF00927777FFDD96
6AFFDD966AFFDD966AFFDD966AFFDD966AFFDD966AFFDD966AFFDD966AFFDD96
6AFFDD966AFFDD966AFFDD966AFFDD966AFFDD966AFFA4A4FFFFDD966AFFA4A4
FFFFDD966AFFA4A4FFFFDD966AFF927777FFBFBDBDFFFFFFFF00927777FFE8B6
97FFE8B697FFE8B697FFE8B697FFE8B697FFE8B697FFE8B697FFE8B697FFE8B6
97FFE8B697FFE8B697FFE8B697FFE8B697FFA4A4FFFF400080FFA4A4FFFF4000
80FFA4A4FFFF400080FFA4A4FFFF927777FFBFBDBDFFFFFFFF00927777FFF4DD
CEFFF4DDCEFFF4DDCEFFF4DDCEFFF4DDCEFFF4DDCEFFF4DDCEFFF4DDCEFFF4DD
CEFFF4DDCEFFF4DDCEFFF4DDCEFFF4DDCEFFF4DDCEFFA4A4FFFFF4DDCEFFA4A4
FFFFF4DDCEFFA4A4FFFFF4DDCEFF927777FFFFFFFF00FFFFFF00BFBDBDFF9277
77FF927777FF927777FF927777FF927777FF927777FF927777FF927777FF9277
77FF927777FF927777FF927777FF927777FF927777FF927777FF927777FF9277
77FF927777FF927777FF927777FFBFBDBDFFFFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = ColorBtnClick
end
object LinkColorBtn: TSpeedButton
Left = 322
Height = 22
Top = 96
Width = 23
Glyph.Data = {
36090000424D3609000000000000360000002800000018000000180000000100
2000000000000009000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00BFBD
BDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBD
BDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBD
BDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFFFFFFF00927777FF9277
77FF927777FF927777FF927777FF927777FF927777FF927777FF927777FF9277
77FF927777FF927777FF927777FF927777FF927777FF927777FF927777FF9277
77FF927777FF927777FF927777FF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBD
BDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBD
BDFFBFBDBDFFBFBDBDFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDF
DFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDF
DFFFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFF927777FF927777FF927777FF927777FF927777FF927777FF9277
77FF927777FF927777FF927777FF927777FF927777FF927777FF927777FF9277
77FFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFF927777FFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDF
DFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFF9277
77FFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFF927777FFDBDFDFFF4040FFFF4040FFFF4040FFFFDBDFDFFF36B1
77FF36B177FF36B177FFDBDFDFFFFF80FFFFFF80FFFFFF80FFFFDBDFDFFF9277
77FFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFF927777FFDBDFDFFF4040FFFF4040FFFF4040FFFFDBDFDFFF36B1
77FF36B177FF36B177FFDBDFDFFFFF80FFFFFF80FFFFFF80FFFFDBDFDFFF9277
77FFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFF927777FFDBDFDFFF4040FFFF4040FFFF4040FFFFDBDFDFFF36B1
77FF36B177FF36B177FFDBDFDFFFFF80FFFFFF80FFFFFF80FFFFDBDFDFFF9277
77FFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFF927777FFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDF
DFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFF9277
77FFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFF927777FFDBDFDFFF73AAFFFF73AAFFFF73AAFFFFDBDFDFFFFF4A
4AFFFF4A4AFFFF4A4AFFDBDFDFFF00FFFFFF00FFFFFF00FFFFFFDBDFDFFF9277
77FFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFF927777FFDBDFDFFF73AAFFFF73AAFFFF73AAFFFFDBDFDFFFFF4A
4AFFFF4A4AFFFF4A4AFFDBDFDFFF00FFFFFF00FFFFFF00FFFFFFDBDFDFFF9277
77FFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFF927777FFDBDFDFFF73AAFFFF73AAFFFF73AAFFFFDBDFDFFFFF4A
4AFFFF4A4AFFFF4A4AFFDBDFDFFF00FFFFFF00FFFFFF00FFFFFFDBDFDFFF9277
77FFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFF927777FFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDF
DFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFF9277
77FFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFF927777FF927777FF927777FF927777FF927777FF927777FF9277
77FF927777FF927777FF927777FF927777FF927777FF927777FF927777FF9277
77FFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDF
DFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDF
DFFFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFF927777FFBFBDBDFFFFFFFF00927777FF9277
77FF927777FF927777FF927777FF927777FF927777FF927777FF927777FF9277
77FF927777FF927777FF927777FF927777FF927777FF927777FF927777FF9277
77FF927777FF927777FF927777FF927777FFBFBDBDFFFFFFFF00927777FFDD96
6AFFDD966AFFDD966AFFDD966AFFDD966AFFDD966AFFDD966AFFDD966AFFDD96
6AFFDD966AFFDD966AFFDD966AFFDD966AFFDD966AFFA4A4FFFFDD966AFFA4A4
FFFFDD966AFFA4A4FFFFDD966AFF927777FFBFBDBDFFFFFFFF00927777FFE8B6
97FFE8B697FFE8B697FFE8B697FFE8B697FFE8B697FFE8B697FFE8B697FFE8B6
97FFE8B697FFE8B697FFE8B697FFE8B697FFA4A4FFFF400080FFA4A4FFFF4000
80FFA4A4FFFF400080FFA4A4FFFF927777FFBFBDBDFFFFFFFF00927777FFF4DD
CEFFF4DDCEFFF4DDCEFFF4DDCEFFF4DDCEFFF4DDCEFFF4DDCEFFF4DDCEFFF4DD
CEFFF4DDCEFFF4DDCEFFF4DDCEFFF4DDCEFFF4DDCEFFA4A4FFFFF4DDCEFFA4A4
FFFFF4DDCEFFA4A4FFFFF4DDCEFF927777FFFFFFFF00FFFFFF00BFBDBDFF9277
77FF927777FF927777FF927777FF927777FF927777FF927777FF927777FF9277
77FF927777FF927777FF927777FF927777FF927777FF927777FF927777FF9277
77FF927777FF927777FF927777FFBFBDBDFFFFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = ColorBtnClick
end
object VisitedColorBtn: TSpeedButton
Left = 322
Height = 22
Top = 136
Width = 23
Glyph.Data = {
36090000424D3609000000000000360000002800000018000000180000000100
2000000000000009000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00BFBD
BDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBD
BDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBD
BDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFFFFFFF00927777FF9277
77FF927777FF927777FF927777FF927777FF927777FF927777FF927777FF9277
77FF927777FF927777FF927777FF927777FF927777FF927777FF927777FF9277
77FF927777FF927777FF927777FF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBD
BDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBDBDFFBFBD
BDFFBFBDBDFFBFBDBDFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDF
DFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDF
DFFFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFF927777FF927777FF927777FF927777FF927777FF927777FF9277
77FF927777FF927777FF927777FF927777FF927777FF927777FF927777FF9277
77FFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFF927777FFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDF
DFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFF9277
77FFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFF927777FFDBDFDFFF4040FFFF4040FFFF4040FFFFDBDFDFFF36B1
77FF36B177FF36B177FFDBDFDFFFFF80FFFFFF80FFFFFF80FFFFDBDFDFFF9277
77FFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFF927777FFDBDFDFFF4040FFFF4040FFFF4040FFFFDBDFDFFF36B1
77FF36B177FF36B177FFDBDFDFFFFF80FFFFFF80FFFFFF80FFFFDBDFDFFF9277
77FFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFF927777FFDBDFDFFF4040FFFF4040FFFF4040FFFFDBDFDFFF36B1
77FF36B177FF36B177FFDBDFDFFFFF80FFFFFF80FFFFFF80FFFFDBDFDFFF9277
77FFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFF927777FFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDF
DFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFF9277
77FFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFF927777FFDBDFDFFF73AAFFFF73AAFFFF73AAFFFFDBDFDFFFFF4A
4AFFFF4A4AFFFF4A4AFFDBDFDFFF00FFFFFF00FFFFFF00FFFFFFDBDFDFFF9277
77FFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFF927777FFDBDFDFFF73AAFFFF73AAFFFF73AAFFFFDBDFDFFFFF4A
4AFFFF4A4AFFFF4A4AFFDBDFDFFF00FFFFFF00FFFFFF00FFFFFFDBDFDFFF9277
77FFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFF927777FFDBDFDFFF73AAFFFF73AAFFFF73AAFFFFDBDFDFFFFF4A
4AFFFF4A4AFFFF4A4AFFDBDFDFFF00FFFFFF00FFFFFF00FFFFFFDBDFDFFF9277
77FFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFF927777FFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDF
DFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFF9277
77FFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFF927777FF927777FF927777FF927777FF927777FF927777FF9277
77FF927777FF927777FF927777FF927777FF927777FF927777FF927777FF9277
77FFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDF
DFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDF
DFFFDBDFDFFFDBDFDFFFBFBDBDFF927777FFBFBDBDFFFFFFFF00927777FFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFF927777FFBFBDBDFFFFFFFF00927777FF9277
77FF927777FF927777FF927777FF927777FF927777FF927777FF927777FF9277
77FF927777FF927777FF927777FF927777FF927777FF927777FF927777FF9277
77FF927777FF927777FF927777FF927777FFBFBDBDFFFFFFFF00927777FFDD96
6AFFDD966AFFDD966AFFDD966AFFDD966AFFDD966AFFDD966AFFDD966AFFDD96
6AFFDD966AFFDD966AFFDD966AFFDD966AFFDD966AFFA4A4FFFFDD966AFFA4A4
FFFFDD966AFFA4A4FFFFDD966AFF927777FFBFBDBDFFFFFFFF00927777FFE8B6
97FFE8B697FFE8B697FFE8B697FFE8B697FFE8B697FFE8B697FFE8B697FFE8B6
97FFE8B697FFE8B697FFE8B697FFE8B697FFA4A4FFFF400080FFA4A4FFFF4000
80FFA4A4FFFF400080FFA4A4FFFF927777FFBFBDBDFFFFFFFF00927777FFF4DD
CEFFF4DDCEFFF4DDCEFFF4DDCEFFF4DDCEFFF4DDCEFFF4DDCEFFF4DDCEFFF4DD
CEFFF4DDCEFFF4DDCEFFF4DDCEFFF4DDCEFFF4DDCEFFA4A4FFFFF4DDCEFFA4A4
FFFFF4DDCEFFA4A4FFFFF4DDCEFF927777FFFFFFFF00FFFFFF00BFBDBDFF9277
77FF927777FF927777FF927777FF927777FF927777FF927777FF927777FF9277
77FF927777FF927777FF927777FF927777FF927777FF927777FF927777FF9277
77FF927777FF927777FF927777FFBFBDBDFFFFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = ColorBtnClick
end
object BackImgBtn: TSpeedButton
Left = 322
Height = 22
Top = 176
Width = 23
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00005E8E8D005D
8CBD005D8CBD005D8CBD005D8CBD005D8CBD005D8CBD005D8CBD005D8CBD005D
8CBD005D8CBD005D8CBD005D8CBD005E8E8D005B8900005B890000679AB06AB7
DAFF82CCEDFF82CCEDFF82CCEDFF82CCEDFF82CCEDFF82CCEDFF82CCEDFF82CC
EDFF82CCEDFF82CCEDFF83CDEEFF318DB9C9005E8E40005F8F000070A9A256AA
CEFF80CBEAFF7EC9E9FF7EC9E9FF7EC9E9FF7EC9E9FF7EC9E9FF7EC9E9FF7EC9
E9FF7EC9E9FF7EC9E9FF7EC9E9FF57AFD6D90066996E006699000074AD9D44A1
CBFF8AD3EFFF83CDEBFF83CDEBFF83CDEBFF83CDEBFF83CDEBFF83CDEBFF83CD
EBFF83CDEBFF83CDEBFF83CDEBFF81CDEBF2006FA8930071AB010076B29952B0
D7FF85D2EDFF89D2EEFF89D2EEFF89D2EEFF89D2EEFF89D2EEFF89D2EEFF89D2
EEFF89D2EEFF89D2EEFF89D2EEFF90D8F1FF228EC1AA0077B31D0079B69574CA
E8FF75CAE8FF90D8F2FF8FD7F1FF8FD7F1FF8FD7F1FF8FD7F1FF8FD7F1FF8FD7
F1FF8FD7F1FF8FD7F1FF8FD7F1FF91D8F2FF4FB1DAC2007FBD46007CBA928FDD
F4FF63C0E5FFA8EEFAFFA8EEFAFFA8EEFAFFA8EEFAFFA8EEFAFFA8EEFAFFA8EE
FAFFA8EEFAFFA8EEFAFFA8EEFAFFA8EEFAFF86D8EFDE0083C571007FBD8EA6EC
FCFF64C2E9FF4FB5E2FF4DB4E2FF4CB3E1FF4BB2E0FF49B1DFFF48B0DFFF47AE
DEFF45ADDDFF44ACDDFF46AEDFFF0084C6C70087CB810087CB610081C18BABF0
FEFFA4E9FCFFA2E7FBFF9FE5FAFF9CE3F8FF9AE1F7FF97DEF6FF94DCF4FF91D9
F3FF8ED7F1FF8BD4F0FF90D8F3FF0081C18B0087CA000087CB000083C488ADF1
FFFFA6EBFDFFA4E9FCFFA2E7FBFF9FE5FAFF9CE3F8FF9AE1F7FF97DEF6FF94DC
F4FF91D9F3FF8ED7F1FF93DAF4FF0083C4880083C4000085C8000085C785B0F4
FFFFADF1FFFFABF0FEFFA9EEFDFFA7ECFCFFA5EAFBFFA2E8FAFFA0E6F9FF9DE3
F8FF9AE1F7FF98DFF6FF99E0F7FF0085C7850085C7000085C7000087CA620087
CA830087CA830087CA830087CA830087CA830087CA83FEFEFDFFF5F5EEFFEBEB
DDFFFEC941FFF4B62EFF0087CA830087CA620086C9000086C9000087CA000087
CA000087CA000087CA000087CA000087CA000088CC2E0088CC810088CC810088
CC810088CC810088CC810088CC2E0087CA000086C9000086C900FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = ImgBtnClick
end
object Label11: TLabel
Left = 13
Height = 14
Top = 200
Width = 155
Caption = 'Relatieve pad naar afbeeldingen'
ParentColor = False
end
object PictureFolderEdit: TEdit
Left = 13
Height = 21
Top = 216
Width = 286
TabOrder = 5
end
end
object ExternalStyleBox: TGroupBox
Left = 19
Height = 105
Top = 144
Width = 385
Caption = 'Opmaak via extern stijlblad'
ClientHeight = 87
ClientWidth = 381
TabOrder = 2
object Label7: TLabel
Left = 13
Height = 14
Top = 0
Width = 87
Caption = 'Standaard stijlblad'
ParentColor = False
end
object Label8: TLabel
Left = 13
Height = 14
Top = 40
Width = 112
Caption = 'Stijlblad voor afdrukken'
ParentColor = False
end
object DefaultStylesheetEdit: TEdit
Left = 11
Height = 21
Top = 16
Width = 288
TabOrder = 0
end
object PrintStyleSheetEdit: TEdit
Left = 11
Height = 21
Top = 56
Width = 288
TabOrder = 1
end
object DefSheetBtn: TSpeedButton
Left = 322
Height = 22
Top = 16
Width = 23
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00005E8E8D005D
8CBD005D8CBD005D8CBD005D8CBD005D8CBD005D8CBD005D8CBD005D8CBD005D
8CBD005D8CBD005D8CBD005D8CBD005E8E8D005B8900005B890000679AB06AB7
DAFF82CCEDFF82CCEDFF82CCEDFF82CCEDFF82CCEDFF82CCEDFF82CCEDFF82CC
EDFF82CCEDFF82CCEDFF83CDEEFF318DB9C9005E8E40005F8F000070A9A256AA
CEFF80CBEAFF7EC9E9FF7EC9E9FF7EC9E9FF7EC9E9FF7EC9E9FF7EC9E9FF7EC9
E9FF7EC9E9FF7EC9E9FF7EC9E9FF57AFD6D90066996E006699000074AD9D44A1
CBFF8AD3EFFF83CDEBFF83CDEBFF83CDEBFF83CDEBFF83CDEBFF83CDEBFF83CD
EBFF83CDEBFF83CDEBFF83CDEBFF81CDEBF2006FA8930071AB010076B29952B0
D7FF85D2EDFF89D2EEFF89D2EEFF89D2EEFF89D2EEFF89D2EEFF89D2EEFF89D2
EEFF89D2EEFF89D2EEFF89D2EEFF90D8F1FF228EC1AA0077B31D0079B69574CA
E8FF75CAE8FF90D8F2FF8FD7F1FF8FD7F1FF8FD7F1FF8FD7F1FF8FD7F1FF8FD7
F1FF8FD7F1FF8FD7F1FF8FD7F1FF91D8F2FF4FB1DAC2007FBD46007CBA928FDD
F4FF63C0E5FFA8EEFAFFA8EEFAFFA8EEFAFFA8EEFAFFA8EEFAFFA8EEFAFFA8EE
FAFFA8EEFAFFA8EEFAFFA8EEFAFFA8EEFAFF86D8EFDE0083C571007FBD8EA6EC
FCFF64C2E9FF4FB5E2FF4DB4E2FF4CB3E1FF4BB2E0FF49B1DFFF48B0DFFF47AE
DEFF45ADDDFF44ACDDFF46AEDFFF0084C6C70087CB810087CB610081C18BABF0
FEFFA4E9FCFFA2E7FBFF9FE5FAFF9CE3F8FF9AE1F7FF97DEF6FF94DCF4FF91D9
F3FF8ED7F1FF8BD4F0FF90D8F3FF0081C18B0087CA000087CB000083C488ADF1
FFFFA6EBFDFFA4E9FCFFA2E7FBFF9FE5FAFF9CE3F8FF9AE1F7FF97DEF6FF94DC
F4FF91D9F3FF8ED7F1FF93DAF4FF0083C4880083C4000085C8000085C785B0F4
FFFFADF1FFFFABF0FEFFA9EEFDFFA7ECFCFFA5EAFBFFA2E8FAFFA0E6F9FF9DE3
F8FF9AE1F7FF98DFF6FF99E0F7FF0085C7850085C7000085C7000087CA620087
CA830087CA830087CA830087CA830087CA830087CA83FEFEFDFFF5F5EEFFEBEB
DDFFFEC941FFF4B62EFF0087CA830087CA620086C9000086C9000087CA000087
CA000087CA000087CA000087CA000087CA000088CC2E0088CC810088CC810088
CC810088CC810088CC810088CC2E0087CA000086C9000086C900FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = StyleBtnClick
end
object PrintSheetBtn: TSpeedButton
Left = 322
Height = 22
Top = 56
Width = 23
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00005E8E8D005D
8CBD005D8CBD005D8CBD005D8CBD005D8CBD005D8CBD005D8CBD005D8CBD005D
8CBD005D8CBD005D8CBD005D8CBD005E8E8D005B8900005B890000679AB06AB7
DAFF82CCEDFF82CCEDFF82CCEDFF82CCEDFF82CCEDFF82CCEDFF82CCEDFF82CC
EDFF82CCEDFF82CCEDFF83CDEEFF318DB9C9005E8E40005F8F000070A9A256AA
CEFF80CBEAFF7EC9E9FF7EC9E9FF7EC9E9FF7EC9E9FF7EC9E9FF7EC9E9FF7EC9
E9FF7EC9E9FF7EC9E9FF7EC9E9FF57AFD6D90066996E006699000074AD9D44A1
CBFF8AD3EFFF83CDEBFF83CDEBFF83CDEBFF83CDEBFF83CDEBFF83CDEBFF83CD
EBFF83CDEBFF83CDEBFF83CDEBFF81CDEBF2006FA8930071AB010076B29952B0
D7FF85D2EDFF89D2EEFF89D2EEFF89D2EEFF89D2EEFF89D2EEFF89D2EEFF89D2
EEFF89D2EEFF89D2EEFF89D2EEFF90D8F1FF228EC1AA0077B31D0079B69574CA
E8FF75CAE8FF90D8F2FF8FD7F1FF8FD7F1FF8FD7F1FF8FD7F1FF8FD7F1FF8FD7
F1FF8FD7F1FF8FD7F1FF8FD7F1FF91D8F2FF4FB1DAC2007FBD46007CBA928FDD
F4FF63C0E5FFA8EEFAFFA8EEFAFFA8EEFAFFA8EEFAFFA8EEFAFFA8EEFAFFA8EE
FAFFA8EEFAFFA8EEFAFFA8EEFAFFA8EEFAFF86D8EFDE0083C571007FBD8EA6EC
FCFF64C2E9FF4FB5E2FF4DB4E2FF4CB3E1FF4BB2E0FF49B1DFFF48B0DFFF47AE
DEFF45ADDDFF44ACDDFF46AEDFFF0084C6C70087CB810087CB610081C18BABF0
FEFFA4E9FCFFA2E7FBFF9FE5FAFF9CE3F8FF9AE1F7FF97DEF6FF94DCF4FF91D9
F3FF8ED7F1FF8BD4F0FF90D8F3FF0081C18B0087CA000087CB000083C488ADF1
FFFFA6EBFDFFA4E9FCFFA2E7FBFF9FE5FAFF9CE3F8FF9AE1F7FF97DEF6FF94DC
F4FF91D9F3FF8ED7F1FF93DAF4FF0083C4880083C4000085C8000085C785B0F4
FFFFADF1FFFFABF0FEFFA9EEFDFFA7ECFCFFA5EAFBFFA2E8FAFFA0E6F9FF9DE3
F8FF9AE1F7FF98DFF6FF99E0F7FF0085C7850085C7000085C7000087CA620087
CA830087CA830087CA830087CA830087CA830087CA83FEFEFDFFF5F5EEFFEBEB
DDFFFEC941FFF4B62EFF0087CA830087CA620086C9000086C9000087CA000087
CA000087CA000087CA000087CA000087CA000088CC2E0088CC810088CC810088
CC810088CC810088CC810088CC2E0087CA000086C9000086C900FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = StyleBtnClick
end
end
object StyleChoiceGroup: TRadioGroup
Left = 19
Height = 41
Top = 96
Width = 385
AutoFill = True
Caption = 'Kies opmaak methode'
ChildSizing.LeftRightSpacing = 6
ChildSizing.TopBottomSpacing = 6
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
ChildSizing.EnlargeVertical = crsHomogenousChildResize
ChildSizing.ShrinkHorizontal = crsScaleChilds
ChildSizing.ShrinkVertical = crsScaleChilds
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 2
ClientHeight = 23
ClientWidth = 381
Columns = 2
ItemIndex = 0
Items.Strings = (
'Opmaak via extern stijlblad'
'Opmaak via inline stijl'
)
OnClick = StyleChoiceGroupClick
TabOrder = 1
end
object DocTypeComboBox: TComboBox
Left = 23
Height = 21
Top = 544
Width = 377
ItemHeight = 13
TabOrder = 4
Text = 'DocTypeComboBox'
end
object Label9: TLabel
Left = 23
Height = 14
Top = 528
Width = 45
Caption = 'Html type'
ParentColor = False
end
object BitBtn1: TBitBtn
Left = 325
Height = 30
Top = 576
Width = 75
Default = True
DefaultCaption = True
Kind = bkOK
ModalResult = 1
TabOrder = 6
end
object BitBtn2: TBitBtn
Left = 245
Height = 30
Top = 576
Width = 75
Cancel = True
DefaultCaption = True
Kind = bkCancel
ModalResult = 2
TabOrder = 5
end
object Label10: TLabel
Left = 19
Height = 14
Top = 48
Width = 32
Caption = 'Auteur'
ParentColor = False
end
object AuthorEdit: TEdit
Left = 19
Height = 21
Top = 64
Width = 385
TabOrder = 7
end
object ColorDialog: TColorDialog
Color = clBlack
CustomColors.Strings = (
'ColorA=000000'
'ColorB=000080'
'ColorC=008000'
'ColorD=008080'
'ColorE=800000'
'ColorF=800080'
'ColorG=808000'
'ColorH=808080'
'ColorI=C0C0C0'
'ColorJ=0000FF'
'ColorK=00FF00'
'ColorL=00FFFF'
'ColorM=FF0000'
'ColorN=FF00FF'
'ColorO=FFFF00'
'ColorP=FFFFFF'
'ColorQ=C0DCC0'
'ColorR=F0CAA6'
'ColorS=F0FBFF'
'ColorT=A4A0A0'
)
left = 24
top = 568
end
object OpenDialog: TOpenDialog
left = 71
top = 568
end
object OpenPictureDialog: TOpenPictureDialog
left = 111
top = 568
end
end

View File

@ -0,0 +1,292 @@
unit NewHtmlDlgForm;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
ExtCtrls, Buttons, ExtDlgs, HtmlCode;
type
{ TNewHtmlDlgForm }
TNewHtmlDlgForm = class(TForm)
BackColorEdit: TEdit;
BackImageEdit: TEdit;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
ColorDialog: TColorDialog;
AuthorEdit: TEdit;
DocTypeComboBox: TComboBox;
DefaultStylesheetEdit: TEdit;
PictureFolderEdit: TEdit;
Label10: TLabel;
Label11: TLabel;
Label9: TLabel;
OpenDialog: TOpenDialog;
OpenPictureDialog: TOpenPictureDialog;
PrintStyleSheetEdit: TEdit;
ExternalStyleBox: TGroupBox;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
DefSheetBtn: TSpeedButton;
PrintSheetBtn: TSpeedButton;
BackColorBtn: TSpeedButton;
LinkColorBtn: TSpeedButton;
BackImgBtn: TSpeedButton;
VisitedColorBtn: TSpeedButton;
TextColorBtn: TSpeedButton;
StyleChoiceGroup: TRadioGroup;
VisitedLinkColorEdit: TEdit;
Label5: TLabel;
LinkColorEdit: TEdit;
Label4: TLabel;
TextColorEdit: TEdit;
InlineStyleBox: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
TitleEdit: TEdit;
procedure FormShow(Sender: TObject);
procedure StyleBtnClick(Sender: TObject);
procedure ColorBtnClick(Sender: TObject);
procedure ImgBtnClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure StyleChoiceGroupClick(Sender: TObject);
private
FInitialDir: String;
function GetAuthor: string;
function GetbackgroundColor: string;
function GetBackgroundImage: string;
function GetDefaultStyleSheet: string;
function GetHtmlDocType: THtmlDocType;
function GetLinkColor: string;
function GetPictureFolder: string;
function GetPrintStyleSheet: string;
function GetTextColor: string;
function GetTitle: string;
function GetUseStyleSheet: Boolean;
function GetVisitedColor: string;
procedure SetInitialDir(AValue: String);
{ private declarations }
public
{ public declarations }
property DocType: THtmlDocType read GetHtmlDocType;
property UseStyleSheet: Boolean read GetUseStyleSheet;
property DefaultStyleSheet: string read GetDefaultStyleSheet;
property PrintStyleSheet: string read GetPrintStyleSheet;
property TextColor: string read GetTextColor;
property BackgroundColor: string read GetbackgroundColor;
property LinkColor: string read GetLinkColor;
property VisitedColor: string read GetVisitedColor;
property BackgroundImage: string read GetBackgroundImage;
property PictureFolder: string read GetPictureFolder;
property Author: string read GetAuthor;
property Title: string read GetTitle;
property InitialPictureDir: String read FInitialDir write SetInitialDir;
end;
implementation
const
idxExternal = 0;
idxInternal = 1;
tagDefSheet = 1;
tagPrintSheet = 2;
tagBackColor = 3;
tagTextColor = 4;
tagLinkColor = 5;
tagVisitedColor = 6;
tagBackImg = 7;
StyleFilter = 'Cascading Style Sheets (*.css)|*.css|Alle bestandend (*.*)|*.*';
HtmlDocTypeNames: THtmlDocTypeStrings = ('Html 4.01 Strict', 'Html 4.01 Transitional', 'Html 5', '');
{ TNewHtmlDlgForm }
procedure TNewHtmlDlgForm.StyleChoiceGroupClick(Sender: TObject);
begin
case StyleChoicegroup.ItemIndex of
idxInternal:
begin
InlineStyleBox.Enabled := True;
ExternalStyleBox.Enabled := False;
end;
idxExternal:
begin
InlineStyleBox.Enabled := False;
ExternalStyleBox.Enabled := True;
end;
end;
end;
function TNewHtmlDlgForm.GetAuthor: string;
begin
Result := AuthorEdit.Text;
end;
function TNewHtmlDlgForm.GetbackgroundColor: string;
begin
Result := BackColorEdit.Text;
end;
function TNewHtmlDlgForm.GetBackgroundImage: string;
begin
Result := Trim(PictureFolder);
if (Result <> '') then
begin
Result := IncludeTrailingPathDelimiter(Result);
Result := UrlEscape(Result);
DoHtmlDirSeparators(Result);
end;
Result := Result + BackImageEdit.Text;
end;
function TNewHtmlDlgForm.GetDefaultStyleSheet: string;
begin
Result := UrlEscape(DefaultStyleSheetEdit.Text);
end;
function TNewHtmlDlgForm.GetHtmlDocType: THtmlDocType;
begin
Result := THtmlDocType(DocTypeComboBox.ItemIndex);
end;
function TNewHtmlDlgForm.GetLinkColor: string;
begin
Result := LinkColorEdit.Text;
end;
function TNewHtmlDlgForm.GetPictureFolder: string;
begin
Result := UrlEscape(PictureFolderEdit.Text);
end;
function TNewHtmlDlgForm.GetPrintStyleSheet: string;
begin
Result := UrlEscape(PrintStyleSheetEdit.Text);
end;
function TNewHtmlDlgForm.GetTextColor: string;
begin
Result := TextColorEdit.Text;
end;
function TNewHtmlDlgForm.GetTitle: string;
begin
Result := TitleEdit.Text;
end;
function TNewHtmlDlgForm.GetUseStyleSheet: Boolean;
begin
Result := (StyleChoiceGroup.ItemIndex = idxExternal);
end;
function TNewHtmlDlgForm.GetVisitedColor: string;
begin
Result := VisitedLinkColorEdit.Text;
end;
procedure TNewHtmlDlgForm.SetInitialDir(AValue: String);
begin
if FInitialDir = AValue then Exit;
OpenPictureDialog.InitialDir := AValue;
FInitialDir := AValue;
end;
procedure TNewHtmlDlgForm.StyleBtnClick(Sender: TObject);
var
Tg: PtrInt;
Css: String;
begin
Tg := (Sender as TSpeedButton).Tag;
OpenDialog.Filter := StyleFilter;
OpenDialog.FilterIndex := 1;
if OpenDialog.Execute then
begin
Css := OpenDialog.FileName;
Css := ExtractFileName(Css);
case Tg of
tagDefSheet: DefaultStyleSheetEdit.Text := Css;
tagPrintSheet: PrintStyleSheetEdit.Text := Css;
end;
end;
end;
procedure TNewHtmlDlgForm.FormShow(Sender: TObject);
begin
ActiveControl := TitleEdit;
end;
procedure TNewHtmlDlgForm.ColorBtnClick(Sender: TObject);
var
AColor: TColor;
Tg: PtrInt;
AColorStr: String;
begin
Tg := (Sender as TSpeedButton).Tag;
if ColorDialog.Execute then
begin
AColor := ColorDialog.Color;
AColorStr := ColorToHtml(AColor);
case Tg of
tagBackColor:
begin
BackColorEdit.Text := AColorStr;
end;
tagTextColor:
begin
TextColorEdit.Text := AColorStr;
end;
tagLinkColor:
begin
LinkColorEdit.Text := AColorStr;
end;
tagVisitedColor:
begin
VisitedLinkColorEdit.Text := AColorStr;
end;
end;
end;
end;
procedure TNewHtmlDlgForm.ImgBtnClick(Sender: TObject);
begin
if OpenPictureDialog.Execute then
begin
BackImageEdit.Text := ExtractFileName(OpenPictureDialog.FileName);
FInitialDir := ExtractFilePath(OpenPictureDialog.FileName);
end;
end;
procedure TNewHtmlDlgForm.FormCreate(Sender: TObject);
var
h: THtmlDocType;
begin
DefSheetBtn.Tag := tagDefSheet;
PrintSheetBtn.Tag := tagPrintSheet;
BackColorBtn.Tag := tagBackColor;
TextColorBtn.Tag := tagTextColor;
LinkColorBtn.Tag := tagLinkColor;
VisitedColorBtn.Tag := tagVisitedColor;
BackImgBtn.Tag := tagBackImg;
DocTypeComboBox.Clear;
StyleChoiceGroupClick(Self);
for h := Low(THtmlDocType) to High(THtmlDocType) do DocTypeComboBox.Items.Add(HtmlDoctypeNames[h]);
DocTypeComboBox.ItemIndex := ord (DocType_Html_401_Strict);
end;
{$R *.lfm}
end.

View File

@ -0,0 +1,117 @@
object NewTableForm: TNewTableForm
Left = 656
Height = 266
Top = 123
Width = 251
Caption = 'Tabel invoegen'
ClientHeight = 266
ClientWidth = 251
OnShow = FormShow
LCLVersion = '0.9.31'
object SummaryEdit: TEdit
Left = 16
Height = 21
Top = 32
Width = 216
TabOrder = 0
Text = 'SummaryEdit'
end
object Label1: TLabel
Left = 16
Height = 14
Top = 16
Width = 91
Caption = 'Tabelsamenvatting'
ParentColor = False
end
object RowEdit: TSpinEdit
Left = 16
Height = 21
Top = 88
Width = 88
MaxValue = 10000
MinValue = 1
TabOrder = 1
Value = 2
end
object ColEdit: TSpinEdit
Left = 144
Height = 21
Top = 88
Width = 88
MaxValue = 10000
MinValue = 1
TabOrder = 2
Value = 2
end
object Label2: TLabel
Left = 16
Height = 14
Top = 68
Width = 53
Caption = 'Aantal rijen'
ParentColor = False
end
object Label3: TLabel
Left = 146
Height = 14
Top = 68
Width = 82
Caption = 'Aantal kolommen'
ParentColor = False
end
object Label4: TLabel
Left = 16
Height = 14
Top = 120
Width = 12
Caption = 'ID'
ParentColor = False
end
object IdEdit: TEdit
Left = 16
Height = 21
Top = 136
Width = 216
TabOrder = 3
Text = 'IdEdit'
end
object Label5: TLabel
Left = 16
Height = 14
Top = 168
Width = 26
Caption = 'Class'
ParentColor = False
end
object ClassEdit: TEdit
Left = 16
Height = 21
Top = 184
Width = 216
TabOrder = 4
Text = 'ClassEdit'
end
object OkBtn: TBitBtn
Left = 157
Height = 30
Top = 224
Width = 75
Default = True
DefaultCaption = True
Kind = bkOK
ModalResult = 1
TabOrder = 5
end
object CancelBtn: TBitBtn
Left = 72
Height = 30
Top = 224
Width = 75
Cancel = True
DefaultCaption = True
Kind = bkCancel
ModalResult = 2
TabOrder = 6
end
end

View File

@ -0,0 +1,87 @@
unit NewTableForm;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
Spin, Buttons;
type
{ TNewTableForm }
TNewTableForm = class(TForm)
CancelBtn: TBitBtn;
OkBtn: TBitBtn;
ClassEdit: TEdit;
IdEdit: TEdit;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
RowEdit: TSpinEdit;
ColEdit: TSpinEdit;
SummaryEdit: TEdit;
Label1: TLabel;
procedure FormShow(Sender: TObject);
private
function GetColCount: integer;
function GetDomClass: String;
function GetDomId: String;
function GetRowCount: Integer;
function GetSummary: string;
{ private declarations }
public
{ public declarations }
property Summary: string read GetSummary;
property DomId: String read GetDomId;
property DomClass: String read GetDomClass;
property RowCount: Integer read GetRowCount;
property ColCount: integer read GetColCount;
end;
implementation
{$R *.lfm}
{ TNewTableForm }
procedure TNewTableForm.FormShow(Sender: TObject);
begin
SummaryEdit.Text := '';
IdEdit.Text := '';;
ClassEdit.Text := '';
ActiveControl := SummaryEdit;
end;
function TNewTableForm.GetColCount: integer;
begin
Result := ColEdit.Value;
end;
function TNewTableForm.GetDomClass: String;
begin
Result := ClassEdit.Text;
end;
function TNewTableForm.GetDomId: String;
begin
Result := IdEdit.Text;
end;
function TNewTableForm.GetRowCount: Integer;
begin
Result := RowEdit.Value;
end;
function TNewTableForm.GetSummary: string;
begin
Result := SummaryEdit.Text;
end;
end.

View File

@ -0,0 +1,227 @@
object PictureDlgForm: TPictureDlgForm
Left = 806
Height = 398
Top = 147
Width = 396
Caption = 'Plaatje invoegen'
ClientHeight = 398
ClientWidth = 396
OnShow = FormShow
LCLVersion = '0.9.31'
object Label1: TLabel
Left = 16
Height = 14
Top = 8
Width = 71
Caption = 'Bestandsnaam'
ParentColor = False
end
object SrcEdit: TEdit
Left = 16
Height = 21
Top = 24
Width = 320
TabOrder = 0
end
object OpenBtn: TSpeedButton
Left = 352
Height = 22
Top = 24
Width = 23
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00005E8E8D005D
8CBD005D8CBD005D8CBD005D8CBD005D8CBD005D8CBD005D8CBD005D8CBD005D
8CBD005D8CBD005D8CBD005D8CBD005E8E8D005B8900005B890000679AB06AB7
DAFF82CCEDFF82CCEDFF82CCEDFF82CCEDFF82CCEDFF82CCEDFF82CCEDFF82CC
EDFF82CCEDFF82CCEDFF83CDEEFF318DB9C9005E8E40005F8F000070A9A256AA
CEFF80CBEAFF7EC9E9FF7EC9E9FF7EC9E9FF7EC9E9FF7EC9E9FF7EC9E9FF7EC9
E9FF7EC9E9FF7EC9E9FF7EC9E9FF57AFD6D90066996E006699000074AD9D44A1
CBFF8AD3EFFF83CDEBFF83CDEBFF83CDEBFF83CDEBFF83CDEBFF83CDEBFF83CD
EBFF83CDEBFF83CDEBFF83CDEBFF81CDEBF2006FA8930071AB010076B29952B0
D7FF85D2EDFF89D2EEFF89D2EEFF89D2EEFF89D2EEFF89D2EEFF89D2EEFF89D2
EEFF89D2EEFF89D2EEFF89D2EEFF90D8F1FF228EC1AA0077B31D0079B69574CA
E8FF75CAE8FF90D8F2FF8FD7F1FF8FD7F1FF8FD7F1FF8FD7F1FF8FD7F1FF8FD7
F1FF8FD7F1FF8FD7F1FF8FD7F1FF91D8F2FF4FB1DAC2007FBD46007CBA928FDD
F4FF63C0E5FFA8EEFAFFA8EEFAFFA8EEFAFFA8EEFAFFA8EEFAFFA8EEFAFFA8EE
FAFFA8EEFAFFA8EEFAFFA8EEFAFFA8EEFAFF86D8EFDE0083C571007FBD8EA6EC
FCFF64C2E9FF4FB5E2FF4DB4E2FF4CB3E1FF4BB2E0FF49B1DFFF48B0DFFF47AE
DEFF45ADDDFF44ACDDFF46AEDFFF0084C6C70087CB810087CB610081C18BABF0
FEFFA4E9FCFFA2E7FBFF9FE5FAFF9CE3F8FF9AE1F7FF97DEF6FF94DCF4FF91D9
F3FF8ED7F1FF8BD4F0FF90D8F3FF0081C18B0087CA000087CB000083C488ADF1
FFFFA6EBFDFFA4E9FCFFA2E7FBFF9FE5FAFF9CE3F8FF9AE1F7FF97DEF6FF94DC
F4FF91D9F3FF8ED7F1FF93DAF4FF0083C4880083C4000085C8000085C785B0F4
FFFFADF1FFFFABF0FEFFA9EEFDFFA7ECFCFFA5EAFBFFA2E8FAFFA0E6F9FF9DE3
F8FF9AE1F7FF98DFF6FF99E0F7FF0085C7850085C7000085C7000087CA620087
CA830087CA830087CA830087CA830087CA830087CA83FEFEFDFFF5F5EEFFEBEB
DDFFFEC941FFF4B62EFF0087CA830087CA620086C9000086C9000087CA000087
CA000087CA000087CA000087CA000087CA000088CC2E0088CC810088CC810088
CC810088CC810088CC810088CC2E0087CA000086C9000086C900FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = OpenBtnClick
end
object Label2: TLabel
Left = 16
Height = 14
Top = 56
Width = 147
Caption = 'Standaard lokatie voor plaatjes'
ParentColor = False
end
object DefFolderEdit: TEdit
Left = 16
Height = 21
Top = 72
Width = 359
TabOrder = 1
end
object Label3: TLabel
Left = 16
Height = 14
Top = 104
Width = 39
Caption = 'Alt tekst'
ParentColor = False
end
object AltEdit: TEdit
Left = 16
Height = 21
Top = 120
Width = 176
TabOrder = 2
end
object Label4: TLabel
Left = 200
Height = 14
Top = 104
Width = 47
Caption = 'Title tekst'
ParentColor = False
end
object TitleEdit: TEdit
Left = 200
Height = 21
Top = 120
Width = 175
TabOrder = 3
end
object Label5: TLabel
Left = 16
Height = 14
Top = 152
Width = 38
Caption = 'Breedte'
ParentColor = False
end
object WidthEdit: TEdit
Left = 16
Height = 21
Top = 168
Width = 176
TabOrder = 4
end
object Label6: TLabel
Left = 200
Height = 14
Top = 152
Width = 36
Caption = 'Hoogte'
ParentColor = False
end
object HeightEdit: TEdit
Left = 200
Height = 21
Top = 168
Width = 175
TabOrder = 5
end
object Label7: TLabel
Left = 16
Height = 14
Top = 200
Width = 12
Caption = 'ID'
ParentColor = False
end
object IdEdit: TEdit
Left = 16
Height = 21
Top = 216
Width = 359
TabOrder = 6
end
object Label8: TLabel
Left = 16
Height = 14
Top = 248
Width = 26
Caption = 'Class'
ParentColor = False
end
object ClassEdit: TEdit
Left = 16
Height = 21
Top = 264
Width = 359
TabOrder = 7
end
object FloatGroup: TRadioGroup
Left = 16
Height = 41
Top = 296
Width = 359
AutoFill = True
Caption = 'Float stijl'
ChildSizing.LeftRightSpacing = 6
ChildSizing.TopBottomSpacing = 6
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
ChildSizing.EnlargeVertical = crsHomogenousChildResize
ChildSizing.ShrinkHorizontal = crsScaleChilds
ChildSizing.ShrinkVertical = crsScaleChilds
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 3
ClientHeight = 23
ClientWidth = 355
Columns = 3
ItemIndex = 2
Items.Strings = (
'Links'
'Rechts'
'Geen'
)
TabOrder = 8
end
object OkBtn: TBitBtn
Left = 300
Height = 30
Top = 352
Width = 75
Default = True
DefaultCaption = True
Kind = bkOK
ModalResult = 1
TabOrder = 9
end
object CancelBtn: TBitBtn
Left = 208
Height = 30
Top = 352
Width = 75
Cancel = True
DefaultCaption = True
Kind = bkCancel
ModalResult = 2
TabOrder = 10
end
object OpenPictureDialog: TOpenPictureDialog
left = 48
top = 344
end
end

View File

@ -0,0 +1,175 @@
unit PictureDlgForm;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
Buttons, ExtCtrls, ExtDlgs, {PicsLib,} HtmlCode;
type
{ TPictureDlgForm }
TPictureDlgForm = class(TForm)
AltEdit: TEdit;
CancelBtn: TBitBtn;
OkBtn: TBitBtn;
DefFolderEdit: TEdit;
ClassEdit: TEdit;
IdEdit: TEdit;
HeightEdit: TEdit;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
FloatGroup: TRadioGroup;
OpenPictureDialog: TOpenPictureDialog;
WidthEdit: TEdit;
Label5: TLabel;
TitleEdit: TEdit;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
OpenBtn: TSpeedButton;
SrcEdit: TEdit;
Label1: TLabel;
procedure FormShow(Sender: TObject);
procedure OpenBtnClick(Sender: TObject);
private
FInitialDir: string;
function GetAlt: String;
function GetDefaultFolderPrefix: String;
function GetDomClass: String;
function GetDomId: String;
function GetFloatStyle: String;
function GetPicHeight: String;
function GetPicWidth: String;
function GetSrc: String;
function GetTitle: String;
procedure SetDefaultFolderPrefix(AValue: String);
procedure SetInitialDir(AValue: string);
{ private declarations }
public
{ public declarations }
property Src: String read GetSrc;
property DomId: String read GetDomId;
property DomClass: String read GetDomClass;
property FloatStyle: String read GetFloatStyle;
property PicWidth: String read GetPicWidth;
property PicHeight: String read GetPicHeight;
property Alt: String read GetAlt;
property Title: String read GetTitle;
property InitialDir: string read FInitialDir write SetInitialDir;
property DefaultFolderPrefix: String read GetDefaultFolderPrefix write SetDefaultFolderPrefix;
end;
implementation
{$R *.lfm}
const
idxLeft = 0;
idxRight = 1;
idxNone = 2;
{ TPictureDlgForm }
procedure TPictureDlgForm.OpenBtnClick(Sender: TObject);
var
Fn: String;
W, H: dword;
begin
if OpenPictureDialog.Execute then
begin
Fn := OpenPictureDialog.FileName;
FInitialDir := ExtractFileDir(Fn);
SrcEdit.Text := ExtractFileName(Fn);
{if GetImageSize(Fn, W, H) then
begin
WidthEdit.Text := IntToStr(W);
HeightEdit.Text := IntToStr(H);
end
else
begin
WidthEdit.Text := '';
HeightEdit.Text := '';
end;}
end;
end;
procedure TPictureDlgForm.FormShow(Sender: TObject);
begin
SrcEdit.Text := '';
AltEdit.Text := '';
TitleEdit.Text := '';
WidthEdit.Text := '';
HeightEdit.Text := '';
ActiveControl := SrcEdit;
end;
function TPictureDlgForm.GetAlt: String;
begin
Result := AltEdit.Text;
end;
function TPictureDlgForm.GetDefaultFolderPrefix: String;
begin
Result := DefFolderEdit.Text;
end;
function TPictureDlgForm.GetDomClass: String;
begin
Result := ClassEdit.Text;
end;
function TPictureDlgForm.GetDomId: String;
begin
Result := IdEdit.Text;
end;
function TPictureDlgForm.GetFloatStyle: String;
begin
case FloatGroup.ItemIndex of
idxLeft: Result := 'left';
idxRight: Result := 'right';
else Result := '';
end;
end;
function TPictureDlgForm.GetPicHeight: String;
begin
Result := HeightEdit.Text;
end;
function TPictureDlgForm.GetPicWidth: String;
begin
Result := WidthEdit.Text;
end;
function TPictureDlgForm.GetSrc: String;
begin
Result := UrlEscape(SrcEdit.Text);
end;
function TPictureDlgForm.GetTitle: String;
begin
Result := TitleEdit.Text;
end;
procedure TPictureDlgForm.SetDefaultFolderPrefix(AValue: String);
begin
DefFolderEdit.Text := AValue;
end;
procedure TPictureDlgForm.SetInitialDir(AValue: string);
begin
OpenPictureDialog.InitialDir := AValue;
end;
end.