Activeform问题(26分)

  • 主题发起人 主题发起人 jybzjf
  • 开始时间 开始时间
J

jybzjf

Unregistered / Unconfirmed
GUEST, unregistred user!
我建了一个ActiveForm,然后在Delphi中的ActiveX Form中点选 View -> Type Library
然后点选有个像红色棒棒糖的Interface然后点鼠标右键,New一个新的property,我取名为barcodestr,新增完之后按下Type Library中里那一排工具列里面的Refresh。按下之后,在ActiveX form的程序代码就会多出两个函式,如下:

function Get_BarcodeStr: WideString
safecall;
procedure Set_BarcodeStr(const Value: WideString)
safecall;
在这两个函式里面,要加上下面的程序代码,当然也可以加入一些你自己需要的程序。
function TActiveXForm1.Get_BarcodeStr: WideString;
begin
Result := WideString(BarcodeStr);///第一行;
end;
procedure TActiveXForm1.Set_BarcodeStr(const Value: WideString);
begin
BarcodeStr := string(Value);////第二行;
end;
问题如下:
程序编译到第一行和第二行时出错,说是未定义barcodestr这个变量,请问高手,这个问题是怎么回来,怎么样解决。没分了,全给了。
 
搂主,上面那个问题我也不清,因本人帐号要两天后才能提问,借此贴子提个问题,多谢。

我用delphi写了一个ActivexForm,名为:myActive.ocx,我从Test.htm的一个链接里打开带有myActive.ocx控件的网页AA.htm,第一次打开链接(弹出式窗口),AA.htm能正确装载myActive.ocx,当关闭AA.htm浏览器窗口再重新打开此链接时出现DAX Error错误,错误提示如下:

用delphi 6编译此控件显示的错误如下:

DAX Error:
Access violation at address 40005802 in module 'rtl60.bpl',read of address 00000000

用delphi 7编译此控件显示的错误如下:
DAX Error:
Access violation at address 40005802 in module 'myActive.ocx',read of address 00000000


下面是一段关于DAX Error错误的修改资料(borland的网站)

when using Internet Explorer in Wink2, WinXp, ActiveForm or ActiveX control raise

DAX error : access violation at address 000

reason :

delphi's ocx use same parking window procedure.

one ocx must use individual parking window proc.

fix error.

edit delphi VCL source routine in axctrls.pas

and compile axctrls.pas

copy axctrls.dcu to lib directory.

axctrls.pas

function ParkingWindow: HWND


var

TempClass: TWndClass


ParkingName : String


begin

Result := xParkingWindow


if Result <> 0 then Exit


// fix Dax error : accessviolation (win2k, win xp)

ParkingName := 'DAXParkingWindow_' + Format('%p', [@ParkingWindowProc])


FillChar(TempClass, sizeof(TempClass), 0)


if not GetClassInfo(HInstance, PChar(ParkingName), TempClass) then // fix Dax error : accessviolation (win2k, win xp)

begin

TempClass.hInstance := HInstance


TempClass.lpfnWndProc := @ParkingWindowProc


TempClass.lpszClassName := PChar(ParkingName)
// fix Dax error : accessviolation (win2k, win xp)

if Windows.RegisterClass(TempClass) = 0 then

raise EOutOfResources.Create(SWindowClass)


end


xParkingWindow := CreateWindowEx(WS_EX_TOOLWINDOW, TempClass.lpszClassName, nil,

WS_POPUP, GetSystemMetrics(SM_CXSCREEN) div 2,

GetSystemMetrics(SM_CYSCREEN) div 2, 0, 0, 0, 0, HInstance, nil)


SetWindowPos(xParkingWindow, 0, 0, 0, 0, 0, SWP_NOACTIVATE or SWP_NOREDRAW

or SWP_NOZORDER or SWP_SHOWWINDOW)


Result := xParkingWindow


end



我用delphi6按上面方法修改了AxCtrls.pas,重新编译得到的AxCtrls.dcu文件 copy到lib目录下覆盖原来的文件,我重新编译myActive.ocx控件,还是出现原来的错误。请问此问题如何解决?
 
太郁闷了,等了那么久就让我等到了一个借题发挥的同道中人啊。最近几天发的贴子就是没人回,感觉最近的回贴率没有以前高了,强烈要求版主发挥作用。高手是不是都转行了。看来我也得转了。:(
快啊,很急的,兄弟姐妹们,帮帮忙啦,行行好吧,可怜可怜我吧。:(
 
你的定义一个全局变量BarcodeStr来保存属性的值才行。
 
后退
顶部