几个问题大家来看看啊~~~~~~~~简单的难一点的都有~~~~~~~

lanny540 2004-10-07 11:07:46
1.如何得到当前工程的版本号以及所调用DLL的版本号??
2.大家推荐一个有复选框的树型控件吧!!~~~~~~~~我自己找了一个,用不来.
3.大家用过语法加亮的控件synedit,我怎么装都装不了啊?提示说少文件.晕~~~~~~~~

后面的这个可能有点难吧
4.用WEBBROWNER 来浏览网页,然后将网页存进数据库.存入的字段是 <TITLE> , 网页整个的源代码,以及网页的大小.
5.如何实现在 网页的 直接编辑??(就想 DREAMEVER 一样,可以直接在网页上改而不是去改代码)

大家帮帮我,这个问题缠了我好久了啊~~~~~~~~

分少的话,说一声,我再开一贴~~~~~~~~
还请大家无比帮忙解决该问题!!!~~~~~~~~~~~
...全文
172 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
deepWATERblue 2004-10-08
  • 打赏
  • 举报
回复
UP.
DaSaint 2004-10-08
  • 打赏
  • 举报
回复
保存TWebBrowse中的网页为HTML文件,以及读取WebBrowse的HTML源代码:
uses

ActiveX;

function WB_SaveHTMLCode(WebBrowser: TWebBrowser; const FileName: TFileName): Boolean;

var

ps: IPersistStreamInit;

fs: TFileStream;

sa: IStream;

begin

ps := WebBrowser.Document as IPersistStreamInit;

fs := TFileStream.Create(FileName, fmCreate);

try

sa := TStreamAdapter.Create(fs, soReference) as IStream;

Result := Succeeded(ps.Save(sa, True));

finally

fs.Free;

end;

end;

function WB_GetHTMLCode(WebBrowser: TWebBrowser; ACode: TStrings): Boolean;

var

ps: IPersistStreamInit;

ss: TStringStream;

sa: IStream;

s: string;

begin

ps := WebBrowser.Document as IPersistStreamInit;

s := '';

ss := TStringStream.Create(s);

try

sa := TStreamAdapter.Create(ss, soReference) as IStream;

Result := Succeeded(ps.Save(sa, True));

if Result then ACode.Add(ss.Datastring);

finally

ss.Free;

end;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

WB_SaveHTMLCode(Webbrowser1, 'c:.txt');

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

WB_GetHTMLCode(Webbrowser1, Memo1.Lines);

end;

eFainter 2004-10-08
  • 打赏
  • 举报
回复
学习
readersm68 2004-10-08
  • 打赏
  • 举报
回复
别说是复杂的,简单的我也不会:)
lanny540 2004-10-08
  • 打赏
  • 举报
回复
学习一下~~~~~~

如果用这句就可以保存网页.但我不想出现保存的对话框,而是直接保存在我制定的地方,应该改什么地方???
WebBrowser.ExecWB(OLECMDID_SAVEAS,OLECMDEXECOPT_PROMPTUSER);
WGYKING 2004-10-08
  • 打赏
  • 举报
回复
我一个也不会。。。
:(
caodayong 2004-10-07
  • 打赏
  • 举报
回复
1 有专门的软件可以看到其版本号的,delphi有一个反代码的软件,具体我记不清楚了
2 到delphi盒子里面去找
3 是不是你的路径没添加上呀
4 查下“网博士”的实现原理
5 网页中有很多直接的编辑器的,如:查“asp 在线编辑器”在baidu中
DaSaint 2004-10-07
  • 打赏
  • 举报
回复
有复选框的树型控件[转贴]

以用变通的手法。

  TreeView有Images属性不是吗?自己做三张小图片:全选中、部分选中、不选状态(直接拍下CheckBox三种状态的图片在加工一下就可以了),然后在点击事件中根据具体情况设置TTreeNodes的ImageIndex就OK了。

  如果嫌麻烦的话就去Down一个控件,其实有些控件也是这样做的,界面上你是看不出来的. :)

**************

Manan Patel <mpatel@siemens-hearing.com>

重载TreeView的CreateParams:

type
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 的控件可以下载
seahjun 2004-10-07
  • 打赏
  • 举报
回复
帮顶!
ltzperson 2004-10-07
  • 打赏
  • 举报
回复
厉害,小弟只能帮你,顶了
aiirii 2004-10-07
  • 打赏
  • 举报
回复
http://www.zdnet.com.cn/common/printfriendly/printfriendly.htm?AT=39045821-2000081534t-20000560c

>>3.大家用过语法加亮的控件synedit,我怎么装都装不了啊?提示说少文件.晕~~~~~~~~
我裝過,是沒問題的,你看下少什麼文件

>>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;




grjs2004 2004-10-07
  • 打赏
  • 举报
回复
我就‘3.大家用过语法加亮的控件synedit,我怎么装都装不了啊?提示说少文件’问题说说本人的解决的方法吧:先Close All,然后Open files,然后选*.FPK文件打开,install就可以了!
aiirii 2004-10-07
  • 打赏
  • 举报
回复
>>1.如何得到当前工程的版本号以及所调用DLL的版本号??


使用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;

netrobo 2004-10-07
  • 打赏
  • 举报
回复
1、关于工程和DLL的版本号,可直接读取这些文件的属性即可得到,需要用到API,我没做过,自己找找吧。
2、推荐使用DevExpress系列,或TMS系列,到51Delphi去找吧。
3、如果控件本身没有问题,就是安装的问题,一般是搜索路径没有设置。
4、WebBrowser好像有方法可获得源文件等一些数据。
5、我觉得很难,建议上网找些控件或源代码。
muleo 2004-10-07
  • 打赏
  • 举报
回复
帮UP!!!

5,391

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧