Webbrowser i Visual Basic 6

Tags:    visual-basic
Skrevet af Bruger #6864 @ 28.03.2005

Lidt forord


I denne artikel vil jeg beskrive hvordan du laver en rimelig funktionel internet browser i Visual Basic, artiklen henvender sig mest til nybegyndere der gerne vil lave andet end Msgboxe.

Hvilke funktioner får min webbrowser?
I denne artikel vil vores webbrowser få følgende funktioner:

Basis funktionerne såsom: Frem, Tilbage, opdater osv.
Åben,Gem, Udskriv, osv.
En indbygget Google søgemaskine.

Krav til viden
Hvis du har prøvet Visual Basic mere end 2 gange burde der ikke være de store problemer med at forstå denne artikel.

Bemærk
Ved en kode som fx denne:
Fold kodeboks ind/udKode 

Skal du ikke indtaste "private sub cmbHjem_click()" og "End Sub" hvis det allerede står i din kode, disse bruges så du kan sammenligne om du er ved den samme kontrol som kode-eksemplet er lavet til.

Lad os komme igang
Start Visual Basic og åbn et nyt projekt.
På panelet med de forskellige værktøjer højreklikker du og vælger Components
som vist på billedet nedenunder:



Når du trykker på Components kommer der en ny dialogboks frem hvor du kan vælge hvilke komponenter du vil have til rådighed på panelet med værktøjer.
Find komponenten Microsoft Internet Controls som vist på billedet og tryk Ok



Den nye komponent er nu tilføjet til værktøjspanelet og er repræsenteret af et lille globus ikon. Vælg denne ved at trykke på den, og træk den ud på formen.
Indsæt også 6 knapper på formen og en combobox så det hele kommer til at se nogenlunde sådan her ud:



Omdøbning af kontrollernes Caption



Lad os starte med at omdøb knappernes caption, dvs. det der står inde i dem, og kalde dem følgende:


Command1 = Tilbage
Command2 = Frem
Command3 = Stop
Command4 = Opdater
Command5 = Hjem
Command6 = Gå

Se eventuelt billede ovenover.

Combo1 har ikke noget der hedder caption, men i stedet hedder det Text.
Angiv Text på Combo1 til = "", dvs. ingenting.

Nu har de forskellige kontroller vi har indsat fået en mere forståelig tekst, og du har sikkert også gættet hvad de skal bruges til.

Navngivning af kontrollernes Name



Lad os omdøbe de forskellige objekters "Name"(Navn)
Gør følgende:
Klik på webbrowser komponenten, og i Properties vinduet vælger du Name og omdøber den fra "Webbrowser1" til "W", uden " tegn. Dette vil gøre det lettere at tilføje kode til webbrowseren.
Se evt. billede hvis du er i tvivl om hvor tingene befinder sig:


Lad os også omdøbe knapperne og combo boksens Navn(Name), så det hele bliver en smule mere overskueligt. Start med at klikke på Command1 og omdøb den til "cmbTilbage". Grunden til at vi ikke bare kalder den "Tilbage", og sætter "cmb" foran, er fordi det er en god vane at lære at navngive sine kontroller korrekt, "cmb" står for "Command button" og gør det derfor lettere at gennemskue, når du læser kildekoden igennem, hvilken kontrol der ligger bag navnet.
Navngiv alle kontroller så de kommer til at hedde sådan:

command1 = cmbTilbage
command2 = cmbFrem
command3 = cmbStop
command4 = cmbOpdater
command5 = cmbHjem
command6 = cmbGå
combo1 = cboAdresse <-- cbo står for combo box.





Tilføj kode
Nu skal programmet have "liv", med andre ord, vi skal have tilføjet noget kode så vores program kan noget. Lad os starte med en kode der går programmet i stand til at kunne navigere tilbage til en tidligere besøgt side. Dette gøres ved at dobbelt klikke på cmdTilbage, som i Caption, dvs. det du kan se står i knappen, hedder "Tilbage"

Indtast følgende:
Fold kodeboks ind/udKode 


Det betyder:
"On error goto Fejl" hvis der sker en fejl skal den gå til "fejl", grunden til at vi inkluderer denne kode er at hvis der ikke er nogen side at gå tilbage til, vil programmet give en fejl.
"w.GoBack": "w" er vores webbrowser komponent, og "Goback" får "w" til at gå en side tilbage.
"Fejl:" dette er her hvor vores fejlkontrol går hen hvis der sker en fejl, du kan sætte kode bag fx en meddelelses boks m.m. men det har vi ikke brug for her.

Tilføj følgende koder ind i de tilsvarende knapper:

Frem knappen:
Fold kodeboks ind/udKode 


Opdater knappen:
Fold kodeboks ind/udKode 


Stop knappen:
Fold kodeboks ind/udKode 


Hjem knappen:
Fold kodeboks ind/udKode 


Gå knappen:
Fold kodeboks ind/udKode 


Gå knappens kode:
"w" = webbrowser komponenten, Navigate = det sted "w" skal gå hen.
"(cboAdresse.text)" = vores combo boks's tekst

Vi kunne udvide "Gå" knappen en smule, og lave koden om sådan:

Fold kodeboks ind/udKode 

Nu har vi sat en betingelse der lyder, hvis Combo boksens indhold er ingenting, skal der ikke udføres nogen kode.

Tilføj en søgemaskine

Den mest populære søgemaskine er vel nok Google, så det er oplagt at bruge den som vores integrerede søgemaskine. Gør følgende:
Vælg comboboks kontrollen (combo) på værktøjspanelet og træk den ud på formen, og vælg derefter en knap og træk den ud på formen. Navngiv knappen således:
Caption = Søg
Name = cmdSøg

Navngiv combo1(Combo boksen) således:
Text =
Name = cboSøg

Resultatet kan se sådan ud:



Dobbeltklik på cmdSøg (søg knappen) og tilføj følgende kode:
Fold kodeboks ind/udKode 


"w.navigate" har vi været inde på.

" ("http://www.google.dk/search?hl=da&q=" & cboSøg.Text) "
denne kode er den vi vil have webbrowseren til at navigere hen til,
først Google adressen til en søgning + det der står i cboSøg (combo)

Når et nyt vindue åbnes
Hvis du har prøvet at åbne et link i et nyt vindue med din nye webbrowser har du sikkert fundet ud af at din Explorer åbner det nye vindue i stedet for din egen webbrowser.
Det kan der gøres noget imod med denne metode:

Dobbeltklik på din webbrowser component så du kan tilføje kode til den. I toppen hvor du kan vælge hvilken procedure (handling) der skal foretages vælger du NewWindow2 og indsætter følgende kode:

Fold kodeboks ind/udKode 


Dim frmD as form1:
erklærer frmD som form1

Set frmD = New Form1
Sætter frmD som en ny form1(en kopi på en måde)

frmD.show
Viser frmD

set ppDisp = frmD
Denne kode gør at den nye form1 navigerer hen til der hvor det valgte link fører hen og forhindrer Explorer i at åbne det nye vindue

lige et billede af hvor du kan finde "newWindow2" henne:



Få webbrowser til at følge med
Hvis du har prøvet at maksimere vores webbrowser har du også fundet ud af at dens størrelse overhovedet ikke følger med resten af formen. Det skulle den jo helst, og problemet kan løses med denne metode:
i project vinduet højreklikker du på form1 og vælger "view code"
Vælg, ligesom da du valgte NewWindows2 for webbrowseren, proceduren "Resize" og skriv følgende kode i den:

Fold kodeboks ind/udKode 

koden "W.width = me.scalewidth" betyder at W(webbrowseren) skal have sammen bredte som me (form1) når der ændres på formen. Det samme gælder for height, det er bare højden.

Du bliver nød til at sætte et minus tal bag ved "me.scaleheigt". Grunden til dette er at vi jo ikke har placeret W(webbrowseren) helt oppe i toppen af formen. Prøv dig frem, start eks. med - 1000
Fold kodeboks ind/udKode 


Flere funktioner
Nu har vi en ganske brugbar browser der både følger med når vi ændrer vinduets størrelse, åbner et nyt vindue med sig selv, og har en indbygget søgemaskine. Men der mangler stadigvæk nogle muligheder for at kunne skrive en side ud med en printer, at gemme en side, m.m. Så det vil vi gøre nu.

Lave en menu
I stedet for at fylde hele formen med knapper, vil vi nu tilføje en menu til programmet.
Jeg syntes at det vil være uoverskueligt at indsætte dem alle på én gang, så vi starter med den første. Vælg Tools oppe i Visual Basic's menu og tryk på Menu editor .
Nu kommer en dialogboks frem hvor du kan begynde at lave din første menu til din browser.

I "Caption" feltet skriver du "Filer" og under "Name" skriver du "Filer".
Lav en undermenu til menu'en filer og kald dens Caption og Name for "Ny"
Lav en undermenu til menu'en "Ny" og kald dens Caption for "Vindue og Name for "cmdVindue"
Det skulle gerne se således ud i menu editoren:



Opret nu følgende under menupunkter til menu'en Filer (det første er Caption og det efterfølgende er Name):

Åben - cmdÅben
gem som - cmdGemSom
Sideopsætning - cmdSideOp
Udskriv - cmdUdskriv
Vis udskrift - cmdVisUdskrift
Egenskaber - cmdEgenskaber
Luk - cmdLuk

Det skulle gerne se således ud når du er færdig:



Lad os tilføje noget mere kode

Hvis du stadivæk har menu editoren åben skal du trykke på Ok knappen for at gemme det du har indtastet. Tryk på den nye menu du har lavet på form1 og tryk på knappen "Luk" i menu'en filer og indtast denne kode:
Fold kodeboks ind/udKode 


Tryk på knappen Egenskaber i menu'en filer og skriv denne kode:
Fold kodeboks ind/udKode 


Ovenstående kode kalder til Windows's "Egenskaber for side" dialog. Som du også kan se har vi lavet kode til fejlkontrol grunden til dette, er at hvis der ikke er nogen side* at vise vil programmet gå ned (*ikke at forveksle "siden kunne ikke findes"). Dette er dog ikke noget problem hvis du sætter W(webbrowseren) til at navigere til about:blank eller til at GoHome i Form1_Load.


Tryk på knappen "Vis udskrift" og skriv følgende kode:
Fold kodeboks ind/udKode 

Ovenstående kode kalder til Windows's "Vis udskrift" dialog. Igen er fejlkontrol en god ting hvis du gør det muligt at starte browseren helt blank, men ellers er det unødvendigt.

Tryk på knappen "Udskriv" og indtast denne kode:
Fold kodeboks ind/udKode 

Ovenstående kode kalder til Windows's "Udskriv" dialog.

Tryk på knappen Sideopsætning og skriv følgende kode:
Fold kodeboks ind/udKode 

Ovenstående kode kalder til Windows's "Sideopsætning" dialog.
I knappen Vindue i undermenu'en "Ny" sætter vi følgende kode ind i:
Fold kodeboks ind/udKode 

Overstående kode åbner en ny form.

Nu er vores første menu færdigkodet, næsten, vi mangler lige "Åbn" knappen før den er helt færdig. Vi vælger at bruge Commondialog komponenten da det er nemmest.
Højreklik på værktøjspanelet, ligesom da du valgte webbrowser komponenten, og find en komponent der hedder: Microsoft Common Dialog Control 6.0. Sæt flueben ud for og tryk Ok. Træk den nu ud på formen, det er ikke vigtigt hvor, da den er usynlig i runtime.

Klik på Åben i undermenu'en Filer og indtast følgende kode:
Fold kodeboks ind/udKode 



Nyt menupunkt
En lidt unødventig en måske, men lad os tilføje menupunktet, Rediger.
Gå ind i menu editoren ved at klikke på "Tools" og knappen "Menu Editor" og
tilføj følgende punkt:

Rediger - Rediger

Tilføj følgende knapper til menupunktet Rediger:

Klip - cmdKlip
Kopier - cmdKopier
Sæt ind - cmdSætind
Marker alt - cmdMarkerlt

Tryk "ok" for at gemme.

Skriv følgene kode i knappen "cmdKlip":
Fold kodeboks ind/udKode 


Skriv følgende kode i knappen "cmdKopier":
Fold kodeboks ind/udKode 


Skriv følgende kode i knappen "cmdSætind":
Fold kodeboks ind/udKode 


Skriv følgende kode i knappen "cmdMarkeralt":
Fold kodeboks ind/udKode 


Sidste Menupunkt
Lad os springe ud i det og tilføje det sidste menupunkt, Funktioner. Åbn menu editoren og tilføj følgende menupunkt:
"Funktioner"- "Funktioner"

Tilføj følgende punkter til menupunktet "Funktioner"

"Internet Indstillinger" - "cmdInternetind"
"Windows Update" - "cmdwinup"

sådan her skulle det gerne se ud:



Tryk "Ok" for at gemme.


Åbn menupunktet "Internet Indstillinger" og indtast følgende kode:
Fold kodeboks ind/udKode 


Åbn menupunktet "Windows Update" og indtast følgende kode:
Fold kodeboks ind/udKode 



Sidste ting til at gøre browseren lidt nemmere at bruge

For at undgå at skulle trykke på "Gå" knappen, kan du bruge denne kode til at få "cboAdresse" feltet til at reagere på tryk fra Enter. Dobbelt klik på cboAdresse så du komme ind til koden, vælg procuduren Keydown og skriv følgende kode til den:



Fold kodeboks ind/udKode 

Lige for at gå den hurtigt igennem: "if keycode" = hvis tastatur koden = 13(Enter) så skal vores browser gå hen til den adresse i cboAdresse feltet. Du kan også bruge koden til fx Google søgemaskinen.


Resultatet



Tabbed Browsing

Denne artikel vil ikke vise hvordan du laver dette, men lede dig lidt på vej. En metode til at få en form til at åbne sig i en anden form er ved at gøre den til en MDIChild.

Dette er Hurtig gennemgang af hvad du skal gøre for at oprette en MDIForm og en MDIChild form:

Start et nyt project og højreklik som vist på billedet:



Tryk på MDI Form.

Klik på Form1 og vælg Properties i højre hjørne. Find indstillingen MDIChild og sæt værdien til "True". Højreklik på det vindue i højre hjørne hvor listen af forskellige tilknyttede form's m.m. er illustreret og vælg Project1 Properties og find indstillingen "StartUp object" og lav den om til "mdiform1".

Gå til Mdiform1's kode og vælg hændelsen "Load" og indtast følgende kode:
Fold kodeboks ind/udKode 


Resultatet er således:



Sidste bemærkninger
Jeg håber at du kan lide min artikel (min første faktisk), samt at du har lært noget af den.

Hvad synes du om denne artikel? Giv din mening til kende ved at stemme via pilene til venstre og/eller lægge en kommentar herunder.

Del også gerne artiklen med dine Facebook venner:  

Kommentarer (19)

User
Bruger #7361 @ 18.04.05 08:25
En meget flot indlæg..
Utrolig nem og følge..


Jeg kan ikke få bredden til at følge form1, det som om at "W" går længere ud i højreside.. hvordan sætter jeg selv bredden?

Jeg er rimelig newbie, men håber der er et nemt svar til det..

User
Bruger #7639 @ 18.05.05 09:11
hej meget go artikel men jeg kan altså ikke få det der nyt vindue til at virke... den viser bare intet?? hvad skal jeg gøre... (har kopiret din kode ind i wondow2 nok 500 gange og prøvet at ændre lidt men det hjælper ik)
User
Bruger #6864 @ 28.05.05 04:05
#2 det er fordi jeg ikke har fået hele koden med, her er hvad der skulle stå:

Private Sub W_NewWindow2(ppDisp As Object, Cancel As Boolean)
Dim frmD As Form1: Set frmD = New Form1: frmD.Show: Set ppDisp = frmD.W.object
End Sub

mvh
User
Bruger #7613 @ 07.06.05 20:10
Hey syg artikel men jeg savner noget der kan blokere popup vinduoer skriv lige til mig hvis der er nogle der kan det: sleepwalkerf@hotmail.com
User
Bruger #7209 @ 25.06.05 01:54
Rimelig nice artikel ! :D
User
Bruger #8585 @ 30.11.05 22:27
Jeg stødte på nogle errors i blandt andet "rediger" menuen, men smed selv nogle "on error goto" ind, for at undgå at programmet lukker sig selv ved fejl, men hey, ingen er ufejlbarlig :D
4 fra mig, og "rigtig god artikel"
User
Bruger #8813 @ 07.01.06 19:57
nice!!

User
Bruger #9836 @ 12.04.06 21:08
hvor fanden skaffer man VB 6,0 henne?
User
Bruger #9836 @ 12.04.06 21:29
hvor fanden skaffer man VB 6,0 henne?
User
Bruger #10257 @ 15.07.06 17:58
Rigtig god artikkel.. Men jeg har et problem. "menuen" med ny,filer,egenskaber og alt det, kan jeg ikke få til at være i dropdown.. Den kommer bare i en lang række..
User
Bruger #10782 @ 07.11.06 11:36
Den er nem og forstår, meget meget flot
User
Bruger #11113 @ 08.01.07 20:30
virker den også til VB 2005 express edition:roll:
User
Bruger #10855 @ 25.02.07 18:17
Det er en kanon god artikkel, men synyes ikke rigtig jeg kan finde det kode som skal bruges til "Gem som" menu punktet :D
User
Bruger #8921 @ 28.03.07 23:25
God artikel
Men kan man ikke lave Google så den tilpasser sig browseren automatisk, hvis man ændre værdierne i W.width og W.Height
User
Bruger #11603 @ 16.04.07 15:36
hej jeg har lavet en lidt mere advanceret webbrowser end den her, men hvordan er det med sikkerheden i webbrowser, er det indbygget eller skal man selv kode det, hvis ja kender i en kode eller tutorials over det, på forhånd tak
User
Bruger #13813 @ 15.06.08 02:28
:roll:
User
Bruger #13700 @ 05.10.08 15:59
Det er da en rigtig god artikkel du har fået skrevet dig der... Nu har jeg leget med den i 5 timer snart, og har allerede bygget en ganske funktionel browser.
User
Bruger #15010 @ 01.09.09 17:48
4 ud af 5. Artiklen fejler ikke noget. Den er faktisk meget god og pædagogisk. Jeg har bare et spørgsmål: Hvordan laver man nye faner i stedet for nye vinduer? Hvis du kan svare på det for du 5/5 :)

Mvh.
Christian
User
Bruger #22066 @ 15.05.18 19:20
Rimelig nice artikel skrotpræmie for din skrotbil.
Du skal være logget ind for at skrive en kommentar.
t