рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Пример создания ActiveX форм

Пример создания ActiveX форм - раздел Строительство,   Глава 22. Ole, Com, Activex ....................................

 

Глава 22. OLE, COM, ActiveX .................................................................................................. 529

 

 

22.1. Теория OLE .................................................................................................................... 530

 

22.2. OLE Контейнер.............................................................................................................. 532

 

22.3. Создание собственного окна вставки OLE объекта................................................... 536

 

22.4. Элементы управления ActiveX .................................................................................... 540

 

22.5. Модель COM .................................................................................................................. 547

 

22.6. Пример создания ActiveX форм................................................................................... 549

 

22.7. Создание ActiveX компонентов................................................................................... 553

 

ехнология OLE – это сильнейшее изобретение
Microsoft, с её же точки зрения. С моей точки

 

зрения – это правда, но только на 10 процентов. Технология OLE включает в себя элементы ActiveX, которые чем-то иногда похожи на компоненты Delphi, но только требуют неоправданных проблем с регистрацией в системе и вечные мучения с контролем версий.

Я не люблю ActiveX и стараюсь использовать их только в крайнем случае. Я даже не хотел тебе рассказывать о них, потому что не хочу тебя загружать ерундой. Но всё же, я иногда сталкиваюсь с ситуацией, когда ActiveX приходиться использовать (иногда использую чужие, а иногда приходиться писать свои компоненты). Поэтому я долго сопротивлялся, но решил всё же рассказать про эту технологию.

Единственное преимущество ActiveX – компоненты, оформленные в таком виде будут работать в любом другом языке программирования. Если компоненты Delphi можно использовать только в Delphi, ну в крайнем случае в C++ Builder или Kylix (обе разработки фирмы Borland), то ActiveX однозначно работают везде. Твои компоненты смогут использовать и в Visual C++, и в Visual Basic и во многих других программах, поддерживающих ActiveX.

И всё же, несмотря на это я всегда пишу VCL компоненты, а если надо их превратить в ActiveX, то это можно сделать с помощью Delphi за пять минут.

22.1. Теория OLE

 

ехнология OLE (Object Link and Embedding) – является стандартом Windows обеспечивает связывание и встраивание объектов на основе технологии COM (Component Object Model). С момента выпуска первой версии OLE 1.0,

технология претерпела большие изменение и старая аббревиатура OLE уже не отражает действительности. Теперь эти три буквы используют только по привычке и давно уже пора всё это дело как-нибудь переименовать.

COM – это спецификация, созданная для описания структуры COM-объектов. Как я уже сказал, COM-объекты могут использоваться в любых языках программирования, вне зависимости от того, на каком языке они написаны. Помимо компиляторов, с COM объектами могут работать очень много крупных программных пакетов, например всё те же Word и Excel.

Объекты OLE могут запускаться как в отдельном окне, так и внутри окна вашего приложения (первая версия позволяла запускать объекты только в отдельном окне). Таким образом, ты можешь получать доступ к чужим приложениям и использовать их в своих целях. В главе 15, когда я описывал пример отчётности в Excel, мы уже познакомились с технологией OLE, сами этого не подозревая. Тогда я запускал программу Excel с помощью функции CreateOleObject и потом получал к ней доступ. Мы выводили отчёт в чужую программу.

Когда OLE объект запускается внутри твоего окна, то часть твоих меню и панелей заменяется на те, что используются в программе, которую мы загружаем.

Прежде чем говорить о чём-то дальше, давай посмотрим на работу с OLE на маленьком примере. Запусти Delphi и создадим новый проект. Брось на форму один лишь компонент OleContainer с закладки System палитры компонентов. Теперь дважды щёлкни внутри окна компонента (или щёлкни правой кнопкой и в появившемся меню выбери пункт Insert Object) и перед тобой откроется окно, как на рисунке 22.1.1.

В этом окне, в списке «Тип объекта» найди строку «Рисунок PaintBrush». Выдели эту строку. Если поставить галочку «В виде значка», то на форме ты потом увидишь только значок объекта, а по двойному щелчку будет запускаться выбранное приложение (PaintBrush). Если галочки нет, то приложение встраивается прямо в окно.

Попробуй запустить программу и дважды щёлкнуть внутри компонента OLEContainer. Компонент будет взят в рамочку и ты сможешь рисовать в нём как в самом PainBrush.

Вот таким нехитрым способом мы встроили стороннее приложение в свою программу. Но у него нет ни меню, ни панелей. Для добавления меню, достаточно просить на форму компонент MainMenu. Туда не надо добавлять никаких пунктов, достаточно просто его бросить. Если у формы есть главное меню, то OLE компонент будет автоматически встраиваться в него. Запусти программу и убедись, что меню появляется.

Теперь измени свойство Align у компонента OleContainer1 на alClient, чтобы растянуть его по всей форме. Запусти программу и посмотри на результат. Теперь твоё приложение превратилось чуть ли не в полноценный PaintBrush. Единственное, что отличает его – заголовок окна и иконка Delphi.

На компакт диске, в директорииПримерыГлава 22OLEты можешь увидеть пример этой программы.

Теперь подробней о меню. Попробуй создать в нашем главном меню два пункта Файл и Правка. У обоих пунктов можешь добавить подпункты (рисунок 22.1.3). Теперь запусти программу и посмотри на результат. Когда ты пытаешься активизировать OLE объект, то меню Файл остаётся твоё, а аналогичное из программы PaintBrush исчезает. К тому же у нас получилось два пункта Правка. В чём же эффект? Пункты меню, у которых в свойстве GroupIndex стоит чётное значение (0, 2, 4 …) – остаются неизменными. Пункты меню, у которых GroupIndex нечётное – заменяются аналогичными из OLE объекта.

Попробуй поставить у пункта Правка в свойстве GroupIndex значение 1 и запусти программу. Теперь при активизации OLE объекта пункт меню «Правка» будет заменён аналогичным из объекта. Обязательно учитывай этот эффект при программировании программ работающих с OLE!!!

Написанная нами программа называется Контейнер OLE, а программа, которую мы привязываем называется Объект OLE. При работе с OLE выделяются два способа связи:

1. 1. Связывание объекта OLE с контейнером. В этом случае результирующий файл сохраняется отдельно и должен быть создан до того, как контейнер обратиться к нему. Контейнер только ссылается на файл, но не хранит в себе никаких данных. Главное преимущество такого способа – к одному документу может ссылаться множество контейнеров и при изменении документа, все контейнеры получают эти изменения.

2. 2. Встраивание объектов. В этом случае созданный документ храниться в контейнере и другие приложения не могут получить к нему доступ. В этом случае данные хранятся как часть приложения.

 

 

22.2. OLE Контейнер

ы уже написали небольшой пример работы с OLE контейнером (OleContainer), но мы задействовали только малую часть его возможностей. Здесь нам предстоит познакомиться с основными свойствами и методами

компонента и написать более полезный пример, чем в предыдущей части книги. Давай, как всегда, начнём с рассмотрения свойств компонента OleContainer, которые могут понадобиться при работе с OLE объектами. AllowInPlace – если это свойство равно true, то OLE объект будет создаваться в компоненте, иначе будет запускаться как отдельное приложение. AutoActivate – определяет способ активизации OLE объекта. Здесь возможны

следующие значения: aaDoubleClick – активизация объекта будет происходить по двойному щелчку. aaGetFocus – активизация при получении фокуса. aaManual – активизация вызовом соответствующей функции. CopyOnSave – если это свойство равно true то при попытке сохранения создаёться

временный файл, который сжимается для экономии места на диске. Iconic – если это свойство равно true, то в окне контейнера будет отображаться

иконка объекта, иначе сам объект. Linked – если объект связанный, то здесь true. OleClassName – здесь храниться имя OLE объекта. OleObject – здесь храниться ссылка на сам OLE объект. OleObjectInterface – здесь храниться ссылка на интерфейс OLE объекта. Modified – если объект изменён, то это свойство принимает значение true. NewInserted – если объект заново создан командой Insert Object, то это свойство

равно true.

OleStreamFormat – если это свойство равно true, то при сохранении будет использоваться старый формат OLE 1.0. Это необходимо, если какое-то программное обеспечение не умеет работать с новым форматом.

SizeMode – управляет размером объекта.
smAutoSize – размер выбирается автоматически.
smCenter – по центру.
smClip – объект показывается реальным размером, отображается та часть, которая

 

поместилась в окно. smScale – объект масштабируется. smStretch – объект растягивается.

Теперь посмотрим на основные методы компонента OleContainer: ChangeIconDialog – показать окно смены иконки. Close – закрыть OLE объект. Copy – копировать объект в буфер обмена. CreateLinkToFile – создать ссылку на файл OLE объекта. CreateObject – создать в контейнере OLE объект. Тут два параметра – имя объекта и

булево значение, указывающее на необходимость создания объекта в виде иконки

CreateObjectFromFile создать объект из указанного файла. Тут два параметра – имя файла и булево значение, указывающее на необходимость создания объекта в виде иконки.

DoVerb – передать объекту OLE запрос на выполнение каких-либо действий. InsertObjectDialog – показать окно вставки нового объекта. LoadFromFile – загрузить объект из файла. В качестве единственного параметра

нужно указать имя файла. LoadFromStream – загрузить из потока. В качестве единственного параметра нужно

указать поток. ObjectPropertiesDialog – показать окно свойств объекта. Paste – вставить из буфера обмена. PasteSpecialDialog – показать специальное окно вставки из буфера обмена. Run – запустить объект. SaveAsDocument – сохранить объект в виде OLE документа. В качестве

единственного параметра нужно указать имя файла. SaveToStream – сохранить в поток. В качестве единственного параметра нужно указать поток.

С учётом всего сказанного, давай попробуем улучшить наш пример, написанный в прошлой части. Открой его и добавь одну панель TToolBar и брось на неё пять кнопок:

1. 1. Вставить объект.

2. 2. Свойства объекта.

3. 3. Вставить из файла

4. 4. Открыть объект.

5. 5. Сохранить объект.

6. 6. Закрыть объект.

 

Мою форму ты можешь увидеть на рисунке 22.2.1. Ты можешь создать точно такую же форму, а можешь её реализовать по своему, это зависит от твоих пристрастий.

По нажатию кнопки «Вставить объект» пишем следующий код:

procedure TForm1.InsertButtonClick(Sender: TObject); begin OleContainer1.InsertObjectDialog; end;

Теперь, после нажатия этой кнопки, программа будет отображать уже знакомое тебе окно (рисунок 22.1.1), с помощью которого можно будет сменить OLE объект на другой. По нажатию второй кнопки (свойства объекта) пишем следующий код:

procedure TForm1.PropertiesButtonClick(Sender: TObject); begin OleContainer1.ObjectPropertiesDialog; end;

Этим кодом мы будем отображать окно свойств объекта. Пример такого окна ты можешь увидеть на рисунке 22.2.2. В принципе, тут не так уж и много параметров, которые ты можешь изменить. На закладке «Просмотр» можно изменить только масштаб (если объект поддерживает масштабирование) или изменить значок.

Следующая у нас идёт кнопка «Вставить из файла». По нажатию этой кнопки пишем следующий код:

procedure TForm1.InsertFromFileToolButtonClick(Sender: TObject); begin if OpenDialog1.Execute then OleContainer1.CreateObjectFromFile(OpenDialog1.FileName, false); end;

Вот здесь я добавил окно открытия файла OpenDialog. В первой строке я показываю это окно и если пользователь выбрал файл, то во второй строке я создаю объект на основе выбранного файла. Попробуй запустить приложение и открыть bmp, doc или xls файл. Как только ты нажмёшь кнопку «Открыть», так сразу перед тобой появиться соответствующий выбранному файлу OLE объект. Если ты выберешь doc файл, то запуститься Word.

По нажатию кнопки сохранить мы пишем следующее:

procedure TForm1.OpenButtonClick(Sender: TObject); begin OleContainer1.LoadFromFile('ole.dat'); end;

Здесь я открываю объект из указанного файла. В качестве имени файла я использую ‘ole.dat’. Ты же можешь добавить на форму компонент OpenDialog, чтобы пользователь сам мог выбирать имя файла, который надо открывать.

По кнопке «Открыть файл» пишем следующий код:

procedure TForm1.SaveButtonClick(Sender: TObject); begin OleContainer1.SaveToFile('ole.dat'); end;

Здесь мы сохраняем объект в тот же файл ‘ole.dat’. Здесь тоже можно дать возможность пользователю выбирать имя файла с помощью компонента OpenDialog. Только хочу тебя предупредить, что файл созданный OLE объектом не совместим с форматом самой программы объекта. Это значит, что ole.dat – это не bmp картинка, хотя и bmp – это родной формат для программы PaintBrush. Так что ты не сможешь открыть файл ole.dat с помощью PaintBrush.

По нажатию кнопки закрыть пишем следующее:

procedure TForm1.CloseButtonClick(Sender: TObject); begin OleContainer1.Close; end;

Здесь мы закрываем запущенный OLE объект. Если пользователь дважды щёлкнул по контейнеру, то OLE объект запускается и закрыть его можно с помощью этой кнопки.

На компакт диске, в директорииПримерыГлава 22OLE1ты можешь увидеть пример этой программы.

 

22.3. Создание собственного окна вставки OLE объекта

спользование стандартного окна – это хорошо, но можно же написать и своё окошко. Тем более, что это не так уж и сложно, заодно и потренируемся в программировании и вспомним, как работать с реестром. Если ты пока не

думаешь, создавать собственные окна, прочтение этой части является обязательным, потому что здесь будет показаны некоторые приёмы работы с реестром, о которых я не говорил.

Откроем предыдущий пример и создадим в нём новую форму. На ней обязательно должен присутствовать компонент TListBox с именем OLEItemsListBox и две кнопки (Да и Отмена). Мою форму ты можешь увидеть на рисунке 22.3.1.

Рисунок 22.3.1. Форма окна загрузки OLE объектов.

В разделе publicобъекта формы нужно объявить одну переменную ProgramsID имеющую тип TStrings:

public { Public declarations } ProgramsID:TStrings;

Почему я объявляю именно в разделе public? В этом параметре будет храниться список найденных идентификаторов, по которым мы потом будем создавать OLE объект. К переменной ProgramsID нам придется обращаться из основной формы, поэтому переменная должны быть доступна и находиться в разделе public.

Эту переменную нужно проинициализировать по событию OnCreate формы:

procedure TInsertOLEForm.FormCreate(Sender: TObject); begin ProgramsID:=TStringList.Create; end;

Уничтожаться переменная будет по событию OnDestroy:

procedure TInsertOLEForm.FormDestroy(Sender: TObject); begin ProgramsID.Free; end;

Теперь создаём обработчик события OnShow, где будет происходить загрузка из реестра списка доступных в системе OLE объектов:

procedure TInsertOLEForm.FormShow(Sender: TObject);

var i:Integer; CLSID:String; Keys:TStrings; reg:TRegistry;

begin Keys:=TStringList.Create; ProgramsID.Clear; OLEItemsListBox.Items.Clear;

reg:=TRegistry.Create; reg.RootKey:=HKEY_CLASSES_ROOT; reg.OpenKey('', false); reg.GetKeyNames(Keys);

for i:=0 to Keys.Count-1 do begin reg.CloseKey;

reg.OpenKey(Keys.Strings[i], false);
if not reg.KeyExists('Insertable') then continue;
OLEItemsListBox.Items.Add(reg.ReadString(''));
reg.OpenKey('CLSID', false);
CLSID:=reg.ReadString('');
reg.CloseKey;
if reg.OpenKey('CLSID'+CLSID, false) then

begin if reg.OpenKey('ProgId', false) then ProgramsID.Add(reg.ReadString('')) else ProgramsID.Add('[Нет идентификатора программы]') end; end; Keys.Free; end;

В первой строке я инициализирую переменную Keys, которая имеет тип TStrings. Это у нас будет список строк, в котором будут храниться все ключи раздела реестра, с описанием OLE объектов.

Во второй строке я очищаю список из переменной ProgramsID, потому что там может что-то остаться после предыдущего вызова окна. В следующей строке очищаю компонент TListBox.

Всё, приготовление окончено. Теперь нужно проинициализировать переменную reg, т.е. открыть реестр. Как ты помнишь, реестр открывается на разделе HKEY_CURRENT_USER, а информация об установленных OLE объектах находиться в разделе HKEY_CLASSES_ROOT. Именно поэтому я тут же меняю имя раздела, чтобы перейти в нужный.

В следующей строке я открываю подраздел ‘’. В качестве второго параметра метода открытия раздела (OpenKey) стоит значение false, что говорит о том, что если нужный раздел не существует, то его не надо создавать. В принципе, такой ситуации не может быть, потому что даже в полностью минимальной установке Windows этот раздел существовать будет. Поэтому в данном случае, второй параметр не очень важен.

В следующей строке я получаю список подразделов (с помощью метода GetKeyNames) текущего раздела. Результат будет записан в переменную Keys. Теперь можно запускать цикл и проверять все найденные ключи на соответствие подключаемым OLE объектам.

Внутри цикла я сначала закрываю текущий раздел и после этого открываю очередной раздел из списка Keys. В открытом разделе я проверяю наличие ключа «Insertable». Если его нет, то вызывается continue, чтобы прервать цикл и перейти на следующий элемент. Если такой ключ есть, то я читаю тип текущего OLE объекта и добавляю его в список ListBox:

OLEItemsListBox.Items.Add(reg.ReadString(''));

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

После прочтения CLSID я закрываю текущий ключ и открываю раздел с именем ключа. Если он открыт, то происходит попытка чтения идентификатора. Если он прочитан, то добавляем идентификатор в список ProgramsID, иначе добавляем строку [Нет идентификатора программы]. В принципе, при нормальном раскладе всё должно быть хорошо. Единственная ситуация, когда идентификатор не будет найден – когда OLE объект установлен или удалён из системы неправильно.

После перебора всех строк списка я уничтожаю переменную Keys.

Теперь переходим к основному окну и здесь по нажатию кнопки Вставить объект пишем следующий код:

procedure TForm1.InsertButtonClick(Sender: TObject);

Begin InsertOLEForm.ShowModal; if InsertOLEForm.ModalResult=mrOK then

OleContainer1.CreateObject(InsertOLEForm.ProgramsID.Strings[ InsertOLEForm.OLEItemsListBox.ItemIndex], false); end;

В первой строке я показываю созданное нами окно. Если пользователь нажал ОК (свойство ModalResult равно mrOK), то выполнить следующую строку, в которой создаётся OLE объект с помощью вызова метода CreateObject контейнера. В качестве параметра я указываю идентификатор из списка ProgramsID выделенной в списке строки.

InsertOLEForm.OLEItemsListBox.ItemIndex – указывает на выделенную строку в списке. InsertOLEForm.ProgramsID.Strings[строка] – здесь храниться идентификатор.

На рисунке 22.3.2 ты можешь увидеть моё окно, с результатом работы.

В принципе, пример рабочий. Единственный его недостаток – нет проверки на ошибки. Возможны ситуации, когда в системе есть объекты с запорченными записями (неправильная установка или удаление записей), в этом случае, при создании программа может зависнуть. Самый простой способ – поставить вызов функции CreateObject в блоке try..except..end, для исключения подобных ошибок. Второе – у нас нет проверки на выделение элемента. Возможно, что пользователь увидеть окно и нажмёт «ОК», а при этом ни одна строка списка не будет выделена. Так что перед загрузкой желательно проверять InsertOLEForm.OLEItemsListBox.ItemIndex на правильное значение. Если свойство ItemIndex больше или равно нулю, то одна из строк выделена, если равно –1, то выделенных строк в списке нет, а пользователь нажал ОК.

Я намеренно не стал делать полноценный исходник, чтобы ты сам мог его доработать. Я ставлю задачу в этой книги показать тебе основы и научить правильно мыслить, а дальше ты мыслить должен сам.

На компакт диске, в директорииПримерыГлава 22InsertDialogты можешь увидеть пример этой программы.

 

22.4. Элементы управления ActiveX

еперь разберёмся с элементами управления ActiveX. Я уже достаточно нехорошего сказал о них в теории, теперь пора познакомиться с компонентами ActiveX на практике. Хотя я уже говорил, что их не особо

люблю, но иногда использовать приходиться. Единственный компонент, который я использую регулярно – Internet Explorer. Да, это тоже компонент ActiveX, который использует Windows, хотя ты и видишь его в виде программы. Именно потому что этот компонент встроен в Windows и присутствует на всех машинах, я использую его достаточно часто.

Запускай Delphi. Перейди на закладку Internet палитры компонентов. Здесь должен быть компонент WebBrowser (он должен быть последний). Если у тебя версия Delphi меньше, чем пятая, то этого компонента может и не быть. Он может отсутствовать и если ты отказался устанавливать интернет компоненты (по умолчанию они ставятся).

Если компонента WebBrowser нет, то его надо установить (но даже если есть, читай всё подряд, в будущем пригодиться). Выбери Import ActiveX Control из меню Component. Перед тобой должно открыться окно, как на рисунке 22.4.1.

В списке выбора этого окна (сверху) найди строку Microsoft Internet Controls (Version 1.1). Версия может отличаться, но это не важно. Теперь нажми кнопку Install. Можно было бы нажать кнопку Create Unit, чтобы создать модуль с описанием ActiveX, но это излишне, потому что по нажатию кнопки Install, этот модуль создастся автоматически. Нажимай, и перед тобой откроется окно выбора пакета, как на рисунке 22.4.2.

Окно выбора пакета очень похоже на то, которое мы видели при установки компонентов VCL. Только здесь ты не выбираешь имя файла (он будет создан из компонента ActiveX, а можешь только выбрать пакет, в который будет происходить установка. На закладке Into new package ты можешь создать новый пакет точно так же, как и при создании пакетов для VCL компонентов. Точнее сказать, что пакеты одни и те же, разницы никакой. В одном пакете могут храниться VCL и ActiveX компоненты.

Выбери пакет и нажми ОК. После этого появиться запрос на компиляцию пакета как на рисунке 22.4.3. Соглашайся. Delphi откомпилирует необходимые файлы и установит компонент для работы с браузером.

После того, как Delphi прошуршит мозгами, появится окно, которое сообщит об успешной установке нового компонента. Нажми "OK" и закрой все, что открыл Delphi. Для этого выбери Close All из меню File. Теперь и у тебя есть компонент WebBrowser, только он расположен на странице ActiveX палитры компонентов.

Как ты мог заметить, мы будем использовать Microsoft Internet Controls, т.е. движок установленного на твоем компьютере IE. А это значит, что твой браузер подхватит все болезни и глюки своего движка. Единственное, что может успокоить -так это то, что интерфейс не будет таким занудным. Он будет таким, как ты захочешь, потому что сделан твоими руками, а своё всегда приятнее.

Сейчас ты уже готов приступить к программированию. Создай новый проект и сразу измени заголовок и иконку.

Двигаемся дальше. Установи на форму наш компонент WebBrowser (он находится на закладке Internet или ActiveX палитры компонентов) -у тебя появится белый квадрат с именем WebBrowser1. После этого брось на форму CoolBar, который находится на закладке Win32 палитры компонентов. Это панелька, которая должна выровняться по верхнему краю на твоей форме. Теперь выдели WebBrowser1 и перейди в объектный инспектор. Щелкни по свойству Align и в выпадающем списке выбери alClient. Компонент WebBrowser должен растянуться на все свободное место формы. В результате ты увидишь нечто похожее на рисунок 22.4.4.

Теперь брось на CoolBar1 (мы его недавно установили на форму) панель ToolBar из закладки Win32 и ComboBox из закладки Standard палитры компонентов. Все это ты должен бросить именно внутрь CoolBar1, иначе ты получишь некрасивый набор компонентов. После этого нужно выделить CoolBar1 и перейти в объектный инспектор. Здесь ты должен изменить строку AutoSize на true (по умолчанию она false).

Если что-то не получилось, то читай главу заново. Если все в порядке, то выделяй ComboBox1 (выпадающий список) и переходи в объектный инспектор. Здесь ты должен выделить закладку Events и произвести сложнейшее действие двойного щелчка по строке OnKeyDown, чтобы создать обработчик этого события. Как и раньше, Delphi создаст процедуру обработчика. Она будет вызываться каждый раз, когда ты будешь вводить какую-нибудь букву в ComboBox. Здесь ты должен написать следующее:

procedure TForm1.ComboBox1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin

if Key= VK_RETURN then WebBrowser1.Navigate(ComboBox1.Text); end;

Здесь я проверяю, если переменная Key равна VK_RETURN (т.е. если нажата кнопка Enter), то выполнить следующее действие -WebBrowser1.Navigate(ComboBox1.Text). Здесь я вызываю метод Navigate нашего браузера и в качестве параметра указываю текст компонента ComboBox. Метод Navigate заставляет открыть браузер указанную страничку.

Если ты устанавливал компонент WebBrowser как ActiveX и он не стоял у тебя сразу же, то возможно, что при компиляции Delphi будет ругаться на недостаточность параметров. Он может запросить аж три дополнительных параметра типа OleVariant. В этом случае объяви три переменные такого типа и просто подставь их:

procedure TForm1.ComboBox1KeyDown(Sender: TObject; var Key: Word; var p1,p2,p3:OleVariant;

begin if Key= VK_RETURN then WebBrowser1.Navigate(ComboBox1.Text, p1, p2, p3);

end;

Нажми "F9", и твоя прога должна засвистеть. Введи какой-нибудь адрес в строку ComboBox и нажми Enter. Если ты правильно ввел адрес, то в WebBrowser1 через несколько минут должен появиться указанный сайт.

Кликни по ToolBar1 и снова переходи в ObjectInspector. Здесь нужно изменить свойства AutoSize, ShowCaption и Flat на true (все они по умолчанию равны false). Теперь щелкай правой кнопкой по ToolBar1 и из появившейся меню выбирай пункт New Button. На компоненте ToolBar1 должна появиться новая кнопка с именем ToolButton1. Выдели ее и в объектном инспекторе поменяй свойство Caption на Открыть. Создай еще насколько кнопок с заголовками: Назад, Вперед, Стоять, Обновить и Печать. Результат должен быть похож на рисунок 22.4.5.

Установи еще на форму OpenDialog из закладки Dialogs палитры компонентов. Он нам скоро понадобится.

Теперь дважды кликни по кнопке Открыть, и Delphi автоматически создаст процедуру, которая будет вызываться при нажатии этой кнопки. В этой процедуре нужно написать следующее:

procedure TForm1.ToolButton1Click(Sender: TObject); begin if OpenDialog1.Execute then begin WebBrowser1.Navigate(OpenDialog1.FileName);

ComboBox1.Text:=OpenDialog1.FileName; end;

end;

Здесь я заставляю наш браузер загрузить открытый файл и в строке ComboBox отображаю его имя, чтобы пользователб знал, какая страница сейчас загружена.

Теперь ты можешь запустить программу и открыть с помощью этой кнопки любой файл на диске. Но, я думаю, что торопиться не надо. Заставим работать остальные кнопки! Дважды кликни по кнопке Назад. Какой будет результат, ты уже догадался. Напиши тут следующее:

procedure TForm1.ToolButton2Click(Sender: TObject); begin WebBrowser1.GoBack; end;

Я думаю, что здесь ничего объяснять не надо. Мы просто заставляем WebBrowser1 идти на предыдущую страницу. Повтори те же операции для кнопки Вперед, чтобы создать процедуру обработчика OnClick. Напиши для нее следующий код:

procedure TForm1.ToolButton3Click(Sender: TObject); begin WebBrowser1.GoForward; end;

Для кнопки "Стоять" напиши: "Стоять на месте, руки по швам". Шучу. Напиши лучше это:

procedure TForm1.ToolButton4Click(Sender: TObject); begin WebBrowser1.Stop; end;

Для кнопки Обновить:

 

procedure TForm1.ToolButton5Click(Sender: TObject); begin WebBrowser1.Refresh; end;

И, наконец, для кнопки Печать:

 

Procedure TForm1.ToolButton6Click(Sender: TObject); var

Здесь только одна строка, но очень сложная, поэтому я не стану ее объяснять. Скажу только, что в этой строке я посылаю команду через OLE ядру IE.… Теперь можешь нажать "F9", и твоя программа должна запуститься.… Для начала брось на форму StatusBar из закладки Win32 и измени у него свойство SimplePanel в true (по умолчанию…

Regsvr32.exe ИмяФайла

Рассмотрим каждый параметр в отдельности: Target Dir -директория, в которую попадёт скомпилированный файл OCX.

– Конец работы –

Используемые теги: мер, создания, ActiveX, форм0.072

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Пример создания ActiveX форм

Что будем делать с полученным материалом:

Если этот материал оказался полезным для Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Еще рефераты, курсовые, дипломные работы на эту тему:

Кроме того, существуют сложные формы кристаллов, например, кристаллы дендриты или зерна неправильной формы
Сложность процесса роста кристаллов приводит к тому что часто их вид который мы наблюдаем значительно отличается от идеальных кристаллов Поэтому... Рис Вростки игольчатого турмалина в прозрачном кварце Невьянские россыпи Урал...

Текстовый процессор Word. Работа с таблицами и диаграммами. Использование и создание графических объектов. Создание новых форм для ввода данных
Практическое занятие Текстовый процессор Word Работа с таблицами и диаграммами Использование и создание графических объектов Создание новых... Таблицы всегда были неотъемлемым атрибутом печатной научно технической документации Они используются для более...

Форма государства (форма правления, форма государственного устройства, политический режим)
И одна из главных стоящих передо мной целей - изучить более досконально одну из тем теории государства и права - формы государства Рассматриваемый… Так что за работу Марксистка - ленинская теория считает основной причиной… Полн. собр. соч. Т.33 стр. 7. По этой причине официальная советская историография долгое время не признавала…

Создание фигур и изменение их геометрии в приложении MS Visio. Создание и разработка планировок в приложении MS Visio. Графический редактор Adobe Photoshop. Изучение панели инструментов редактора. Создание и обработка графических изображений.
Лабораторная работа Создание фигур и изменение их геометрии в приложении... ЦЕЛЬ РАБОТЫ приобретение навыков создания фигур средствами MS Visio...

Способы и формы создания предприятий иностранных инвестиций на примере Украины
Одной из наиболее распространенных является создание предприятия с иностранными инвестициями. Предприятия с иностранными инвестициями – предприятие (организация) любой… Такие предприятия создаются и действуют в формах, предусмотренных законодательством Украины.Учредительные документы…

Форма государства (форма правления, форма государственного устройства, политический режим)
И одна из главных стоящих передо мной целей - изучить более досконально одну из тем теории государства и права - формы государства Рассматриваемый… Так что за работу Марксистка - ленинская теория считает основной причиной… Полн. собр. соч. Т.33 стр. 7. По этой причине официальная советская историография долгое время не признавала…

Сравнительный анализ Маастрихтского договора о создании ЕС и договора о создании СНГ
Следует заметить, что не все страны к 90-м годам имели одинаковые возможности, отдельные государства характеризовались наличием оппозиционно… Итак, начнем рассмотрение данной темы прежде всего с истории принятия… В первую очередь обратим внимание на реформу Европейских Сообществ - ЕОУС, ЕЭС и Евроатома, где прежний отрыв…

Особенности рекламного образа и приемы его создания на примере рекламной компании такси
Это позволило использовать новые кино видео цифровые и компьютерные технологии в производстве рекламных роликов. Ведь использование ком-пьютерных технологий позволяет сократить почти на 90%… Хороший, качественный рекламный образ способен в очень короткие сроки создать образ товара (фирмы), выделить его из…

Создание предпринимательской фирмы и рассмотрение эффективности ее работы на примере печатного цеха
Так же следует принять во внимание где и на какие средства будет браться оборудование для фирмы и наниматься работни- ки. Часто бывает так, что на… Эти этапы: 1. Создание учредительного договора. 2. Создание устава общества.… В учередительном договоре Участники принимают на себя обязательство с ограниченной ответственностью,определяют поря-…

Формы таможенного контроля в системе перемещения грузов на примере Махачкалинского таможенного поста
Таможенный контроль стал развиваться в связи с увеличением объёма деятельности в таможенной сфере, товаро- и пассажирообмена, расширения… Особенное место в работе будет отведено обнаружению, выявлению и… Целью данной работы является, рассмотрение таких вопросов как: 1. Формы таможенного контроля. 2. Проверка документов и…

0.038
Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • По категориям
  • По работам
  • Формы собственности и формы предпринимательской деятельности в условиях рынка Система экономических отношений собственности охватывает - от начала и до конца - весь хозяйственный процесс. Она пронизывает и составляет сердцевину всех отношений между людьми по… Организационно - правовые формы предпринимательской деятельности отличаются крайним разнообразием к этой категории…
  • В последней главе описано, как автоматизировать создание документа с помощью построения форм, которые облегчают ввод Microsoft Word ведущая система обработки текстовых документов совмещающая в себе широкий спектр мощнейших средств редактирования... Учебно методическое пособие помимо теоретического материала содержит... Первая глава знакомит с основами Word которые понадобятся для создания простых документов Вы изучите сведения...
  • Форма правления и формы государственного устройства. Однако они весьма существенно отличаются друг от друга по особенностям своей внутренней организации, что выражается в понятии форма государства. В своей работе я охарактеризую, в каких конкретных формах существует и… Традиционно отечественная теория государства и права в этих целях всегда выделяло форму государства в три основных,…
  • Создание санатория в форме унитарного предприятия Именно поэтому Правительство Российской Федерации выделяет вопросы здоровья населения и развития здравоохранения в числе главных приоритетов своей… На коллегии Министерства здравоохранения Российской Федерации в марте 2003… Одним из основных этапов медицинской реабилитации является санаторно-курортное лечение, полностью отвечающее …
  • Лекция 7. Тема: Создание сложных документов и электронных форм[1 Слияние документов... Слияние можно выполнить в новый документ Нажмите кнопку Найти и объединить... Рис Выбор записей для слияния Результатом слияния будет новый документ которые содержит текст основного документа со вставленными значениями...