PDA

View Full Version : مشکل با پنجره جدید در webbrowser



Naderenator
شنبه 11 مهر 1388, 18:05 عصر
من می خواهم روی button توی یک سایت کلیک کنم که یک پنجره جدید باز می کنه ولی این پنجره بیرون webbrowser باز میشه چه جوری می تونم پنجره را داخل webbrowser باز کنم یا توی یک webbrowser دیگه باز اش کنم.

دلفــي
دوشنبه 27 مهر 1388, 16:18 عصر
از این کدها کمک بگیر ، شاید به دردت بخورند :



procedure WBLoadHTML(WebBrowser: TWebBrowser; HTMLCode: string) ;
var
sl: TStringList;
ms: TMemoryStream;
begin
WebBrowser.Navigate('about:blank') ;
while WebBrowser.ReadyState < READYSTATE_INTERACTIVE do
Application.ProcessMessages;

if Assigned(WebBrowser.Document) then
begin
sl := TStringList.Create;
try
ms := TMemoryStream.Create;
try
sl.Text := HTMLCode;
sl.SaveToStream(ms) ;
ms.Seek(0, 0) ;
(WebBrowser.Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms) ) ;
finally
ms.Free;
end;
finally
sl.Free;
end;
end;
end;

procedure TForm1.FormCreate(Sender: TObject) ;
var
sHTML : string;
begin
sHTML := '<a href="http://www.asiapardaz.com">GOTO</a>' +
'<b>About Delphi Programming</b>';
WBLoadHTML(WebBrowser1,sHTML) ;
end;




uses
Registry, ShellAPI;

function BrowseURL(const URL: string) : boolean;
var
Browser: string;
begin
Result := True;
Browser := '';
with TRegistry.Create do
try
RootKey := HKEY_CLASSES_ROOT;
Access := KEY_QUERY_VALUE;
if OpenKey('\htmlfile\shell\open\command', False) then
Browser := ReadString('') ;
CloseKey;
finally
Free;
end;
if Browser = '' then
begin
Result := False;
Exit;
end;
Browser := Copy(Browser, Pos('"', Browser) + 1, Length(Browser)) ;
Browser := Copy(Browser, 1, Pos('"', Browser) - 1) ;
ShellExecute(0, 'open', PChar(Browser), PChar(URL), nil, SW_SHOW) ;
end;

//فراخوانی
BrowseURL('http://www.asiapardaz.com') ;

حمید محمودی
شنبه 14 فروردین 1389, 02:27 صبح
سلام.

اگه بخوايم متن مورد HTML نظر رو يه سره بريزيم توي يه متغيير يا اصلا توي متغيير نباشه و متنش توي يه Memo باشه چکار بايد بکنيم. اين روشي که گفته شده اينه که تک تک خط هاي فايل html رو توي فرم کريت بريزيم توي يه متغيير و بعد با اون تابع بازش کنيم.(يعني مثل همين strHTM که چندين خط پايين تر گفتم ) اما اگه فايل html بزرگ باشه و متنش خيلي باشه و همچنين اگه مجبور باشيم هر چند وقت يکبار دوباره اون فايل html رو ويرايش بکنيم خيلي سخت ميشه که بيايم دستي اينکار رو بکنيم.

من ميخام که مثلا کل متن و کدهاي فايل html رو خودم کپي کنم توي يه Memo (در واقع متني که براي اون تابع هست توي اين Memo باشه) بعد با تابع بالا بازش کنم که متاسفانه نتونستم اينکار رو بکنم.

راستي ميشه کل متن فايل html رو خودمون کپي کنيم در برناممون و بعد همه متن رو يه جا از اول تا اخرش بريزيم توي يه متغيير استرينگ؟ يعني نيايم بصورت زير عمل کنيم :



strHTM:= ' strrrrrrrr at line1 html file ' + #13#10 ;
strHTM:=strHTM + ' strrrrrrrr at line2 html file ' + #13#10 ;
strHTM:= strHTM + ' strrrrrrrr at line3 html file ' + #13#10 ;
.
.
.
.
من که نتونستم يه سره کل متن رو بريزيم توي متغيير (به خاطر تگ هايي که کد html داره نشد که دلفي وقتي به ابتدا و انتهاي کل کد يه ' اضافه کردم اينکارو بکنه)


مثلا با همون مثالی که در بالا زده شده مثلا اگه متن زیر



<a href="http://www.asiapardaz.com">GOTO</a>
<b>About Delphi Programming</b>


در یه Memo باشه چطور میشه با تابع WBLoadHTML لودش کرد؟؟
متشکرم

DAMAVAND
شنبه 14 فروردین 1389, 06:36 صبح
ببينيد اگر پنجره جديد يه پنجره Popup باشه که حتما هست بايد در يک webbrowser ديگه باز بشه اين روش بالا زياد جالب نيست از اين روش استفاده کنيد :
يه webbrowser جديد بزاريد رو فرمتون و اسمشو بزاريد web2 .
حالا توي رويداد WebNewWindow2 اولين Webbowser اين کد رو بنويسيد :

Web2.RegisterAsBrowser := true;
ppDisp:=Web2.Application;

حالا هر وقت يه پنجره جديد بخواد باز بشه توي web2 باز ميشه .

حمید محمودی
شنبه 14 فروردین 1389, 07:58 صبح
ببينيد اگر پنجره جديد يه پنجره Popup باشه ....]

سلام.

اگه در پنجره جدید نباشه و حالا همون دفعه اول بخایم یه متن html رو که در یه Memo هست فقط در Webbrowser1 باز کنیم با همون تابعی که در پست اولم گفتم (WBLoadHTML) یعنی بصورت Embed چکار کنیم؟

مشکلم بخاطر این بروز کرد که نمیخام تک تک خط های فایل html که قراره در wb بازش کنم، بریزم توی یه متغییر و ..... چون برای فایل های بزرگ مشکل ایجاد میکنه و سخته!!


متشکرم

حمید محمودی
شنبه 14 فروردین 1389, 22:34 عصر
سلام.

دوستان که احیانا مشکل دارن میتونن جواب رو در تاپیک زیر ببینند.

dCamera (http://barnamenevis.org/forum/showthread.php?p=948614)

MoAm36866513
جمعه 27 فروردین 1389, 19:29 عصر
سلام من ميخواهم يك بوزر طراحي كنم و كردم يك Tabcontrol گذاشتم ميخواهم زماني كه يك Tab جديد اضافه ميكنم يك Webbrowser هم تو اون اضافه بشه مثل موزيلا ميشه كمكم كنيد.
با تشكر