Avatar billede rasmus_a Nybegynder
12. september 2005 - 21:41 Der er 31 kommentarer og
1 løsning

TWebBrowser - Vise website

Hej

Sidder og roder med Delphi 7.

Jeg har en form med en WebBrowser på.

Dertil har jeg skrevet:

procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.
end


Men hvordan skal jeg slutte linien
WebBrowser1.

hvis jeg vil have den til at vise www.google.com ?

Tak
Avatar billede rasmus_a Nybegynder
12. september 2005 - 21:43 #1
doh, har fundet ud af det..
havde brugt " i stedet for ' ved Navigate.

Sorry.
Avatar billede stone Forsker
12. september 2005 - 22:03 #2
en anden mulighed....ss

private
      procedure FindAddress;

procedure TSlBrowser.HomePageRequest(var Message: TMessage);
begin
  URLs.Text := 'http://www.eksperten.dk';
  FindAddress;
Avatar billede rasmus_a Nybegynder
12. september 2005 - 23:33 #3
Hej Stone - tak for dit svar.

Min løsning virker OK men jeg vil bede dig om noget andet. Vil gerne sætte pointsene op til 200 for denne opgave.

Jeg skal bruge runde hjørner på min Form. Borderstyle er altså sat til "None".
Kan du hjælpe mig med dette?

På forhånd tak
Avatar billede stone Forsker
13. september 2005 - 07:57 #4
indsæt i din form1 create

const
  C = 20;
var
  Points: array [0..7] of TPoint;
  h, w: Integer;
begin
  h := Form1.Height;
  w := Form1.Width;
  Points[0].X := C;    Points[0].Y := 0;
  Points[1].X := 0;    Points[1].Y := C;
  Points[2].X := 0;    Points[2].Y := h - c;
  Points[3].X := C;    Points[3].Y := h;

  Points[4].X := w - c; Points[4].Y := h;
  Points[5].X := w;    Points[5].Y := h - c;

  Points[6].X := w;    Points[6].Y := C;
  Points[7].X := w - C; Points[7].Y := 0;

  SetWindowRgn(Form1.Handle, CreatePolygonRgn(Points, 8, WINDING), True);
Avatar billede stone Forsker
13. september 2005 - 08:27 #5
eller....

var
  rgn: HRGN;
begin
  Form1.Borderstyle := bsNone;
  rgn := CreateRoundRectRgn(0,// x-coordinate of the region's upper-left corner
    0,            // y-coordinate of the region's upper-left corner
    ClientWidth,  // x-coordinate of the region's lower-right corner
    ClientHeight, // y-coordinate of the region's lower-right corner
    40,          // height of ellipse for rounded corners
    40);          // width of ellipse for rounded corners
  SetWindowRgn(Handle, rgn, True);

end;
Avatar billede stone Forsker
13. september 2005 - 08:27 #6
også i din form1.create
Avatar billede rasmus_a Nybegynder
13. september 2005 - 10:24 #7
alletiders, jeg prøver det i eftermiddag.

hvis det er let kan du så fortælle mig hvordan man fjerner "3d" rammen rundt om TWebBrowser'en?

Vender tilbage med point senere hvis det virker :)
Avatar billede stone Forsker
13. september 2005 - 13:30 #8
her er lidt at lege med i eftermiddag = 3d border

http://www.swissdelphicenter.ch/en/showcode.php?id=1171
Avatar billede stone Forsker
13. september 2005 - 13:56 #9
her et eksempel....

uses  MSHTML

procedure WB_SetBorderStyle(Sender: TObject; BorderStyle: String);
{
  BorderStyle values:

  'none'        No border is drawn
  'dotted'      Border is a dotted line. (as of IE 5.5)
  'dashed'      Border is a dashed line. (as of IE 5.5)
  'solid'        Border is a solid line.
  'double'      Border is a double line
  'groove'      3-D groove is drawn
  'ridge'        3-D ridge is drawn
  'inset'        3-D inset is drawn
  'window-inset' Border is the same as inset, but is surrounded by an additional single line
  'outset'      3-D outset is drawn

  See: http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/properties/borderstyle.asp
}

var
  Document : IHTMLDocument2;
  Element : IHTMLElement;
begin
  Document := TWebBrowser(Sender).Document as IHTMLDocument2;
  if Assigned(Document) then
  begin
    Element := Document.Body;
    if Element <> nil then
    begin
      Element.Style.BorderStyle := BorderStyle;
    end;
  end;
end;

procedure WB_Set3DBorderStyle(Sender: TObject; bValue: Boolean);
{
  bValue: True: Show a 3D border style
          False: Show no border
}
var
  Document : IHTMLDocument2;
  Element : IHTMLElement;
  StrBorderStyle: string;
begin
  Document := TWebBrowser(Sender).Document as IHTMLDocument2;
  if Assigned(Document) then
  begin
    Element := Document.Body;
    if Element <> nil then
    begin
      case BValue of
        False: StrBorderStyle := 'none';
        True: StrBorderStyle := '';
      end;
      Element.Style.BorderStyle := StrBorderStyle;
    end;
  end;
end;




procedure TForm1.Button1Click(Sender: TObject);
begin
Webbrowser1.Navigate('www.SwissDelphiCenter.ch');
end;

procedure TForm1.WebBrowser1NavigateComplete2(Sender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
begin
// Examples:
  // Show no border
  WB_Set3DBorderStyle(Sender, False);
  // Draw a double line border
  WB_SetBorderStyle(Sender, 'none');
  // Set a border color

end;

procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
begin
// Examples:
  // Show no border
  WB_Set3DBorderStyle(Sender, False);
  // Draw a double line border
  WB_SetBorderStyle(Sender, 'none');
  // Set a border color

end;
Avatar billede rasmus_a Nybegynder
13. september 2005 - 18:55 #10
Hej Stone, 1000 tak for al din hjælp. Jeg har desværre ikke tid til  at teste lige nu men det har jeg i morgen.
Jeg melder tilbage i morgen aften.
Beklager forsinkelsen :-)
Avatar billede rasmus_a Nybegynder
13. september 2005 - 22:25 #11
hey, så fik jeg testet det idag alligevel.. kan jeg få hjørnerne til at være runde i stedet for "skåret over" som nu? Bare så de har en lille bue.
:)
Avatar billede stone Forsker
13. september 2005 - 22:48 #12
jo da så bruger du bare den her...


var
  rgn: HRGN;
begin
  Form1.Borderstyle := bsNone;
  rgn := CreateRoundRectRgn(0,// x-coordinate of the region's upper-left corner
    0,            // y-coordinate of the region's upper-left corner
    ClientWidth,  // x-coordinate of the region's lower-right corner
    ClientHeight, // y-coordinate of the region's lower-right corner
    40,          // height of ellipse for rounded corners
    40);          // width of ellipse for rounded corners
  SetWindowRgn(Handle, rgn, True);
Avatar billede rasmus_a Nybegynder
13. september 2005 - 23:15 #13
Ah ja, selvfølgelig ;)
Tak!
Smid et svar!!
Avatar billede stone Forsker
13. september 2005 - 23:21 #14
takker....
Avatar billede rasmus_a Nybegynder
13. september 2005 - 23:25 #15
Hvis du har lyst/tid kan du så svare/sende mig et sted hen mht følgende:

Jeg har, som sagt, et TWebBrowser component.
Jeg vil gerne have at, hvis man DOBBELTKLIKKER på webbrowseren laver den Application.Minimize;
Og hvis man KLIKKER og TRÆKKEr (click and drag) så flytter programmet sig. Altså som når man gør det i det blå titelfelt.

:)
Avatar billede stone Forsker
13. september 2005 - 23:48 #16
har kun lige et bud på flyt formen....

placeres over Implementation

const
    sc_DragMove        = $F012; //const for at trække formen


koden her placeres i din FormMouseDown

ReleaseCapture;
    Perform( WM_SysCommand, sc_DragMove , 0 )  //trækker formen
Avatar billede stone Forsker
14. september 2005 - 00:04 #17
ups glemte lige du skal sætte webbrowser dragmode til DmAutomatic

og i webbrowser OnStartDrag skriver du det samme som i FormMouseDown

så virker det også når du trækker i webbrowsen.....

//stone
Avatar billede rasmus_a Nybegynder
14. september 2005 - 11:48 #18
fedt nok - det tester jeg lige om snart!
Avatar billede rasmus_a Nybegynder
14. september 2005 - 13:19 #19
fedt nok, men det virker desværre ikke på browseren (onstartdrag)
Avatar billede stone Forsker
14. september 2005 - 13:32 #20
webbrowser dragmode = DmAutomatisk

flyt koden til OnDragOver i webbrowser

form1 dragmode = DmManual

så virker det ...har testet det
Avatar billede rasmus_a Nybegynder
14. september 2005 - 13:42 #21
mystisk

jeg har følgende kode:
procedure TForm1.WebBrowser1DragOver(Sender, Source: TObject; X,
  Y: Integer; State: TDragState; var Accept: Boolean);
begin
ReleaseCapture;
    Perform( WM_SysCommand, sc_DragMove , 0 )  //trækker formen
end;

og der sker intet. DragMode står rigtigt begge steder.
Det virker fint på selve formen men ikke på webbrowseren
Avatar billede stone Forsker
14. september 2005 - 13:51 #22
hmm sidder faktisk og leger lidt med det men det virker perfekt her..

har du ikke glemt at sætte webbrowser dragmode til dmautomatisk?
Avatar billede rasmus_a Nybegynder
14. september 2005 - 13:52 #23
det var dog mystisk.. jeg bruger delphi 7 enterprise.

den står til dmautomatic.
Avatar billede stone Forsker
14. september 2005 - 13:53 #24
skal jeg sende mit eksempel til dig.... så kan du kigge lidt på det
Avatar billede rasmus_a Nybegynder
14. september 2005 - 13:56 #25
ja tak, r_amby@hotmail.com vil være fint.
Avatar billede stone Forsker
14. september 2005 - 13:57 #26
jeg bruger d5 interprise men det burde ikke have nogen betydning
Avatar billede stone Forsker
14. september 2005 - 14:00 #27
har sendt det men muligheden for at den bliver afvist er stor når det er hotmail.. de tillader ikke exe filer selvom de er zipped...
Avatar billede rasmus_a Nybegynder
14. september 2005 - 14:07 #28
got it

men din virker heller ikke når du har
WebBrowser1.Navigate('http://www.google.com');
:)
Avatar billede rasmus_a Nybegynder
14. september 2005 - 18:03 #29
har du en idé til det?
Avatar billede stone Forsker
14. september 2005 - 18:08 #30
ok det har jeg ikke lige tænk på men jeg kan da prøve
Avatar billede rasmus_a Nybegynder
14. september 2005 - 18:11 #31
:-)
Avatar billede rasmus_a Nybegynder
14. september 2005 - 18:11 #32
ps: den ligger som nyt topic under delphi nu..
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