1.如何得到当前工程的版本号以及所调用DLL的版本号??
2.大家推荐一个有复选框的树型控件吧!!~~~~~~~~我自己找了一个,用不来.
3.大家用过语法加亮的控件synedit,我怎么装都装不了啊?提示说少文件.晕~~~~~~~~后面的这个可能有点难吧
4.用WEBBROWNER 来浏览网页,然后将网页存进数据库.存入的字段是 <TITLE> , 网页整个的源代码,以及网页的大小.
5.如何实现在 网页的 直接编辑??(就想 DREAMEVER 一样,可以直接在网页上改而不是去改代码)大家帮帮我,这个问题缠了我好久了啊~~~~~~~~分少的话,说一声,我再开一贴~~~~~~~~
还请大家无比帮忙解决该问题!!!~~~~~~~~~~~
2.大家推荐一个有复选框的树型控件吧!!~~~~~~~~我自己找了一个,用不来.
3.大家用过语法加亮的控件synedit,我怎么装都装不了啊?提示说少文件.晕~~~~~~~~后面的这个可能有点难吧
4.用WEBBROWNER 来浏览网页,然后将网页存进数据库.存入的字段是 <TITLE> , 网页整个的源代码,以及网页的大小.
5.如何实现在 网页的 直接编辑??(就想 DREAMEVER 一样,可以直接在网页上改而不是去改代码)大家帮帮我,这个问题缠了我好久了啊~~~~~~~~分少的话,说一声,我再开一贴~~~~~~~~
还请大家无比帮忙解决该问题!!!~~~~~~~~~~~
2 到delphi盒子里面去找
3 是不是你的路径没添加上呀
4 查下“网博士”的实现原理
5 网页中有很多直接的编辑器的,如:查“asp 在线编辑器”在baidu中
2、推荐使用DevExpress系列,或TMS系列,到51Delphi去找吧。
3、如果控件本身没有问题,就是安装的问题,一般是搜索路径没有设置。
4、WebBrowser好像有方法可获得源文件等一些数据。
5、我觉得很难,建议上网找些控件或源代码。
使用GetFileVersionInfo 得到版本信息的例子
Samples Using GetFileVersionInfo?回答1:
procedure GetBuildInfo(var V1, V2, V3, V4: Word);
var
VerInfoSize: DWORD;
VerInfo: Pointer;
VerValueSize: DWORD;
VerValue: PVSFixedFileInfo;
Dummy: DWORD;
begin
VerInfoSize := GetFileVersionInfoSize(PChar(ParamStr(0)), Dummy);
GetMem(VerInfo, VerInfoSize);
GetFileVersionInfo(PChar(ParamStr(0)), 0, VerInfoSize, VerInfo);
VerQueryValue(VerInfo, '\', Pointer(VerValue), VerValueSize);
with VerValue^ do
begin
V1 := dwFileVersionMS shr 16;
V2 := dwFileVersionMS and $FFFF;
V3 := dwFileVersionLS shr 16;
V4 := dwFileVersionLS and $FFFF;
end;
FreeMem(VerInfo, VerInfoSize);
end;
我裝過,是沒問題的,你看下少什麼文件>>4.用WEBBROWNER 来浏览网页,然后将网页存进数据库.存入的字段是 <TITLE> , 网页整个的源代码,以及网页的大小.uses
MSHTML_TLB, ActiveX;
function GetHTMLCode(WB: IWebbrowser2; ACode: TStrings): Boolean;
var
ps: IPersistStreamInit;
s: string;
ss: TStringStream;
sa: IStream;
begin
ps := WB.document as IPersistStreamInit;
s := '';
ss := TStringStream.Create(s);
try
sa:= TStreamAdapter.Create(ss, soReference) as IStream;
Result := Succeeded(ps.Save(sa, Bool(True)));
if Result then ACode.Add(ss.Datastring);
finally
ss.Free;
end;
end;procedure TForm1.Button1Click(Sender: TObject);
var
ShellWindow: IShellWindows;
WB: IWebbrowser2;
spDisp: IDispatch;
IDoc1: IHTMLDocument2;
k: Integer;
begin
ShellWindow := CoShellWindows.Create;
// get the running instance of Internet Explorer
for k := 0 to ShellWindow.Count do
begin
spDisp := ShellWindow.Item(k);
if spDisp = nil then Continue;
// QueryInterface determines if an interface can be used with an object
spDisp.QueryInterface(iWebBrowser2, WB);
if WB <> nil then
begin
WB.Document.QueryInterface(IHTMLDocument2, iDoc1);
if iDoc1 <> nil then
begin
WB := ShellWindow.Item(k) as IWebbrowser2;
begin
// Add HTML Code to Memo
Memo1.Lines.Add('****************************************');
Memo1.Lines.Add(WB.LocationURL);
Memo1.Lines.Add('****************************************');
GetHTMLCode(WB, Memo1.Lines);
end;
end;
end;
end;
end;
TCheckBoxTreeView = class(TTreeView)
protected
procedure CreateParams(var Params: TCreateParams); override;
end;procedure TCheckBoxTreeView.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.Style:=Params.Style or TVS_CHECKBOXES;
{ TVS_CHECKBOXES declared in CommCtrl }
end;如果要Check这个CheckBox,可以用下面的代码:function IsNodeChecked(Node :TTreeNode) :Boolean;
const
TVIS_CHECKED = $2000;
var
TvItem :TTVItem;
begin
TvItem.Mask := TVIF_STATE;
TvItem.hItem := Node.ItemId;
TreeView_GetItem(Node.TreeView.Handle, TvItem);
Result := (TvItem.State and TVIS_CHECKED) = TVIS_CHECKED;
end;procedure SetNodeChecked(Node :TTreeNode; Checked :Boolean);
const
TVIS_CHECKED = $2000;
var
TvItem :TTVItem;
begin
FillChar(TvItem, SizeOf(TvItem), 0);
with TvItem do begin
hItem := Node.ItemId;
Mask := TVIF_STATE;
StateMask := TVIS_STATEIMAGEMASK;
if Checked then
TvItem.State :=TVIS_CHECKED
else
TvItem.State :=TVIS_CHECKED shr 1;
TreeView_SetItem(Node.TreeView.Handle, TvItem);
end;
end;可以做成事件和封装成一个类:private OldState :Boolean;procedure Change(Node: TTreeNode); override;
begin
inherited Change(Node);
OldState := IsNodeChecked(Node);
end;procedure Click; override;
var
NewState :Boolean;
begin
inherited Click;
NewState := IsNodeChecked(Self.Selected);
if NewState = OldState then Exit;
if (NewState) and Assigned(OnNodeChecked) then OnNodeChecked()
else if (not NewState) and Assigned(OnNodeUnChecked) then OnNodeUnChecked()
// OnNodeChecked & OnNodeUnchecked will be events that you declare
end;另:有一个叫 CheckTV 的控件可以下载
WebBrowser.ExecWB(OLECMDID_SAVEAS,OLECMDEXECOPT_PROMPTUSER);
usesActiveX;function WB_SaveHTMLCode(WebBrowser: TWebBrowser; const FileName: TFileName): Boolean;varps: IPersistStreamInit;fs: TFileStream;sa: IStream;beginps := WebBrowser.Document as IPersistStreamInit;fs := TFileStream.Create(FileName, fmCreate);trysa := TStreamAdapter.Create(fs, soReference) as IStream;Result := Succeeded(ps.Save(sa, True));finallyfs.Free;end;end;function WB_GetHTMLCode(WebBrowser: TWebBrowser; ACode: TStrings): Boolean;varps: IPersistStreamInit;ss: TStringStream;sa: IStream;s: string;beginps := WebBrowser.Document as IPersistStreamInit;s := '';ss := TStringStream.Create(s);trysa := TStreamAdapter.Create(ss, soReference) as IStream;Result := Succeeded(ps.Save(sa, True));if Result then ACode.Add(ss.Datastring);finallyss.Free;end;end;procedure TForm1.Button1Click(Sender: TObject);beginWB_SaveHTMLCode(Webbrowser1, 'c:.txt');end;procedure TForm1.Button2Click(Sender: TObject);beginWB_GetHTMLCode(Webbrowser1, Memo1.Lines);end;