50
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 videnHvis du har prøvet Visual Basic mere end 2 gange burde der ikke være de store problemer med at forstå denne artikel.
BemærkVed en kode som fx denne:
Private Sub CmbHjem_Click()
W.GoHome
End Sub
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 igangStart Visual Basic og åbn et nyt projekt.
På panelet med de forskellige værktøjer højreklikker du og vælger
Componentssom 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 CaptionLad 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 NameLad 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 kodeNu 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:
on error goto Fejl
w.GoBack
Fejl:
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:
Private Sub cmbFrem_Click()
On Error GoTo fejl
W.GoForward
fejl:
End Sub
Opdater knappen:
Private Sub CmbOpdater_Click()
W.Refresh
End Sub
Stop knappen:
Private Sub cmbStop_Click()
W.Stop
End Sub
Hjem knappen:
Private Sub CmbHjem_Click()
W.GoHome
End Sub
Gå knappen:
Private Sub CmbGå_Click()
W.Navigate (cboAdresse.Text)
End Sub
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:
Private Sub CmbGå_Click()
If cboadresse = "" Then
Else
W.Navigate (cboadresse.Text)
End If
End Sub
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øgemaskineDen 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:
Private Sub cmdSøg_Click()
W.Navigate ("http://www.google.dk/search?hl=da&q=" & cboSøg.Text)
End Sub
"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 åbnesHvis 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:
Private Sub W_NewWindow2(ppDisp As Object, Cancel As Boolean)
Dim frmD As Form1: Set frmD = New Form1: frmD.Show: Set ppDisp = frmD
End Sub
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 medHvis 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:
W.Width = Me.ScaleWidth: w.Height = me.ScaleHeight
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
w.Height = me.ScaleHeight - 1000
Flere funktionerNu 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 menuI 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 kodeHvis 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:
Private Sub cmdLuk_Click()
End 'lukker programmet
End Sub
Tryk på knappen
Egenskaber i menu'en filer og skriv denne kode:
Private Sub cmdEgenskaber_Click()
On Error GoTo fejl
w.ExecWB OLECMDID_PROPERTIES, OLECMDEXECOPT_DODEFAULT
fejl: MsgBox "Fejl: der er ingen egenskaber at vise"
End Sub
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:
Private Sub VisUdskrift_Click()
On Error GoTo fejl
w.ExecWB OLECMDID_PRINTPREVIEW, OLECMDEXECOPT_DODEFAULT
fejl:
End Sub
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:
On Error GoTo fejl
w.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DODEFAULT
fejl:
Ovenstående kode kalder til Windows's "Udskriv" dialog.
Tryk på knappen
Sideopsætning og skriv følgende kode:
Private Sub cmdSideOp_Click()
w.ExecWB OLECMDID_PAGESETUP, OLECMDEXECOPT_DODEFAULT
End Sub
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:
Dim frmD2 As Form1: Set frmD2 = New Form1: frmD2.Show:
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:
Private Sub cmdÅben_Click()
CommonDialog1.Filter = "Alle filer(*.*)|*.*"
CommonDialog1.ShowOpen
w.Navigate (CommonDialog1.FileName)
End Sub
Nyt menupunktEn 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":
Private Sub cmdKlip_Click()
w.ExecWB OLECMDID_CUT, OLECMDEXECOPT_DODEFAULT
End Sub
Skriv følgende kode i knappen "cmdKopier":
Private Sub cmdKopier_Click()
w.ExecWB OLECMDID_COPY, OLECMDEXECOPT_DODEFAULT
End Sub
Skriv følgende kode i knappen "cmdSætind":
Private Sub cmdSætind_Click()
w.ExecWB OLECMDID_PASTE, OLECMDEXECOPT_DODEFAULT
End Sub
Skriv følgende kode i knappen "cmdMarkeralt":
Private Sub cmdMarkeralt_Click()
w.ExecWB OLECMDID_SELECTALL, OLECMDEXECOPT_DODEFAULT
End Sub
Sidste MenupunktLad 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:
Private Sub CmdInternetInd_Click()
dblReturn = Shell("rundll32.exe shell32.dll,Control_RunDLL inetcpl.cpl,,0", 5)
End Sub
' koden kalder Microsoft's "Internet indstillinger" dialogen
Åbn menupunktet "Windows Update" og indtast følgende kode:
Private Sub cmdWinUp_Click()
w.Navigate ("http://windowsupdate.microsoft.com")
End Sub
Sidste ting til at gøre browseren lidt nemmere at brugeFor 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:
Private Sub cboAdresse_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 13 Then
w.Navigate (cboAdresse.Text)
End If
End Sub
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.
ResultatetTabbed BrowsingDenne 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:
Private Sub MDIForm_Load()
Form1.Show
End Sub
Resultatet er således:
Sidste bemærkningerJeg 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)
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..
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)
#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
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
Rimelig nice artikel !
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
4 fra mig, og "rigtig god artikel"
nice!!
hvor fanden skaffer man VB 6,0 henne?
hvor fanden skaffer man VB 6,0 henne?
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..
Den er nem og forstår, meget meget flot
virker den også til VB 2005 express edition
Det er en kanon god artikkel, men synyes ikke rigtig jeg kan finde det kode som skal bruges til "Gem som" menu punktet
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
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
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.
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
Du skal være
logget ind for at skrive en kommentar.