Программирование - это просто
Advertisement
Главная arrow Уроки программирования arrow Пишем на Delphi 7 мониторинг поисковых запросов arrow Пишем на Delphi SEO-мониторинг: Урок 9. Усовершенствуем нашу программу (TTable, TDBGrid, базы данных
20.04.2024 г.
Главное меню
Главная
Интернет магазин
Программные продукты
Биржевые роботы
Искусственный интеллект
Математика и информатика
1С:Предприятие
Уроки C#
Уроки Delphi
Уроки программирования
Web-программирование
Дизайн и графика
Компьютер для блондинок
Исходники
Статьи
Платный раздел
Рассказы про компьютеры
Хитрости и секреты
Системный подход
Размышления
Наука для чайников
Друзья сайта
Excel-это не сложно
Все о финансах
.
Пишем на Delphi SEO-мониторинг: Урок 9. Усовершенствуем нашу программу (TTable, TDBGrid, базы данных Печать E-mail
Автор megabax   
14.02.2011 г.
В этой статье будет пошагово описано создание на Delphi приложение

Пишем на Delphi SEO-мониторинг: Урок 9. Усовершенствуем нашу программу (TTable, TDBGrid, базы данных).

Исходники у уроку можно скачать здесь.

Сегодня мы усовершенствуем программу SEO-мониторинга, которую разработали на прошлом уроке. Как вы помните, в прошлый раз мы написали программу, которая по адресу сайта и поисковому запросу определяет, на которой позиции в Яндексе он стоит. Сегодня мы усовершенствуем ее. Пусть у нас будет база запросов, а программа обновляет ее, для каждого запроса определяет позицию и записывает в базу данных. Для начала нам потребуется создать dbf-файл с полями 

Поле Тип
Query String
Position Integer

Создать этот  файл вы можете в любой утилите для создания и редактирования dbf файлов, либо в Database Desktop-е, который входит в состав Delphi (см. статью по работе с базами данных). Если у вас бесплатная версия Turbo Delphi, то у вас нет Database Desktop-а. Если у вас нет утилит для работы с dbf, скачайте файлик с примером отсюда. Кроме того, можно самостоятельно написать на Turbo Delphi программку, которая создаст нужный dbf-файл. Но описание этой программы выходит за рамки данной статьи. (про создание dbf-файлов есть статьи в платном разделе, см. анонсы: "Пишем утилиту управления метаданными. Урок 1. Создание таблицы и описание базовых классов" и "Как средствами Turbo Delphi программно создать базу данных").

В новой программе будут использоваться следующие компоненты (вам понадобиться проект прошлого урока, если его у вас нет, скачайте его здесь):

TPageControl. Он находиться на закладке Win32*:

Пишем на Delphi SEO-мониторинг: Урок 9. Усовершенствуем нашу программу (TTable, TDBGrid, базы данных).

в нем нам надо будет создать две страницы "Браузер" и "Запросы". На первую мы поместим компонент TWebBrowser, поля ввода и кнопку, на вторую - сетку для отображения базы данных, TDBGrid, она у нас находиться на закладке Data controls*:

Пишем на Delphi SEO-мониторинг: Урок 9. Усовершенствуем нашу программу (TTable, TDBGrid, базы данных).

Разумеется, для того, что бы отобразить базу данных в сетке, нам нужны компоненты TTable и TDataSource, которые находятся на закладках BDE и Data access*:

Пишем на Delphi SEO-мониторинг: Урок 9. Усовершенствуем нашу программу (TTable, TDBGrid, базы данных).

Еще добавим TDBNavigator, закладка Data controls*:

Пишем на Delphi SEO-мониторинг: Урок 9. Усовершенствуем нашу программу (TTable, TDBGrid, базы данных).

вместо TGauge лучше использовать TProgressBar, так как он есть и в Delphi 7, и в бесплатной версии Trubo Delphi. Его можно найти на закладке Win 32*:

Пишем на Delphi SEO-мониторинг: Урок 9. Усовершенствуем нашу программу (TTable, TDBGrid, базы данных).

прогресс баров нам понадобится два, один назовем ProgressBar, другой ProgressBarTop. В компонентах для работы с базами данных из имени, которое система назначит по умолчанию, удалим единичку, так как давать  объектам осмысленные идентифкаторы явлется признаком хорошего тона в программироваии. 

Теперь свяжем компоненты баз данных, если не знаете как, загляните сюда. Разместим компоненты так, что бы проект выглядел вот таким образом:

Закладка "Браузер"*:

Пишем на Delphi SEO-мониторинг: Урок 9. Усовершенствуем нашу программу (TTable, TDBGrid, базы данных).

Закладка "Запросы"*:

Пишем на Delphi SEO-мониторинг: Урок 9. Усовершенствуем нашу программу (TTable, TDBGrid, базы данных).

Теперь приступим к программированию. Приведу здесь новый текст объектов, которые изменились. И так, объявление класса формы:

type

  TfrmTestWebBrowser = class(TForm)

    Timer: TTimer;

    PageControl1: TPageControl;

    TabSheet1: TTabSheet;

    TabSheet2: TTabSheet;

    Label1: TLabel;

    Label3: TLabel;

    lbPosition: TLabel;

    lbPage: TLabel;

    Label4: TLabel;

    btnExec: TButton;

    edRef: TEdit;

    ProgressBar: TProgressBar;

    wbWebBrowser: TWebBrowser;

    DataSource: TDataSource;

    DBGrid: TDBGrid;

    Table: TTable;

    DBNavigator1: TDBNavigator;

    ProgressBarTop: TProgressBar;

    procedure btnExecClick(Sender: TObject);

    procedure wbWebBrowserDownloadComplete(Sender: TObject);

    procedure TimerTimer(Sender: TObject);

    procedure FormCreate(Sender: TObject);

  private

    { Private declarations }

    isComplete:boolean;

    currPage:integer;

    isExec:boolean;

    currWord:string;

    currNum:integer;

    function URLSearch(AURL:string):integer;

    function PositionOfQuery(AWords:string):integer;

  public

    { Public declarations }

  end;

Кроме добавленных компонентов, у нас в разделе private появились новые поля: currWord и currNum, а так же метод PositionQuery. 

Обработчик нажатия на кнопку поиска:

procedure TfrmTestWebBrowser.btnExecClick(Sender: TObject);

var i:integer;

begin

   isExec:=true;

   currPage:=0;

   lbPosition.Caption:='Поиск';

   lbPage.Caption:='Поиск';

   currNum:=0;

   currWord:='';

 

   //обнуляем таблицу

   Table.First;

   i:=0;

   while not Table.Eof do

   begin

      Table.Edit;

      Table.FieldValues['Position']:=0;

      Table.Post;

      Table.Next;

      i:=i+1;

   end;

   ProgressBarTop.Max:=i;

   Table.First;

end;

В ней мы добавили цикл инициализации таблицы, мы обнуляем позицию для каждого поискового запроса. 

Обработчик таймера:

procedure TfrmTestWebBrowser.TimerTimer(Sender: TObject);

var res,i:integer;

begin

   if currWord<>'' then

   begin

      res:=PositionOfQuery(currWord);

      if res<>-1 then

      begin

         Table.Edit;

         Table.FieldValues['Position']:=res;

         Table.Post;

         ProgressBarTop.Position:=currNum;

         currNum:=currNum+1;

         currWord:='';

         Table.Next;

         if Table.Eof then

         begin

            isExec:=false;

         end;

         CurrPage:=0;

      end;

  end else begin

     currWord:=Table.FieldByName('Query').AsString;

  end;

end;

Ну, и наконец, метод PositionOfQuery:

function TfrmTestWebBrowser.PositionOfQuery(AWords:string):integer;

begin

   Result:=-1;

   if not(isExec) then exit;

   if isComplete then

   begin

     isComplete:=false;

     Result:=URLSearch(edRef.Text);

     if Result<>-1 then

     begin

       lbPosition.Caption:=IntToStr(Result);

       lbPage.Caption:=IntToStr(CurrPage+1);

       exit;

     end;

     ProgressBar.Position:=CurrPage+1;

   end;

   if CurrPage>99 then

   begin

      lbPosition.Caption:='Не найдено';

      lbPage.Caption:=IntToStr(CurrPage+1);

   end else wbWebBrowser.Navigate(GetQuery(CurrPage,AWords));

   CurrPage:=CurrPage+1;

end;

Запустим программу на тестирование, на закладке "Браузер" мы увидим визуализацию поиска:

Пишем на Delphi SEO-мониторинг: Урок 9. Усовершенствуем нашу программу (TTable, TDBGrid, базы данных).

а на закладке "Запросы" результаты:

Пишем на Delphi SEO-мониторинг: Урок 9. Усовершенствуем нашу программу (TTable, TDBGrid, базы данных).

Исходники у уроку можно скачать здесь.


Скриншоты, помеченные знаком *, являются цитатами и иллюстрациями   программного продукта "Turbo Delphi", авторское право на который принадлежит Borland Delphi.. 


Последнее обновление ( 07.11.2011 г. )
 
Пред. »
 
© 2024 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги