Menu

[r3166]: / trunk / Src / FrHTMLDlg.pas  Maximize  Restore  History

Download this file

142 lines (119 with data), 3.9 kB

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
{
* This Source Code Form is subject to the terms of the Mozilla Public License,
* v. 2.0. If a copy of the MPL was not distributed with this file, You can
* obtain one at http://mozilla.org/MPL/2.0/
*
* Copyright (C) 2005-2013, Peter Johnson (www.delphidabbler.com).
*
* $Rev$
* $Date$
*
* Implements a frame containing a web browser control that displays HTML
* content that takes on the appearance of a dialogue box.
}
unit FrHTMLDlg;
interface
uses
// Delphi
OleCtrls, SHDocVw, Classes, Controls, ExtCtrls, Forms,
// Project
FrBrowserBase, UCSSBuilder;
type
{
THTMLDlgFrame:
Frame containing a web browser control that displays HTML content and takes
on the appearance of a dialog box.
}
THTMLDlgFrame = class(TBrowserBaseFrame)
strict private
fOwner: TForm;
{Form that owns the frame. Used to set font and colours to display in
frame's HTML }
strict protected
procedure BuildCSS(const CSSBuilder: TCSSBuilder); override;
{Generates CSS classes specific to HTML dialog boxes. This CSS is added to
that provided by parent class.
@param CSSBuilder [in] Object used to build the CSS code.
}
public
constructor Create(AOwner: TComponent); override;
{Object constructor. Sets up frame and initialises web browser.
@param AOwner [in] Component that owns the frame (must be a form).
}
function DocHeight: Integer;
{Calculates height of document displayed in browser.
@return Document height in pixels.
}
end;
implementation
uses
// Delphi
SysUtils, Graphics,
// Project
Browser.UUIMgr, UCSSUtils, UNulDropTarget;
{$R *.dfm}
{ THTMLDlgFrame }
procedure THTMLDlgFrame.BuildCSS(const CSSBuilder: TCSSBuilder);
{Generates CSS classes specific to HTML dialog boxes. This CSS is added to
that provided by parent class.
@param CSSBuilder [in] Object used to build the CSS code.
}
var
CSSFont: TFont; // font used to set CSS properties
begin
inherited;
// Set body style to use dialog box colour and font with no margin
CSSFont := TFont.Create;
try
with CSSBuilder.AddSelector('body') do
begin
AddProperty(TCSS.BackgroundColorProp(fOwner.Color));
AddProperty(TCSS.FontProps(fOwner.Font));
AddProperty(TCSS.MarginProp(0));
end;
// Sets heading margins, padding and font size
with CSSBuilder.AddSelector('h1') do
begin
CSSFont.Assign(Self.Font);
CSSFont.Size := CSSFont.Size + 2;
CSSFont.Style := [fsBold];
AddProperty(TCSS.FontProps(CSSFont));
AddProperty(TCSS.MarginProp(0));
AddProperty(TCSS.PaddingProp(0));
end;
// Sets paragraph margins and padding
with CSSBuilder.AddSelector('p') do
begin
AddProperty(TCSS.MarginProp(cssTop, 6));
AddProperty(TCSS.MarginProp(cssBottom, 0));
AddProperty(TCSS.PaddingProp(0));
end;
// Sets table font info
with CSSBuilder.AddSelector('table') do
AddProperty(TCSS.FontProps(fOwner.Font));
finally
FreeAndNil(CSSFont);
end;
end;
constructor THTMLDlgFrame.Create(AOwner: TComponent);
{Object constructor. Sets up frame and initialises web browser.
@param AOwner [in] Component that owns the frame (must be a form).
}
begin
inherited;
// Record parent form instance
fOwner := (AOwner as TForm);
// Set up browser control to take on dialog box's appearance
WBController.UIMgr.ScrollbarStyle := sbsHide; // no scroll bars
WBController.UIMgr.AllowTextSelection := False; // can't select text
WBController.UIMgr.DropTarget := // inhibit drag drop in dialog
TNulDropTarget.Create;
end;
function THTMLDlgFrame.DocHeight: Integer;
{Calculates height of document displayed in browser.
@return Document height in pixels.
}
begin
Result := WBController.UIMgr.DocHeight;
end;
end.
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.