ipro design: use a panel

git-svn-id: trunk@31029 -
This commit is contained in:
mattias 2011-06-03 19:43:59 +00:00
parent bae7c25e9b
commit 39474920c0

View File

@ -22,7 +22,7 @@ unit IPIDEHTMLControl;
interface interface
uses uses
Classes, SysUtils, math, LCLProc, Graphics, Controls, Dialogs, Classes, SysUtils, math, LCLProc, Graphics, Controls, Dialogs, ExtCtrls,
IpMsg, Ipfilebroker, IpHtml, IDEHelpIntf, LazHelpIntf; IpMsg, Ipfilebroker, IpHtml, IDEHelpIntf, LazHelpIntf;
type type
@ -41,7 +41,7 @@ type
{ TLazIPHtmlControl } { TLazIPHtmlControl }
TLazIPHtmlControl = class(TIpHtmlPanel,TIDEHTMLControlIntf) TLazIPHtmlControl = class(TCustomPanel,TIDEHTMLControlIntf)
function DataProviderCanHandle(Sender: TObject; const URL: string): Boolean; function DataProviderCanHandle(Sender: TObject; const URL: string): Boolean;
procedure DataProviderCheckURL(Sender: TObject; const URL: string; procedure DataProviderCheckURL(Sender: TObject; const URL: string;
var Available: Boolean; var ContentType: string); var Available: Boolean; var ContentType: string);
@ -53,6 +53,7 @@ type
procedure DataProviderReportReference(Sender: TObject; const URL: string); procedure DataProviderReportReference(Sender: TObject; const URL: string);
private private
FIDEProvider: TAbstractIDEHTMLProvider; FIDEProvider: TAbstractIDEHTMLProvider;
FIPHTMLPanel: TIpHtmlPanel;
FURL: string; FURL: string;
public public
constructor Create(AOwner: TComponent); override; constructor Create(AOwner: TComponent); override;
@ -61,6 +62,7 @@ type
property IDEProvider: TAbstractIDEHTMLProvider read FIDEProvider write FIDEProvider; property IDEProvider: TAbstractIDEHTMLProvider read FIDEProvider write FIDEProvider;
procedure SetHTMLContent(Stream: TStream; const NewURL: string); procedure SetHTMLContent(Stream: TStream; const NewURL: string);
procedure GetPreferredControlSize(out AWidth, AHeight: integer); procedure GetPreferredControlSize(out AWidth, AHeight: integer);
property IPHTMLPanel: TIpHtmlPanel read FIPHTMLPanel;
end; end;
function IPCreateLazIDEHTMLControl(Owner: TComponent; function IPCreateLazIDEHTMLControl(Owner: TComponent;
@ -179,11 +181,17 @@ end;
constructor TLazIPHtmlControl.Create(AOwner: TComponent); constructor TLazIPHtmlControl.Create(AOwner: TComponent);
begin begin
inherited Create(AOwner); inherited Create(AOwner);
DefaultFontSize := 8; FIPHTMLPanel:=TIpHtmlPanel.Create(Self);
MarginHeight := 0; with FIPHTMLPanel do begin
MarginWidth := 0; Name:='TLazIPHtmlControl_IPHTMLPanel';
DataProvider:=TLazIpHtmlDataProvider.Create(Self); Align:=alClient;
with TLazIpHtmlDataProvider(DataProvider) do begin DefaultFontSize:=8;
MarginHeight:=2;
MarginWidth:=2;
Parent:=Self;
end;
FIPHTMLPanel.DataProvider:=TLazIpHtmlDataProvider.Create(Self);
with TLazIpHtmlDataProvider(FIPHTMLPanel.DataProvider) do begin
FControl:=Self; FControl:=Self;
Name:='TLazIPHtmlControlDataProvider'; Name:='TLazIPHtmlControlDataProvider';
OnCanHandle:=@DataProviderCanHandle; OnCanHandle:=@DataProviderCanHandle;
@ -193,6 +201,8 @@ begin
OnCheckURL:=@DataProviderCheckURL; OnCheckURL:=@DataProviderCheckURL;
OnReportReference:=@DataProviderReportReference; OnReportReference:=@DataProviderReportReference;
end; end;
Caption:='';
BevelInner:=bvLowered;
end; end;
function TLazIPHtmlControl.GetURL: string; function TLazIPHtmlControl.GetURL: string;
@ -224,7 +234,7 @@ begin
if not ok then NewHTML.Free; if not ok then NewHTML.Free;
IDEProvider.ReleaseStream(FURL); IDEProvider.ReleaseStream(FURL);
end; end;
SetHtml(NewHTML); FIPHTMLPanel.SetHtml(NewHTML);
except except
on E: Exception do begin on E: Exception do begin
MessageDlg('Unable to open HTML file', MessageDlg('Unable to open HTML file',
@ -241,7 +251,7 @@ var
begin begin
FURL:=NewURL; FURL:=NewURL;
NewHTML:=TIpHtml.Create; // Beware: Will be freed automatically by TIpHtmlPanel NewHTML:=TIpHtml.Create; // Beware: Will be freed automatically by TIpHtmlPanel
SetHtml(NewHTML); FIPHTMLPanel.SetHtml(NewHTML);
NewHTML.LoadFromStream(Stream); NewHTML.LoadFromStream(Stream);
end; end;