Avatar billede jes_petersen2 Nybegynder
04. april 2002 - 18:44 Der er 10 kommentarer og
1 løsning

Forskellige hyperlinks i label

Jeg har en label som indeholder en tekst. Det kunne f.eks. være:

"Tekst1      Tekst2      Tekst3"

Hvordan laver jeg det sådan, at når man klikker på Tekst1, åbner den browseren på en bestemt adresse, når jeg trykker Tekst2 åbner den på en anden adresse og når jeg trykker Tekst3 åbner den på en tredje adresse?
Avatar billede tjacob Juniormester
04. april 2002 - 18:56 #1
Det kan du ikke umiddelbart. Hvorfor kan du ikke bruge 3 labels?
Så er det jo ikke noget problem.
Avatar billede jes_petersen2 Nybegynder
04. april 2002 - 19:03 #2
Jeg har mine grunde... Men det må da kunne lade sig gøre somehow...
Avatar billede tjacob Juniormester
04. april 2002 - 19:08 #3
Du kan åbne brugerens default browser sådan:

Indsæt følgende øverst i en form eller modul:
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

indsæt også følgende funktion:
Public Function ÅbenURL(ByVal URL As String) As Long
  ÅbenURL = ShellExecute(0&, vbNullString, URL, vbNullString, vbNullString, vbNormalFocus)
End Function

Nu kan du hvorsomhelst i din kode kalde den:
F.eks. i en labels Click-event:

Private Sub Label1_Click()
    Call ÅbenURL("http://www.Eksperten.dk")
End Sub
Avatar billede jes_petersen2 Nybegynder
04. april 2002 - 19:09 #4
Fint nok - så er det problem da løst... Men det er altså vitalt, at ovennævnte kan lade sig gøre...
Avatar billede tjacob Juniormester
04. april 2002 - 19:14 #5
Det kunne gøres med MouseDown-eventet. Sæt formens KeyPreview til True, og find ud af hvor (i X og Y koordinater) teksterne står. Husk at tjekke formens Scalemode (Det er nemmest at regne i pixels).

Nu kan du i MouseDown-eventet tjekke hvor på formen der er blevet klikket, og kode derefter.

Noget a la:

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

    If X>15 and X<45 and Y>20 and Y<40 then
        'Kode der åbner browser med adresse 1
    End if

End Sub

(tallene er frit opfundet.)
Avatar billede jes_petersen2 Nybegynder
04. april 2002 - 19:17 #6
Tja, den hvde jeg også tænkt over, men nu kommer vi så til næste problem: Teksterne flytter sig...
Avatar billede tjacob Juniormester
04. april 2002 - 19:28 #7
Du kan jo beregne koordinaterne relativt til labelens position og indhold.
Hvis du kender labelens navn, kan du jo finde -Left og -Top. Så har du øverste venstre hjørne af labelen. Herefter kan du tjekke labelens Caption, og herudfra finde placeringerne af teksterne. -Der må være et eller andet der adskiller de 3 tekster (f.eks. mellemrum). Så kan du ved at tjekke for mellemrum i teksten også finde hver teksts nøjagtige placering i formen.
Apropos så er der også en scalemode der hedder Character. Det må lige være sagen her. Jeg har dog aldrig brugt den, og ved ikke hvordan den fungerer.
Avatar billede jes_petersen2 Nybegynder
04. april 2002 - 19:31 #8
Ok - lyder fornuftigt... Jeg tjekker lige op på det, og vender tilbage...
Avatar billede ocp Nybegynder
05. april 2002 - 09:30 #9
Alternativt ville TextWidth(strText) kunne bruges til bedømmelse af teksternes placering/størrelse.
Avatar billede martin_moth Mester
06. april 2002 - 15:10 #10
Bare en kommentar - det er da fuldstændigt vildt omstændigt at beregne din labels poistion, og derefter musemarkørens position i forhold til denne når du klikker på den. Jeg undrer mig over, at det ikke vil være lettere at lave det som 3 labels, med de ulemper (?) det evt. kan give dig. Men det er jo blevet foreslået - så sorry at jeg blander mig ;o)
Avatar billede jes_petersen2 Nybegynder
29. august 2002 - 14:44 #11
Luk...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester