Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.04.2011, 17:52   #1
nursak
Пользователь
 
Регистрация: 27.03.2011
Сообщений: 31
Вопрос Эл. учебник с использованием TTreeview+TWebbrowser, реализация поиска

Привет всем. Я создаю электронный учебник на delphi 7 с использованием компонентов TTreeview (для выбора разделов) и TWebBrowser (для отображения). Поиск производится по Treeview
Код:
 var
  i: integer;
begin
  for i := 0 to TreeView1.Items.Count - 1 do
    if Pos(Edit1.Text, TreeView1.Items[i].Text) <> 0 then
    begin
      TreeView1.Selected := TreeView1.Items[i];
      TreeView1.SetFocus;
      break;
    end;
Проблема в том - что ищет он только при соблюдении регистров. То есть я пишу в edit "раздел 1" - он ничего не находит, а если написать "Раздел 1" - то соответственно находит.
И еще я не могу нигде найти реализацию поиска по компоненту TWebBrowser с подсветкой найденных символов на странице.

Последний раз редактировалось nursak; 01.04.2011 в 18:18. Причина: update1
nursak вне форума Ответить с цитированием
Старый 01.04.2011, 18:17   #2
nursak
Пользователь
 
Регистрация: 27.03.2011
Сообщений: 31
По умолчанию

Поиск по TWebBrowser с подсветкой символов нашел.
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OleCtrls, SHDocVw, StdCtrls, ExtCtrls, MSHTML, ActiveX;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Panel1: TPanel;
    WebBrowser1: TWebBrowser;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
    function InvokeCMD(WB: TWebbrowser; nCmdID: DWORD): Boolean; overload;
    function InvokeCMD(WB: TWebbrowser; InvokeIE: Boolean; Value1, Value2: Integer; var vaIn, vaOut: OleVariant): Boolean; overload;
  public
    { Public declarations }
  end;

const
  CGID_WebBrowser: TGUID = '{ED016940-BD5B-11cf-BA4E-00C04FD70816}';

var
  Form1: TForm1;


implementation

{$R *.dfm}


procedure TForm1.FormCreate(Sender: TObject);
begin
   WebBrowser1.Navigate( 'http://forum.a42.ru/programmirovanie/delphi-poisk-v-webbrowser-t21644.html' );
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  vaIn, vaOut: OleVariant;
begin
  InvokeCMD( WebBrowser1, 1 );
end;

function TForm1.InvokeCMD(WB: TWebbrowser; nCmdID: DWORD): Boolean;
var
  vaIn, vaOut: OleVariant;
begin
   Result := InvokeCMD(WB, True, nCmdID, 0{unassigned}, vaIn, vaOut);
end;

function TForm1.InvokeCMD(WB: TWebbrowser; InvokeIE: Boolean; Value1,
  Value2: Integer; var vaIn, vaOut: OleVariant): Boolean;
var
  CmdTarget: IOleCommandTarget;
  PtrGUID: PGUID;
begin
  New(PtrGUID);
  if InvokeIE then
    PtrGUID^ := CGID_WebBrowser
  else
    PtrGuid := PGUID(nil);
  if WB.Document <> nil then
  try
    WB.Document.QueryInterface(IOleCommandTarget, CmdTarget);
    if CmdTarget <> nil then
    try
      CmdTarget.Exec(PtrGuid, Value1, Value2, vaIn, vaOut);
    finally
      CmdTarget._Release;
    end;
  except end;
  Dispose(PtrGUID);

end;

end.
nursak вне форума Ответить с цитированием
Старый 03.04.2011, 17:15   #3
nursak
Пользователь
 
Регистрация: 27.03.2011
Сообщений: 31
По умолчанию

Ап
Как сделать чтобы поиск работал не зависимо от регистра символов?
nursak вне форума Ответить с цитированием
Старый 11.04.2011, 22:39   #4
HOOCH94
Пользователь
 
Регистрация: 08.11.2010
Сообщений: 21
По умолчанию

В своём эл учебнике я использую вот такой код поиска по Webbrowser;
Код:
uses MSHTML;

procedure WBFindText(Browser: TWebBrowser; const Direction: Boolean; const FText: String;
  const SearchScope, Flags: Integer);
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);
  end
    else MessageBox(Handle, 'По Вашему запросу ничего не найдено', 'Поиск текста', MB_ICONINFORMATION);
end;

{
WBFindText(MyCoolBrowser, False, 'MyCoolText', 1, 0); // Найти вперед

WBFindText(MyCoolBrowser, False, 'MyCoolText', 1, 0 or 4); // Найти вперед + чуствительность к регистру

WBFindText(MyCoolBrowser, True, 'MyCoolText', - 1, 1); // Найти назад

WBFindText(MyCoolBrowser, True, 'MyCoolText', - 1, 1 or 4); // Найти назад + чуствительность к регистру } (c)RaIDeR
HOOCH94 вне форума Ответить с цитированием
Старый 11.04.2011, 22:45   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
if Pos(AnsiUpperCase(Edit1.Text), AnsiUpperCase(TreeView1.Items[i].Text)) <> 0 then
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.04.2011, 15:23   #6
nursak
Пользователь
 
Регистрация: 27.03.2011
Сообщений: 31
По умолчанию

Спасибо Аватар помогло
nursak вне форума Ответить с цитированием
Старый 14.04.2011, 15:33   #7
nursak
Пользователь
 
Регистрация: 27.03.2011
Сообщений: 31
По умолчанию

Как сделать экспорт содержимого Twebbrowser в HMTL/DOC формат?
И можно ли использовать QReport с Twebbrowser?
nursak вне форума Ответить с цитированием
Старый 17.04.2011, 01:24   #8
kees
Пользователь
 
Регистрация: 17.04.2011
Сообщений: 10
По умолчанию

Доброго времени суток! Это если правильно понимаю поиск по тексту в дереве? А мне вот надо очень поиск только по тексту из файла. Т.е. по всему массиву из ентого дерева.
Подскажите дельную идею, а?
kees вне форума Ответить с цитированием
Старый 17.04.2011, 01:27   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Как сделать экспорт содержимого Twebbrowser в HMTL/DOC формат?
как брать содержимое TWebBrowser я писал не однократно. это и есть HTML
Цитата:
А мне вот надо очень поиск только по тексту из файла
дык это выходит поиск по TWebBrowser, см пост 4
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 17.04.2011, 01:31   #10
kees
Пользователь
 
Регистрация: 17.04.2011
Сообщений: 10
По умолчанию

Че то не выходит, и не пойму я где там проход по тривью?
неужели никто никогда такого не делал? уже месяц ищу наверное...
И код у меня есть,вроде не корявый, тока не работает почему-то, хотелось сравнить...

Последний раз редактировалось kees; 17.04.2011 в 01:41.
kees вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
реализация веб сервисов с использованием JBoss rest easy ОлькаЗара Помощь студентам 0 10.12.2010 01:50
Реализация функций поиска MaxMad Помощь студентам 0 04.12.2010 15:16
АТД: Реализация списка с использованием указателей Suslik963 Помощь студентам 1 17.11.2010 10:06
Реализация метода поиска неисправности =\ Minton87 Помощь студентам 0 27.12.2009 20:13
Реализация поиска ADO+Access Artazzz БД в Delphi 5 13.10.2008 18:52