<!--CodeS-->
procedure proc_Chatting_WriteWebBrower(Web: TWebBrowser; var rChatInfo : TChatClientInfo; s_Msg: WideString; b_SelfMsg : boolean = false);
var
bAutoScroll : Boolean;
OleDocument : OleVariant;
tmpStr : WideString;
begin
try
OleDocument := Web.OleObject.Document;
try
bAutoScroll := (OleDocument.Body.ScrollHeight <= OleDocument.Body.ClientHeight) or //스크롤이 없거나
(OleDocument.Body.ScrollTop = OleDocument.Body.ScrollHeight - OleDocument.Body.ClientHeight); //제일 밑에 있을 때
except
if rChatInfo.b_RoomCreated then begin
Web.Silent := false;
proc_Chatting_Init(Web, rChatInfo);
exit;
end;
end;
try
//OleDocument.Body.innerHTML := OleDocument.Body.innerHTML + s_Msg;
OleDocument.getElementById(_ChatHtml_SpanID).innerHTML := OleDocument.getElementById(_ChatHtml_SpanID).innerHTML + s_Msg;
except
end;
if rChatInfo.b_ShowGreeting and (s_Msg = rChatInfo.s_ShowGreeting) then begin
rChatInfo.b_ShowGreeting := false;
rChatInfo.s_ShowGreeting := '';
end;
if b_SelfMsg then
begin
//OleDocument.Body.ScrollBottom := 0;
Web.Perform(WM_VSCROLL, SB_BOTTOM, OleDocument.Body.ClientHeight);
//OleDocument.Body.ScrollTop := OleDocument.Body.ScrollHeight - OleDocument.Body.ClientHeight;
rChatInfo.b_SelfMsg := False;
end
else
begin
OleDocument.Body.ScrollTop := OleDocument.Body.ScrollHeight - OleDocument.Body.ClientHeight;
end;
//이강석 스크롤 확인
except
end;
end;
<!--CodeE-->
if b_SelfMsg then
====>
여기에서 맨 끝으로 내리려고 하는데....안 내려가네요...
이것 저것 바꾸어 봤는데요...안 내려가는데 ㅠㅠ
왜 그러는지 아시는 분 답변 좀 부탁드려요~~
뭐 대부분 다음과 같이 하면 됩니다.
WebBroswer1.OleObject.Document.ParentWindow.ScrollTo( Y , X ) ;
그런데 위 방법도 문제가 있는경우가 잇으니
현재보고 있는 웹페이지가 frame으로 구성되어있을경우 Frame안에 scroll이 전체 Body 스크롤처럼 보이는경우가 잇습니다.
이때는 Frame의 scroll을 제어해야 하는데 .. 잘안되더라구요
그럼..