نمایش نتایج 1 تا 14 از 14

نام تاپیک: مشکل در جستجوی متن در WebBrowser به سمت بالا

  1. #1

    مشکل در جستجوی متن در WebBrowser به سمت بالا

    سلام.

    من برای جستجوی متن در WebBrowser از تابع زیر استفاده میکنم:
    function WBFindText (Browser: TWebBrowser; const Direction: Boolean; const FText: String;
    const SearchScope, Flags: Integer) : Boolean;
    var
    Doc: IHTMLDocument2;
    SelObj: IHTMLSelectionObject;
    SelRange: IHtmlTxtRange;
    begin
    Doc := Browser.Document as IHTMLDocument2;
    SelObj := Doc.Selection;
    SelRange := SelObj.CreateRange as IHTMLTxtRange;
    SelRange.Collapse(Direction);
    if SelRange.FindText (FText, SearchScope, Flags) then
    begin
    SelRange.Select;
    SelRange.ScrollIntoView (True);
    Result := True;
    end
    else
    Result := False;
    end;


    طبق چیزی که در راهنمای WebBrowser اومده، فراخوانی این تابع برای جستجو به سمت پایین و بالا باید به شکل زیر باشه:

    جستجو به سمت پایین:
    WBFindText(MyBrowser, False, TextSearch, 1, 0)


    جستجو به سمت بالا:
    WBFindText(MyBrowser, True, TextSearch, -1, 1)


    که در هر دو TextSearch همون متنیه که میخوایم جستجوش کنیم.

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

    لطفا اساتید کمک کنن، هر چی می گردم دلیلش رو پیدا نمی کنم.
    آخرین ویرایش به وسیله saeidd : دوشنبه 13 دی 1395 در 20:22 عصر

  2. #2

    نقل قول: مشکل در جستجوی متن در WebBrowser به سمت بالا

    سلام دوست من،
    برای جستجوی کلمه بعد از این کد :
    WBFindText(WebBrowser1, False ,Edit1.Text,1,0 ) ;

    و برای رفتن به کمله قبل از این کد:
    WBFindText(WebBrowser1 , True , Edit1.Text , 3, 1) ;

    استفاده کنید. موفق باشید.

  3. #3

    نقل قول: مشکل در جستجوی متن در WebBrowser به سمت بالا

    نقل قول نوشته شده توسط 1072300 مشاهده تاپیک
    و برای رفتن به کمله قبل از این کد:
    WBFindText(WebBrowser1 , True , Edit1.Text , 3, 1) ;
    جواب نمیده، جستجوی کلمه قبل درست کار نمی کنه و اشتباهی سلکت می کنه

  4. #4

    نقل قول: مشکل در جستجوی متن در WebBrowser به سمت بالا

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

  5. #5

    نقل قول: مشکل در جستجوی متن در WebBrowser به سمت بالا

    نقل قول نوشته شده توسط 1072300 مشاهده تاپیک
    بنده همین حالا چک کردم درست کار می کنه مشکل از این کد نیست. پیشنهاد می کنم یک پروژه جدید درست کنید و کدی که فرستادم را چک کنید.
    اگر نشد بفرمایید تا پروژه را براتون بفرستم.
    علت رو پیدا کردم. در فایل html من که توسط WebBrowser باز میشه تگ meta رو اینجوری نوشتم:
    کد HTML:
    <meta http-equiv="X-UA-Compatible" content="IE=Edge">
    مقدار X-UA-Compatible باعث میشه که جستجو برای کلمه قبل درست کار نکنه در حالی که برای کلمه بعد درست کار می کنه. و وقتی مقدارش رو به content-type عوضش می کنم درست میشه.

    نمیشه یه کاری کرد که با وجود مقدار X-UA-Compatible در تگ meta، جستجو درست کار کنه؟ آخه توابعی دارم که باید در IE 8 جواب بده ، برا همین مقدار http-equiv رو X-UA-Compatible گذاشتم.

  6. #6

    نقل قول: مشکل در جستجوی متن در WebBrowser به سمت بالا

    به نظر شما اگر بخواهیم در صفحه html همه کلماتی را که در تکست ادیت به مورد جستجو قرار گرفته را سلکت کند از چه کدی باید استفاده کنیم؟ (منظورم گزینه Highlight All مرورگر است مثلا موزیلا). سپاس

  7. #7

    نقل قول: مشکل در جستجوی متن در WebBrowser به سمت بالا

    نقل قول نوشته شده توسط 1072300 مشاهده تاپیک
    به نظر شما اگر بخواهیم در صفحه html همه کلماتی را که در تکست ادیت به مورد جستجو قرار گرفته را سلکت کند از چه کدی باید استفاده کنیم؟ (منظورم گزینه Highlight All مرورگر است مثلا موزیلا). سپاس
    باید این کد رو بزاری تو یه حلقه While؛ یه چیزی مثل این:
    procedure TForm1.SearchAndHighlightText(aText: string);
    var
    tr: IHTMLTxtRange; //TextRange Object
    begin
    if not
    WebBrowser1.Busy then
    begin
    tr := ((WebBrowser1.Document as IHTMLDocument2).body as IHTMLBodyElement).createTextRange;
    //Get a body with IHTMLDocument2 Interface and then a TextRang obj. with IHTMLBodyElement Intf.

    while tr.findText(aText, 1, 0) do //while we have result
    begin
    tr.pasteHTML('<span style="background-color: Lime; font-weight: bolder;">' +
    tr.htmlText + '</span>');
    //Set the highlight, now background color will be Lime
    tr.scrollIntoView(True);
    //When IE find a match, we ask to scroll the window... you dont need this...
    end;
    end;
    end;


  8. #8

    نقل قول: مشکل در جستجوی متن در WebBrowser به سمت بالا

    نمیشه یه کاری کرد که با وجود مقدار X-UA-Compatible در تگ meta، جستجو درست کار کنه؟ آخه توابعی دارم که باید در IE 8 جواب بده ، برا همین مقدار http-equiv رو X-UA-Compatible گذاشتم.


    صفحه را به چه صورت لود می کنید؟

  9. #9

    نقل قول: مشکل در جستجوی متن در WebBrowser به سمت بالا

    نقل قول نوشته شده توسط 1072300 مشاهده تاپیک
    صفحه را به چه صورت لود می کنید؟
    منظورتون دستور لوده؟ با دستور WebBrowser.Navigate

  10. #10

    نقل قول: مشکل در جستجوی متن در WebBrowser به سمت بالا

    نقل قول نوشته شده توسط saeidd مشاهده تاپیک
    باید این کد رو بزاری تو یه حلقه While؛ یه چیزی مثل این:
    procedure TForm1.SearchAndHighlightText(aText: string);
    var
    tr: IHTMLTxtRange; //TextRange Object
    begin
    if not
    WebBrowser1.Busy then
    begin
    tr := ((WebBrowser1.Document as IHTMLDocument2).body as IHTMLBodyElement).createTextRange;
    //Get a body with IHTMLDocument2 Interface and then a TextRang obj. with IHTMLBodyElement Intf.

    while tr.findText(aText, 1, 0) do //while we have result
    begin
    tr.pasteHTML('<span style="background-color: Lime; font-weight: bolder;">' +
    tr.htmlText + '</span>');
    //Set the highlight, now background color will be Lime
    tr.scrollIntoView(True);
    //When IE find a match, we ask to scroll the window... you dont need this...
    end;
    end;
    end;

    منظورم با استفاده از تابع اول بود نه تابع دیگری

  11. #11

    نقل قول: مشکل در جستجوی متن در WebBrowser به سمت بالا

    نقل قول نوشته شده توسط saeidd مشاهده تاپیک
    منظورتون دستور لوده؟ با دستور WebBrowser.Navigate
    صفحه از روی هارد لود می شود یا از هاست؟

  12. #12

    نقل قول: مشکل در جستجوی متن در WebBrowser به سمت بالا

    نقل قول نوشته شده توسط 1072300 مشاهده تاپیک
    منظورم با استفاده از تابع اول بود نه تابع دیگری
    اینم همون تابع اوله دیگه، فقط چون قراره همه ی نتایج جستجو رو هایلایت کنه، به جای دستور select از دستور pastehtml استفاده شده.

    نقل قول نوشته شده توسط 1072300 مشاهده تاپیک
    صفحه از روی هارد لود می شود یا از هاست؟
    از روی هارد. برنامه ام یه نرم افزار دسکتاپه

  13. #13

    نقل قول: مشکل در جستجوی متن در WebBrowser به سمت بالا

    چون از نحوه کار و ماهیت برنامه شما اطلاع ندارم تنها راهی که فعلا به نظرم می رسد این است که باید در زمان جستجو خط مورد نظر را حذف کرد و در پایان جستجو دوباره خط را به صفحه اضافه کرد. اما اگر این امر امکان ندارد در مورد کار برنامه توضیح بدهید تا شاید راه حل دیگری برای مشکل پیدا کنیم.
    آخرین ویرایش به وسیله 1072300 : سه شنبه 14 دی 1395 در 16:01 عصر

  14. #14

    نقل قول: مشکل در جستجوی متن در WebBrowser به سمت بالا

    نقل قول نوشته شده توسط 1072300 مشاهده تاپیک
    چون از نحوه کار و ماهیت برنامه شما اطلاع ندارم تنها راهی که فعلا به نظرم می رسد این است که باید در زمان جستجو خط مورد نظر را حذف کرد و در پایان جستجو دوباره خط را به صفحه اضافه کرد. اما اگر این امر امکان ندارد در مورد کار برنامه توضیح بدهید تا شاید راه حل دیگری برای مشکل پیدا کنیم.
    وقتی حذفش می کنم خیل از کلاسها و توابع به هم میریزن. پس این گزینه منتفیه.

    برنامه ام یه برنامه ویندوزیه که یه سری متون رو از دیتابیس بوسیله توابع جاوا اسکریپت لود می کنه توی WebBrowser.
    ظاهرا تابع IHTMLTxtRange::findText با X-UA-Compatibleسازگاری نداره و باید خودم یه تابع برای اینکار بنویسم. وقت زیادی هم می بره. اگه بشه اینو درست کرد خیلی خوب میشه.

تاپیک های مشابه

  1. پاسخ: 4
    آخرین پست: پنج شنبه 15 فروردین 1392, 06:29 صبح
  2. سوال: مشکل در دسترسی به دیتایس SQL سرور از سمت کلانت با C#‎
    نوشته شده توسط milad_tensy در بخش C#‎‎
    پاسخ: 21
    آخرین پست: دوشنبه 26 دی 1390, 13:44 عصر
  3. مشکل در اتصال به بانکهای اراکل
    نوشته شده توسط hmm در بخش VB.NET
    پاسخ: 2
    آخرین پست: پنج شنبه 17 آذر 1384, 09:29 صبح
  4. مشکل در Connect به SQL Server
    نوشته شده توسط ghaum در بخش مسائل مرتبط با نصب و راه اندازی
    پاسخ: 4
    آخرین پست: شنبه 30 فروردین 1382, 07:45 صبح
  5. مشکل در دسترسی به Interbase
    نوشته شده توسط Mahdiseif در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 8
    آخرین پست: سه شنبه 26 فروردین 1382, 00:03 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •