Detta blir krångligt att förklara. Jag tror att du försätter dig i för många problem med OCX-tekniken. Kolla om du inte kan använda dig av gifbilder i alla fall. Kanske to.m använda javascript för att markera respektive avmarkera en av länen och sedan när du submittar sidan så har du det id du behöver. Nej detta är precis tvärtom. OCX kommer bara att fungera på en windows maskin, och jag vet faktiskt inte om den fungerar med Netscape (tror inte det)... Att det bara skulle fungera på en windows kan jag stå ut med. Jag skulle föreslå att du placerar all funktionalitet i en activex-dll som tar exempelvis företagsID som inparameter. DLLen utför queryn, ritar den gifbild du vill ha, sparar ner den och returnerar sökvägen till bilden. Låter enkelt ? 1. Skapa ett activeX DLL projekt.<br> Jag har förgäves sökt i VB (VB5) för att hitta kommando som skapargif-bilder. Hej! Nej, det finns inget stöd i VB att spara bilder i GIF-format. Det finns blandade komponenter att hitta på nätet. Jag har bara använt PicFormat32 Okay Jocke. 1. Jag har bara registrerat PicFormat32.ocx och haft dll-en antingen i system-katalogen eller programkatalogen. Med .image och autoredraw=true gick det att spara bilden inkl förändringarna. I mitt projekt använde jag komponenten under NT4. Jag registrerade OCX:en (vilket fungerade) och använde DLLen oregistrerad (nej, jag kunder inte heller registrera dllen) Eftersom picformat32.ocx går att registrera i min NT, så har jag valt att lägga denna ocx som en komponent i min egna dll. Hrmmm...... * I NT4 måste du starta om WWW servicen, inte bara stanna stoppa.Dynamisk karta på web med egen OCX ??
Jag vill ha en karta på en websida där alla 289 kommuner i sverige finns markerade. De kommuner som dessutom finns i en tabell/fråga i min sql-server skall färgas i en annan homogen färg.
Min tanke är att lösa detta med en egenskapad ocx och api-funktionen floodfill. (skapas i VB5).
Denna ocx skall sedan läggas på en asp-sida på min IIS4-server.
Är detta möljigt att genomföra???
Jag har kommit så här långt:
Jag har skapat ett vb-projekt.
Fått api-funktionen för FLOODFILL att fungera i en VB-EXE-fil.
När jag klickar på en knapp i ett formulär körs en procedur som färglägger ett visst område i ett Image-fält. Image-fältet innehåller en sverigekarta.
Än så länge ligger x och y koordinaterna statiskt i koden för att kunna testa api-funktionen.
Nu till problemen.
1: När jag gör om projektet till ett ocx-projekt, skapar en ocx.
Lägger ocx:n i ett formulär i ett nytt projekt för test, får jag inte ocx:n till att köra den kod jag för test lade på knappen som färglade bilden.
Med andra ord, var skall jag lägga den kod som jag vill skall köras med automatik i ocx:n när ocx:n 'öppnas'?? Jag testade att lägga koden i händelsen 'initalize', men det händer inget.
Bilden (kartan) syns på formuläret, men jag kan inte färglägga min del av kartan. (få min kod att köras).
2: När jag så småningom fått ocx:n att fungera i ett vb-projekt, hur får jag den att fungera på en asp-sida??
Jag testade att infoga ocx:n på en asp-sida mha dreamweaver. Men när jag tittar på sidan i explorer, kommer bara en liten 'icon' på ocx:ns plats. Om man klickar på iconen, kommer det upp en feltext som säger att explorer inte har någon funktion för att visa denna typ av komponent. Behöver jag registrera ocx:n i den dator där ISS:n snurrar?
3: När väl problem 2 är löst, hur gör jag för att kunna tala om för ocx:n att den skall hämta data från min sql-server? Jag vet hur jag skapar ett recordset på en asp-sida, men hur får jag det till min ocx??
4: Kommer detta att fungera både i explorer och netscape?
Företaget använder explorer, men det är en bonus om även ns går att använda.
5: Finns någon annan lösning på mitt problem än med en ocx? Kan man gör dessa api-funktioner i vb-script direct på asp-sidan utan att använda en ocx?
Många frågor på en gång. Hoppas ni förstår vad jag är ute efter.
Kan ni inte svara på allt, är jag tacksam för delsvar.
/ MikaelSv: Dynamisk karta på web med egen OCX ??
Exempel:
http://www.systembolaget.se/svenska/butiker/xindex.htm
http://www.spelmansforbund.org/huvudsida.htm
http://www.sshf.nu/kartan/sverigekarta.htm
http://www.villariks.se/
http://www.uu.se/Univ/uumapcentral.html
http://www.bygdegardarna.se/distrikt.htm
Här kan du om du hittar någon bra karta lägga onClick="byt bild" på varje bild och sedan byta bild så den ser markerad ut. Du kan även använda ondblClick="javascript:gå dit"
Se www.javascriptsource.com för att kolla hur man kan byta ut bilder..
Ps. Sökte på "klicka på kartan" med www.alltheweb.com
/PelleSv: Dynamisk karta på web med egen OCX ??
Jag vill INTE klicka på en karta för att få ett index.
Jag vill mha ett index (som ger ett recordset med flera poster/kommuner) visa en karta som återspeglar frågans svar.
Om jag fattar dig rätt, så vill du klicka på en karta för att komma vidare till någon annan sida.
Detta vill inte jag. Jag vill presentera ett recordset som en kartbild.
Låt oss säga att ett bolag finns i 150 av sveriges kommuner.
Jag vill presenera vilka kommuner bolaget finns i. Att då lista upp dessa 150 kommuner i en lista blir oöverskådligt.
Jag vill istället presentera en karta där dessa 150 kommuner är färgade.
Att använda gif-bilder blir ganska stökigt pga sveriges kommuner inte är rätvinkliga.
Jag skulle dessutom behöva 289 x 2 st gif-bilder.
(Många bilder blir dé).
/ MikaelSv: Dynamisk karta på web med egen OCX ??
Du bör kunna köra din databasfråga i ASP och sedan skicka de värden du får från databasen till OCX, har gjort det någongång, men kommer inte ihåg hur man gör...
Annat exempel:
Du ritar ut en sverige karta, och sedan med hjälp av DHTML (kraftfull på IE) så lägger du på ett färglagger med hjälp av de kordinator som du får från databasen... Det kommer att kräva en massa kod, men blir nog lättare än att strula med OCX...
Den enklast med tråkigast metoden blir nog ändå att skapa alla komunner i en färg och sedan lägga de kommuner som skal visas ovanpå en befintlig sverigekarta...
Eller kanske skapa gifbilden varje gång som frågan ställs mot databasen. Bör gå att göra med en dll.Sv: Dynamisk karta på web med egen OCX ??
Även detta med att det bara fungerar på IE är OK.
Vi har detta som standard i bolaget. Om någon använder något annat, får jag väl göra en asp-tabell med aktuella kommuner listade till dem.
Men förklara, hur mycket av koden körs i webläsaren? Det är ju en asp-sida. Körs inte allt på servern, och levereras 'färdigt' till klienten/browsern?
Det verkar enklare att få FloodFill-api:t att fungera i VB, än att ha en massa gilder att hantera i asp-koden. Och framförallt allt slippa ladda ner minst 289 bilder för att se en karta.
Jag har ju FloodFill fungerande i en VB-exe-fil, men inte som ocx...
/ MikaelSv: Dynamisk karta på web med egen OCX ??
Sv: Dynamisk karta på web med egen OCX ??
Förslag på hur.
Lite mer detaljerat.
/ MikaelSv: Dynamisk karta på web med egen OCX ??
2. Skapa en klassmodul och byt namn till exvis myClasses<br>
3. I modulen skapa en publik funktion. Tex:<br>
<code>
Public Function PaintMap(ByVal intRecordID As Variant) As Variant
' Hämta info från databasen och skapa kartan
PaintMap = strSökvägen_till_filen
End Function
</code>
4. Kompilera med lämpligt namn. myDLL.dll<br>
5. När du installerat och registrerat dll-en på servern och startat om webservern kan du i ASP anropa funktionen.<br>
<code>
Dim intRecordID
Dim oMap
Dim strPath
intRecordID = 211 'FöretagsID som inparameter
Set oMap = Server.CreateObject("myDLL.myClasses")
strPath = oMap.PaintMap(intRecordID)
</code>
<br>Sv: Dynamisk karta på web med egen OCX ??
Hittar inget.
Det enda jag hittar är kommandot SavePicture.
Detta kommando skapar en fil av ett picture eller image objekt.
Tyvärr blir det då en -bmp-fil.
Hur skapa en gif-fil??
Finns stöd för detta i VB6??
/ MikaelSv: Dynamisk karta på web med egen OCX ??
Magnus exempel tycker jag låter smidigast.
Jag skulle ha gjort på följande sätt (ungefär...):
1) Skapa en sverigekarta
2) Lägg in kommunerna i en tabell i databasen med koordinater VART på sverigekartan kommunerna finns
3) Det där bolaget som du nämde finns t ex i en tabell och refererar t ex till tabellen tblKommunbolag där respektive bolagsid:et och kommunid:et finns.
4) På sidan där du ska presentera data lägger du in din sverigebild och en länk till bolaget du vill ska markera upp områden på kartan
5) När någon klickar på bolaget så skulle du kunna använda remote scripting för att hämta på vilka koordinater som kommunerna finns och därefter använda ett enkelt DHTML-bibliotek för att pricka ut kommunerna
... tja... något i den genre iaf ;)
Remote Scripting:
http://msdn.microsoft.com/scripting/default.htm?/scripting/remotescripting/default.htm
DHTML-bibliotek (som jag skulle ha använt - dock något modifierat, så klart):
http://www.firstdev.com/firstdevlab/
logga in med din epostadress (efter att du reggat dig) och lösenordet devthirst
Oavsett hur du gör - Lycka till och lev väl!
Tom S.Sv: Dynamisk karta på web med egen OCX ??
http://www.planetsourcecode.com/xq/ASP/txtCodeId.13267/lngWId.1/qx/vb/scripts/ShowCode.htm
Huruvida denna är laglig med tanke på UniSys licens på LZW-algoritmen vet jag inte.
/JockeSv: Dynamisk karta på web med egen OCX ??
Projektet börjar ta form.
Två problem återstår.
1: Jag kan inte registrera PicFormat32.dll.
Jag får ett larm som säger "PicFormat32.dll was loaded, but the DllRegisterserver entry point was not found. DllRegisterserver may not be exported, or a corrupt vesrion of PicFormat32.dll may be in memory. Consider using PView to detect and remove it."
Vad är detta??
2: Jag lyckas inte spara min behandlade bild. Jag har ett picture-objekt i ett formulär. Objektet 'redigeras' genom att jag fyller delar av bilden med api-funktionen FLOODFILL.
Sedan använder jag kommandot SavePicture i VB. MEN det som sparas är 'källbilden' i mitt picture-objekt. Inte bilden jag ser i formuläret, där vissa delar är fyllda mha FloodFill.
Hur göra för att spara den behandlade bilden??
För manual till FloodFill, se följande artikel hos MS. (Måste dock modifieras lite. Artikeln handlar om VB1,2 och 3)
Men efter modifiering fungerar det utmärkt.
http://support.microsoft.com/support/kb/articles/Q71/1/03.asp
/ MikaelSv: Dynamisk karta på web med egen OCX ??
2. Skickar du med image-propertyn när du sparar bilden? .Picture innehåller orginalbilden och .Image innehåller orginalbilden plus de modifieringar du gjort.Sv: Dynamisk karta på web med egen OCX ??
Men jag lyckas inte med att reg PicFormat.
Jag har nu även testat att reg:a ocx:n, men inte heller det lyckas.
När jag försöker reg:a dll:n får jag larmet enl ovan.
När jag försöker reg:a ocx:n får jag "Load library 'picformat32.ocx' failed. GetLastError returns 0x00000485"
Verkar som om regsvr32 inte hittar ocx:n. Jag får nämnligen samma larm om jag tar bort hela ocx:n från hdd:n.
Jag kör 'regsvr32 picformat32.ocx'
Har även försökt med att peka ut hela sökvägen till ocx:n, men med samma resultat.
När jag försöker reg .ocx:n i min NT4 fungerar det. Men inte på en 95:a.
Tyvärr så hjälper det ju inte mig. Jag är ju beroende av dll:n.
(dll:n går inte att reg på min NT4 heller.)
Jocke: Har du någon annan version av picformat än den som ligger på den adress du gav mig?
Den som jag hämtade hem heter PicFormat32a och VB-exemplet som ingår har en massa 'test-kod'. Verkar inte vara den skarpa versionen.
Om du har en annan version, kan du väl skicka den till mig via mail.
Adressen finns på mitt visitkort.
/ MikaelSv: Dynamisk karta på web med egen OCX ??
Om du inte lyckas med PicFormat verkar detta vara ett kompetent alternativ:
otf_GIF Encoder ActiveX dll
http://www.dkt.com/DKT_otfGIF_Product_Description.htmlSv: Dynamisk karta på web med egen OCX ??
Detta fungerar alldeles utmärkt.
Nu återstår bara att testa det i den NT/IIS som den skall köras i, samt att få till funktionen i en asp-sida. (Och få till en snygg karta att utgå ifrån.)
Jag har testat allt i ett VB-exe projekt där jag anropar min dll. OK.
Tack för all hjälp.
/ MikaelSv: Dynamisk karta på web med egen OCX ??
Det var inte riktigt klart.
Ett (känt) problem återstår.
Eftersom viss utvekling av dll:n kommer att ske, skulle jag enkelt vilja kunna byta ut den på servern. Men så fort jag testat asp-sidan på IIS:n, så blir min dll låst för utbyte eler radering. Någonting håller den, så att jag inte kan ta bort den. Hur lösa detta? Det räcker inte att stoppa IIS:n. Jag fick starta om hela NT.
/ MikaelSv: Dynamisk karta på web med egen OCX ??
* I Windows2000 och senare kan du lägga dll i Com+ och köra den som out of process (server appl.) och sedan köra shutdown.
Övrigt.
Om du skriver i Interdev kan du behöva stänga sidan du använder kompondenten
Ibland måste man stänga VB helt, då den håller Dll:en laddad i minnet själv (så korkat så man vill kräkas)