Hur ska jag kunna överföra ett värde i en variabel i en ActiveX kontroll till ASP? variabeln ska returnera en sträng som jag vill kunna använda i min ASP-sida.
variabel -> ASP från ActiveX contol
19 svar · 246 visningar · startad av ironhead
menar du en activex-dll som är typ en komponent som du skapat?
------------------
<A HREF="http://cartman.nu" TARGET=_blank>
can i borrow your goat?
</A>
...en .ocx (ActiveX Control i VB)
Public Property Get sPath() As String
sPath = mystr
End Property
där myStr är en sträng som jag vill skicka till min ASP-sida.
ASP sida:
<%set test=Server.CreateObject("spara.vspara")%>
'# activeX control
response.write test.sPath
...men jag får inget värde på variabeln.
Är myStr deklarerad som en global variabel?
Själv skulle jag göra på ngt liknande sätt:
Private Property Let Path(ByVal sPath) As String
m_sPath = sPath
End Property
Public Property Get Path As String
Path = m_sPath
End Property
Där du nu sätter myStr så är det bara att ändra till:
Path = myStr
cya,
PatrikB
------------------
*Det tar sig sa han som hade eld i håret*
[Redigerat av PatrikB den 01 jul 2001]
Får det inte att fungera (troligen i brist på kunskap)...kan nån hjälpa mig?
ActiveX Control:
Private Property Let Path(ByVal sPath As String)
m_sPath = sPath
End Property
Public Property Get Path() As String
Path = m_sPath
End Property
Private Sub Command1_Click()
mystr = Dir1.Path
Path = mystr
End Sub
Private Sub Drive1_Change()
Dir1.Path = Drive1.Drive
End Sub
Private Sub UserControl_Initialize()
Drive1.Drive = "c:"
Dir1.Path = "\"
End Sub
Koden i ASP:
<%set oTest = server.CreateObject("spara.vspara")
'# ActiveX Control - - -
Response.Write oTest.Path
%>
Tyvärr!!!
Du kan inte skapa ett object på det viset med en OCX, så kan du endast göra med DLL...
Jobbigt att förklara men så är det tyvärr!!!
Så om du måste använda dig av din OCX, får du kapsla in den i en DLL först och låta DLL hanterar all kommunikation mellan ASP-sidan och OCX:en
- Magnus
------------------
Anonym på webForum
om det är en ocx, måste det inte vara client-side script då?
typ:
<SCRIPT LANGUAGE="VBScript>
UserControl1.variabel="bla bla bla"
</SCRIPT>
------------------
/peterbladh
Denna kod returnerar "c:\"
ActiveX Control:
Dim myStr As String
Public Property Get sPath()
sPath = myStr
End Property
Public Sub Command1_Click()
Text1.Text = sPath
End Sub
Private Sub Dir1_Change()
myStr = Dir1.Path
Text1.Text = myStr
End Sub
Private Sub Drive1_Change()
Dir1.Path = Drive1.Drive
End Sub
ASP:
<%set test=Server.CreateObject("ptest.utest")%>
' # ActiveX Control
<%Response.Write test.sPath%>
...men ändrar jag sökväg via annan katalog får jag inte ut det nya värdet.
Kan det vara så att denna ActiveX Control bara körs 1 gång och det är då man får ut värdet på 'sPath'? Isåfall hur kan man få Kontrollen att uppdateras vid varje katalog/drive ändring?
Anonym: Hur kapslar jag in ocx:en i en dll?
peterbladh: Jag förstår inte riktigt.
[Redigerat av ironhead den 02 jul 2001]
Du menar att du lyckas köra din OCX från ASP-sidan. Det skall vara omöjligt enligt konstens alla regler.
Jaja.. man kanske har missat något!!
Med att kapsla in den i en dll, menar jag att du skapar en ActiveX-dll och sedan i den skapar du ett formulär och på det formuläret lägger du den OCX som du vill använda...
I den class som skapas till dll lägger du nu functioner som kan kommunicera med OCX typ.
Public function GetPath()
dim sPath as string
sPath = Form1.pTest.GetPath
GetPath = sPath
end function
På din ASP sida skapar du ett object av din DLL istället för OCX:en och kallar på functionen GetPath() om du vill ha pathen från OCX:en.
- Magnus
------------------
Anonym på webForum
Nu ser det ut såhär:
ActiveX - dll
1. Formulär med ocx:en
2. Class1 som innehåller
Public Function GetPath()
Dim sPath As String
sPath = Form1.utest1
GetPath = sPath
End Function
3. ASP sidan
<%set test=Server.CreateObject("project1.class1")%>
Om jag försöker skriva ut 'test.getPath' som är det det enda val jag får upp så blir det fel (Object doesn't support this property or method)
Kunde inte "hänga på" getPAth efter denna sträng:sPath = Form1.utest1 (felmedd:method or datamember not found)
Hur ska jag "ro detta i land". Hjälp en frusterad järnskalle...
Jag kanske var lite väl snabb där...
givetvis så var min VB - kod inte riktigt rätt, mer som en psedou-kod:
Public function GetPath() as variant
dim sPath as string
sPath = Form1.utest1.GetPath()
GetPath = sPath
end function
Om Du har en OCX som du har döpt till utest1 och den har en funktion som heter GetPath() som returnerar en sträng skall denna kod fungera...
Kolla först så att din OCX fungerar! Om den gör det och detta inte fungerar så vet jag inte vad du har gjort :(
- Magnus
------------------
Anonym på webForum
Får inte till det ändå:(
Detta är vad jag har (ActiveX dll):
Kontroll som heter utest med denna kod
Dim myStr As String
Public Property Get sPath()
sPath = myStr
End Property
Public Sub Command1_Click()
Text1.Text = sPath
End Sub
Private Sub Dir1_Change()
myStr = Dir1.Path
Text1.Text = myStr
End Sub
Private Sub Drive1_Change()
Dir1.Path = Drive1.Drive
End Sub
Class modulen med:
Public Function GetPath() As Variant
GetPath = Form1.utest1.sPath
End Function
Ett formulär med controlen på som heter Form1
Projektet heter Project1
ASP-sidan:
<%set test=Server.CreateObject("project1.class1")%>
'# ActiveX Kontrollen utest (u.ctl)
<%Response.Write test.GetPath%>
Inget felmeddelande, ingenting händer, kontrollen visas...Please Help!
Vad har jag gjort för fel?
[Redigerat av ironhead den 04 jul 2001]
Du kan debuga din kod från VB, så ser du vad som händer...
Om du startar om din IIS, och sedan avregistrerar den DLL som du har skapat.
Sedan startar du VB och laddar in din DLL.
Sätter en breakpoint på din funktionen som du kallar på från ASP-sidan. Trycker på 'play-knappen' så laddas din dll in i minnet och du kan köra din ASP-sida precis som om det var en kompilerad DLL, bara det att du nu kan felsöka i din kod!!
Du kan få ett felmeddelande som säger något om att du inte har rättigheter att köra din DLL från ASP-sidan, detta beror så fall på att användaren IUSR_<<datornamnet>> försöker kör din DLL och det får den inte, ändra rättigheterna på din ASP-Fil så att det endast är den användare som du är inloggad som som får köra filen..
Tyvärr är det det enda tips jag kan ge dig, det borde fungera, så jag antar att du har gjort något annat fel...
- Magnus
buhuuuuu! vad dåligt det går (frustrationen på topp)
Skulle någon vänlig själ förbarma sig och skriva en kodsnutt som via en ASP-sida hämtar ett värde från en vanlig textruta och transporterar det via en ocx-inkapslad dll?
typ:
ocx: text1.text = "test"
bara så att jag kan förstå hur man hämtar värdet, så vi får ett slut på detta inlägg.
Välkommen till webForum, Magnus Gladh!
ironhead:
Jag hänger inte riktigt me på vad du vill göra. I mina ögon ser det omöjligt ut.
<%set test=Server.CreateObject("spara.vspara")%>
'# activeX control
response.write test.sPath
Om vi leker med tanken på att det överhuvud taget är möjligt, så skapar du i alla fall en ny instans av spara.vspara, och den kan inte gärna ha så mycket värde i sPath, såvida den inte tilldelats ett värde i initieringen.
Vad vill du göra?
hehe struligt va!? man försöker så gott man kan.
Jag har gjort en "spara som" ruta i en ActiveX control där man bara anger "drive" och katalog (ej filnamn). Man ska alltså kunna bläddra fram till en katalog och trycka på "ok" så ska sökvägen sparas undan och sedan plockas fram på ASP-sidan.
blev det klarare :)
Det förändrar saken lite!!!
Du kan inte ha någon user-aktivitet i en dll.
Alltså du kan inte visa någon forms eller något annat som en user kan ändra i!!
Om du vill visa din OCX på hemsida, så skall du lägga in den som en ActiveX-komponent på din hemsida, detta fungerar dock endast på Win-maskiner och IE-läsare så det är ingen bra lösning.
Det är nog läge att tänka om!!
- Magnus
oki-doki! ...men det gör ingenting, det är en del av ett intranät som kräver Win/Ie.
Behöver bara veta hur jag skall hämta innehållet i textrutan via ASP.
Det kanske finns nåt bättre sätt att göra detta på?
Tar vänligen emot förslag.
Finns det ingen som har kunskapen om att hämta ett värde i en textruta? (ocx (dll) asp)
Behöver hjälp med detta.