Avatar billede janbb Juniormester
19. januar 2004 - 05:26 Der er 5 kommentarer og
1 løsning

url-adresse vises

Jeg har vist spurgt om det engang før, men det er ikke lykkedes mig at finde det gamle spørgmaal.
Er det en meget kompliceret affære at få et felt fx edit til at vise den url-adresse som webbrowser begir sig til når man fx klikker på et link på en eksisterende webside ?.
Hvis det kan gøres relativt simpelt ville jeg synes det var en gevinst.
Avatar billede Slettet bruger
19. januar 2004 - 07:28 #1
Prøv at sætte Edit1.Text := URL; i webbrowserens OnDocumentComplete.
Avatar billede stone Forsker
19. januar 2004 - 08:27 #2
procedure TSlbrowser.WebBrowser1NavigateComplete2(Sender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
begin    //urls er din TWebbrowser
edit1.Text := urls.Text;
end;
Avatar billede janbb Juniormester
19. januar 2004 - 09:43 #3
Den vil slet ikke sluge ret meget selv om jeg kæmper ..
det er vil url - uden s
parantesen efter olevariant er vel for meget
hentyder procedurenavnet til at den skal knyttes til denne event i webbrowseren som hejhej foreslog (virker ikke) ?

  const pDisp: IDispatch;

Denne sætning forlanger den et lighedstegn efter ?

  Jeg er blevet meget forvirret : er ikke så skrap så prøv at skær det lidt ud i pap :)
Avatar billede janbb Juniormester
19. januar 2004 - 10:56 #4
nej det virker uoverkommeligt
Avatar billede athlon-pascal Juniormester
19. januar 2004 - 11:36 #5
Jeg forstår ikke helt, hvad du vil, men:

En lille sjov funktion jeg har lavet, der gør at den rigtige adresse vises i adressebaren, og faktisk fanger den del af en kendt IE-bug (http://www.tipchannel.dk/tema/IE_forfalsket/):

function URLCorrect(URL: String): String;
var
  I: Integer;
begin
  Result := '';
  for I := 1 to Length(URL) do
    if (URL[I] in [#0..#31, #127]) then
      Result := Result + '%' + IntToHex(Ord(URL[I]), 2)
    else
      Result := Result + URL[I];
end;


Kode i din TWebBrowsers OnDocumentComplete-event (bruger overstående funktione):


procedure TForm1.WebBrowser1DocumentComplete(ASender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
var
  CurWebrowser, TopWebBrowser: IWebBrowser;
begin
  CurWebrowser := pDisp as IWebBrowser;
  TopWebBrowser := (Asender as TWebbrowser).DefaultInterface;

  if CurWebrowser = TopWebBrowser then //Vi sikrer os, at det er hoved-framen i webbrowseren vi har fat i :o)
  begin
    if cmdAdress.Text <> URLCorrect(URL) then
      cmdAdress.Text := URLCorrect(URL);
  end;
end;
Avatar billede athlon-pascal Juniormester
19. januar 2004 - 11:36 #6
cmdAdress er en TEdit :o)
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