Q&A

  • panel을 유리처럼 만들려면 어떻게 하면 되나요?
정말루 재미있고 어렵군요... 델파이...

문제에 봉착했습니다.



질문1.



TWebBrowser 컴포넌트 에서 html 소스를 가져오는 방법은?

(아무리 찾아봐도 보이질 않네요!)



질문2.



TWebBrowser 에서 문서가 Loading 되면 popupmemu 가 무시되고 Explore 것으로 대치

되는데 이에대한 해결방안은? (우찌하여 팝업메뉴가 무시되는지!)



질문3.



위에대한 해결방안으로 panel을 마치 보안경의 유리처럼 비치게 만들어서

팝업메뉴를 잡으려고 통빡을 굴렸는데... 그것도 잘안되는 군요....

panel1.brush.Style := bsClear (??) 이거 잘안되는되요...?



우와 정말 답답합니다.

고수님들 부탁드립니다..

3  COMMENTS
  • Profile
    최석기 2000.07.14 03:08
    팁란에 보면요 안치봉님이 예전에 익스플로러 팝업메뉴에 자신의 메뉴 추가시키는 기능 설명해 놓으신거 있어요..



    [Tip] 인터넷익스플로러의 메뉴에 자기의 메뉴를 + 시키자..

    제목이 그럴싸한데... 사실은 별로 그렇치 못합니다. 여기에 복잡한 방법을 소개하기는 좀 그렇고 간단하게 할수 있는걸로 보여 드리옵죠. ^^;



    아래의 순서를 따라서 하세요.



    1.레지스트리에디터를 열어서...

    HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerMenuExt메뉴명



    위와 같이 써줍니다. 여기서 '메뉴명' 는 말그대로 익스플로러에서 마우스오른쪽버턴을 눌렀을때 나오는 메뉴에 덧붙여질 메뉴의 명입니다(?)..



    HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerMenuExt한국델파이개발자페이지(&K)



    2.위의 레지스트리의 기본값을 c:windowswebkddh.htm 로 지정합니다.



    3.아래의 정보를 추가합니다

    HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerMenuExt메뉴명Contexts



    4.그리고 나서 Contexts 에 바이나리값으로 01 을 넣습니다.



    5. c:windowswebkddg.htm 을 작성합니다.



    아래 참고..



    ==<< kddg.htm >>== # 는 <, > 입니다. 정말 Crazy한 보드네 쩝...



    #HTML#

    #META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ks_c_5601-1987"#

    #script language="JavaScript"#

    #!--



    open("http://www.delphi.co.kr")



    --#



    #/SCRIPT#

    #/HTML#



    그리고 익스플로러를 다시 시작하고 마우스오른쪽 버턴을 누르면 메뉴에 '한국델파이개발자페이지' 라는 메뉴가 생길겁니다... 그리고 그 메뉴를 클릭하면 새로운 창이 더서 바로 한델에 연결합니다.



    흐흐...





    조건일 wrote:

    > 정말루 재미있고 어렵군요... 델파이...

    > 문제에 봉착했습니다.

    >

    > 질문1.

    >

    > TWebBrowser 컴포넌트 에서 html 소스를 가져오는 방법은?

    > (아무리 찾아봐도 보이질 않네요!)

    >

    > 질문2.

    >

    > TWebBrowser 에서 문서가 Loading 되면 popupmemu 가 무시되고 Explore 것으로 대치

    > 되는데 이에대한 해결방안은? (우찌하여 팝업메뉴가 무시되는지!)

    >

    > 질문3.

    >

    > 위에대한 해결방안으로 panel을 마치 보안경의 유리처럼 비치게 만들어서

    > 팝업메뉴를 잡으려고 통빡을 굴렸는데... 그것도 잘안되는 군요....

    > panel1.brush.Style := bsClear (??) 이거 잘안되는되요...?

    >

    > 우와 정말 답답합니다.

    > 고수님들 부탁드립니다..

  • Profile
    최석기 2000.07.14 03:00
    투명한 Panel 만들기 소스가 있네요..



    다음 소스에서 Panel부분만 따로 콤포넌트로 만들어 사용하셔도 될꺼 같네요..



    unit Unit1;



    interface



    uses

    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    ExtCtrls;



    type

    TTransparentPanel = Class(TPanel)

    Private

    Procedure SetParent(AParent:TWinControl); Override;

    Procedure WMEraseBkGnd(Var Message:TWMEraseBkGnd); Message WM_EraseBkGnd;

    Protected

    Procedure CreateParams(Var Params:TCreateParams); Override;

    Procedure Paint; Override;

    Public

    Constructor Create(AOwner:TComponent); Override;

    Procedure Invalidate; Override;

    End;

    TForm1 = class(TForm)

    Image1: TImage;

    procedure FormCreate(Sender: TObject);

    procedure FormClose(Sender: TObject; var Action: TCloseAction);

    private

    { Private declarations }

    public

    { Public declarations }

    end;



    var

    Form1: TForm1;

    tpnl: TTransparentPanel;



    implementation



    {$R *.DFM}



    Constructor TTransparentPanel.Create(AOwner:TComponent);

    Begin

    Inherited Create(AOwner);

    ControlStyle:= ControlStyle - [csOpaque];

    End;



    Procedure TTransparentPanel.CreateParams(Var Params:TCreateParams);

    Begin

    Inherited CreateParams(Params);

    Params.ExStyle:= Params.ExStyle or WS_EX_TRANSPARENT;

    End;



    Procedure TTransparentPanel.Paint;

    Begin

    Canvas.Brush.Style:= bsClear;

    Canvas.Rectangle(0, 0, Width, Height);

    Canvas.TextOut(Width div 2, Height div 2, 'Transparent');

    End;



    Procedure TTransparentPanel.WMEraseBkGnd(Var Message:TWMEraseBkGnd);

    Begin

    {Do Nothing}

    Message.Result:= 1;

    End;



    Procedure TTransparentPanel.SetParent(AParent:TWinControl);

    Begin

    Inherited SetParent(AParent);

    If Parent <> Nil then

    SetWindowLong(Parent.Handle, GWL_STYLE,

    GetWindowLong(Parent.Handle, GWL_STYLE) And Not WS_ClipChildren);

    End;



    Procedure TTransparentPanel.Invalidate;

    Var

    Rect :TRect;

    Begin

    Rect:= BoundsRect;

    If (Parent <> Nil) and Parent.HandleAllocated then

    InvalidateRect(Parent.Handle, @Rect, True)

    Else

    Inherited Invalidate;

    End;



    procedure TForm1.FormCreate(Sender: TObject);

    begin

    tpnl := TTransparentPanel.Create(self);

    with tpnl do begin

    Parent := self;

    Top := 10;

    Left := 10;

    Height := 300;

    Width := 300;

    Show;

    end;

    end;



    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

    begin

    tpnl.Free;

    end;



    end.





    조건일 wrote:

    > 정말루 재미있고 어렵군요... 델파이...

    > 문제에 봉착했습니다.

    >

    > 질문1.

    >

    > TWebBrowser 컴포넌트 에서 html 소스를 가져오는 방법은?

    > (아무리 찾아봐도 보이질 않네요!)

    >

    > 질문2.

    >

    > TWebBrowser 에서 문서가 Loading 되면 popupmemu 가 무시되고 Explore 것으로 대치

    > 되는데 이에대한 해결방안은? (우찌하여 팝업메뉴가 무시되는지!)

    >

    > 질문3.

    >

    > 위에대한 해결방안으로 panel을 마치 보안경의 유리처럼 비치게 만들어서

    > 팝업메뉴를 잡으려고 통빡을 굴렸는데... 그것도 잘안되는 군요....

    > panel1.brush.Style := bsClear (??) 이거 잘안되는되요...?

    >

    > 우와 정말 답답합니다.

    > 고수님들 부탁드립니다..

  • Profile
    조건일 2000.07.14 03:07
    감사합니다...

    이것때문에 오늘하루 작업진행을 못하고 멀뚱멀뚱 눈만 감았다 뜨고 있었거든요...

    한번더 감사 감사...



    제홈페이는 www.encclub.co.kr 입니다. 놀러오세요...