PDA

View Full Version : استفاده از شی Webbrowser در تابع



narsic
یک شنبه 03 خرداد 1388, 17:04 عصر
با سلام
دوستان چه جوری میشه از شی webbrowser در یک تابع یا Procedure استفاده کرد ؟؟؟
یا اگه تابع یا شی دیگه ایی که نتیجه یک ادرس اینترنتی رو نمایش میده که در تابع هم قابل استفاده هستش ممنون میشم بهم معرفی کنید .
با تشکر

Felony
یک شنبه 03 خرداد 1388, 17:13 عصر
procedure ShowUrl(Web:TWebBrowser);
begin
ShowMessage(Web.LocationURL);
end;

استفاده هم به شکل زیر :

ShowUrl(WebBrowser1);

narsic
یک شنبه 03 خرداد 1388, 17:53 عصر
نه به این شکل نه .
میخوام بعد از فراخوانی این تابع شی webbrowser به این آدرس بره :


function web(current_url:string):null;
begin
webbrowser2.Navigate(current_url);
end;

با تشکر

Felony
یک شنبه 03 خرداد 1388, 18:12 عصر
Function رو موقعی مینویسن که رویه بخواد یه مقدار رو برگردونه ، زمانی که قراره رویه ی ما فقط یه عملیاتی رو انجام بده باید از Procedure استفاده کنید .


Procedure GoToUrl(Web:TWebBrowser;Url:String);
begin
Web.Navigate(Url);
end;

نحوه ی استفاده :

GoToUrl(WebBrowser1,'www.Google.com');

narsic
یک شنبه 03 خرداد 1388, 19:09 عصر
Function رو موقعی مینویسن که رویه بخواد یه مقدار رو برگردونه ، زمانی که قراره رویه ی ما فقط یه عملیاتی رو انجام بده باید از Procedure استفاده کنید .


Procedure GoToUrl(Web:TWebBrowser;Url:String);
begin
Web.Navigate(Url);
end;نحوه ی استفاده :

GoToUrl(WebBrowser1,'www.Google.com');
منم که گفتم

دوستان چه جوری میشه از شی webbrowser در یک تابع یا Procedure استفاده کرد ؟؟؟
خوب حالا با این روش من چه جوری میتونم نتیجه صفحه رو ببینم ؟؟؟

Felony
یک شنبه 03 خرداد 1388, 19:34 عصر
ای بابا ، مگه نگفتی یه پروسیجر میخوای که آدرس رو بهش بدی بره به اون سایت ؟
اون نمونه کدی که براتون نوشتم هم همین کار رو میکنه دیگه .

vcldeveloper
یک شنبه 03 خرداد 1388, 20:17 عصر
خوب حالا با این روش من چه جوری میتونم نتیجه صفحه رو ببینم ؟
نتیجه در داخل WebBrowser بصورت یک صفحه وب رندر شده نمایش داده میشه. برای اینکه مطمئن بشید بعد از فراخوانی Navigate، زمانی که قصد استفاده از صفحه لود شده را دارید، صفحه حتما در WebBrowser لود شده، باید کدتان را در رویداد OnNavigateComplete2 مربوط به TWebBrowser قرار بدید. علتش هم این هست که متد Navigate موجود در TWebBrowser بصورت Asynchronous عمل میکنه؛ یعنی بعد از اجرای Navigate، تابع بلافاصله برمیگرده، و منتظر لود شدن صفحه نمی ماند. صفحه توسط یک Thread دیگه، در پشت صحنه لود میشه، و هر زمان کار لودش تمام شد، رویداد OnNavigateComplete2 فراخوانی میشه.

اگر هدفتون فقط بدست آوردن فایل HTML یک صفحه وب هست، می تونید بجای TWebBrowser، از IdHttp استفاده کنید.

narsic
یک شنبه 03 خرداد 1388, 21:06 عصر
نتیجه در داخل WebBrowser بصورت یک صفحه وب رندر شده نمایش داده میشه. برای اینکه مطمئن بشید بعد از فراخوانی Navigate، زمانی که قصد استفاده از صفحه لود شده را دارید، صفحه حتما در WebBrowser لود شده، باید کدتان را در رویداد OnNavigateComplete2 مربوط به TWebBrowser قرار بدید. علتش هم این هست که متد Navigate موجود در TWebBrowser بصورت Asynchronous عمل میکنه؛ یعنی بعد از اجرای Navigate، تابع بلافاصله برمیگرده، و منتظر لود شدن صفحه نمی ماند. صفحه توسط یک Thread دیگه، در پشت صحنه لود میشه، و هر زمان کار لودش تمام شد، رویداد OnNavigateComplete2 فراخوانی میشه.

اگر هدفتون فقط بدست آوردن فایل HTML یک صفحه وب هست، می تونید بجای TWebBrowser، از IdHttp استفاده کنید.
بله ممنونم منم اینا رو میدونم من فقط میخوام از نتیجه یک آدرس رو بدست بیارم اونم در تابع یا Procedure و مشکل فعلیم هم اینه که توابع و Procedure ها اجازه دسترسی به TWebBrowser رو نمیدن .
IdHttp متاسفانه من نه بین اشیا و نه بین توابع پیدا نکردم .
اگه یه نمونه در تابع یا Procedure بتونید بهم بدید ممنون میشم .
نکته من از دلفی 7 استفاده میکنم .
اگه منظورم رو کامل متوجه نشدید بگید تا کد رو بزارم .
با تشکر

Felony
یک شنبه 03 خرداد 1388, 21:12 عصر
بله ممنونم منم اینا رو میدونم من فقط میخوام از نتیجه یک آدرس رو بدست بیارم اونم در تابع یا Procedure و مشکل فعلیم هم اینه که توابع و Procedure ها اجازه دسترسی به TWebBrowser رو نمیدن .

:عصبانی++:دوست عزیز شما حتی اون کدی رو که براتون نوشتم رو نمیخونید ، یعنی بعد از 2 تا نمونه کد مشکل شما با وارد کردن یک کامپوننت به پروسیجر حل نشد ، واقعا که ... !!!


dHttp متاسفانه من نه بین اشیا و نه بین توابع پیدا نکردم .
در برگه ی IndyClients هست .


اگه یه نمونه در تابع یا Procedure بتونید بهم بدید ممنون میشم
!!!

narsic
یک شنبه 03 خرداد 1388, 21:48 عصر
:عصبانی++:دوست عزیز شما حتی اون کدی رو که براتون نوشتم رو نمیخونید ، یعنی بعد از 2 تا نمونه کد مشکل شما با وارد کردن یک کامپوننت به پروسیجر حل نشد ، واقعا که ... !!!
در برگه ی IndyClients هست .
!!!
:خجالت::خجالت:
ممنون مشکلم حل شد

narsic
یک شنبه 03 خرداد 1388, 21:49 عصر
راستش کدتون رو خوندم اما تحلیلم از کدتون اشتباه بود :خجالت: