С Новым годом! Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
0 / 0 / 0
Регистрация: 15.03.2017
Сообщений: 50

WebBrowser: переход между веббраузерами по нажатию кнопки

01.05.2017, 15:07. Показов 2891. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, у меня такой вопрос: допустим в одну форму я добавил несколько элементов WebBrowser и к каждому из них подсоединил отдельный документ (текст) по определенному порядку. Можно ли добавить 2 кнопки ("Предыдущий" и "Следующий"), чтобы по нажатию например на "Следующий" он переходил именно на тот WebBrowser, который добавлен после активного (который открыт на данный момент)?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.05.2017, 15:07
Ответы с готовыми решениями:

Переход между страницами по нажатию кнопки
В C# только, только начал разбираться и у меня возник вопрос, как мне в C# сделать ссылку на объект. Допустим: есть некая страница...

По нажатию кнопки webBrowser должен получить фокус
По нажатию кнопки webBrowser должен получить фокус. Browser.Focus() срабатывает через раз. Т.е. нажал кнопку один раз - ничего не...

Переход к нажатию кнопки без мышки
Дано: окошко для ввода пользователем текста и кнопка. Нужно: после того, как пользователь ввел текст, он нажимает Enter и происходит...

31
 Аватар для GoodWeather
886 / 588 / 179
Регистрация: 28.02.2017
Сообщений: 2,359
Записей в блоге: 1
01.05.2017, 15:46
Один WebBrowser, при нажатиях кнопок менять документ в нём.
0
0 / 0 / 0
Регистрация: 15.03.2017
Сообщений: 50
01.05.2017, 16:33  [ТС]
Ну вот если у меня в другой форме список всех этих документов с нумерацией, кликаю на любую из них (например на 6), открывается 6ой документ, и как сделать так чтобы при нажатии на кнопку "Следующий", открылся 7ой документ, а при нажатии на "Предыдущий" - 5ый?
0
 Аватар для GoodWeather
886 / 588 / 179
Регистрация: 28.02.2017
Сообщений: 2,359
Записей в блоге: 1
01.05.2017, 19:44
гм. Ну и почему список хранится в каком-то другом месте-то?
Ну ладно, допустим к списку есть какой-то доступ. Просто храните "текущий номер" и "количество номеров".
Исходя из этого сможете менять документ и даже блокировать кнопки когда они достигнут "0" или "макс".
0
0 / 0 / 0
Регистрация: 15.03.2017
Сообщений: 50
01.05.2017, 23:08  [ТС]
не могу найти теорию по этому моменту, не подскажете какие учебники?
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
01.05.2017, 23:54
Цитата Сообщение от willgelm Посмотреть сообщение
Ну вот если у меня в другой форме список всех этих документов с нумерацией, кликаю на любую из них (например на 6), открывается 6ой документ, и как сделать так чтобы при нажатии на кнопку "Следующий", открылся 7ой документ, а при нажатии на "Предыдущий" - 5ый?
покажите код обработчика, который выполняется при "клике" на ваш список
0
0 / 0 / 0
Регистрация: 15.03.2017
Сообщений: 50
02.05.2017, 18:02  [ТС]
Delphi
1
2
3
4
procedure TForm2.Label1Click(Sender: TObject);
begin
Form3.Show;
Form3.WebBrowser1.Navigate(ExtractFilePath(Application.Exename)+'lecture\1.html');
И так на каждую тему. Если я делаю не так, дайте знать, пожалуйста
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
02.05.2017, 22:17
Цитата Сообщение от YuryK Посмотреть сообщение
Ну вот если у меня в другой форме список всех этих документов с нумерацией
И где список? Это похоже, просто метка. И на каждую метку свой LabelХХClick? Все Labl-ы созданы вручную? идут подряд? (т.е. Label1, ..., LabelХХ). Какое имя (ХХ) последней метки? Там точно вызывается ХХ.html ?
0
0 / 0 / 0
Регистрация: 15.03.2017
Сообщений: 50
02.05.2017, 23:06  [ТС]
Ну да, на каждую метку своя процедура (А есть еще какие-нибудь варианты? Напишите если есть, пожалуйста). Да, вручную. По порядку. Всего где-то 30. Да, точно.
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
02.05.2017, 23:36
Например, один общий обработчик

Delphi
1
2
3
4
procedure TForm2.LabelPageClick(Sender: TObject);
begin
  NavigatePage(Copy(Sender.Name, 6, 10));
end
и метод для показа страницы

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm2.NavigatePage(APage: string);
var
   fn: string;
begin
  fn := ExtractFilePath(Application.Exename)+'lecture\' + APage +  '.html';
  if FileExists(fn) then begin
    Form3.CurrentPage := IntToStr(APage); 
    //CurrentPage - поле класса TForm3 
    // от которой можно будет плясать для последовательного перехода
    Form3.Show;
    Form3.WebBrowser1.Navigate(fn);
  end;
Тогда для перехода на следующую страницу нужно выполнить код
Delphi
1
NavigatePage(IntToStr(Inc(Form3.CurrentPage)));
0
0 / 0 / 0
Регистрация: 15.03.2017
Сообщений: 50
03.05.2017, 18:08  [ТС]
Компилятор показывает ошибки:
[Error] Unit2.pas(62): Undeclared identifier: 'Name'
[Error] Unit2.pas(71): Undeclared identifier: 'CurrentPage'
Может через переменные сделать? Или я чего-то не понимаю?
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
03.05.2017, 21:59
Цитата Сообщение от willgelm Посмотреть сообщение
Undeclared identifier: 'Name'
тогда TComponent(SDender).Name
Цитата Сообщение от willgelm Посмотреть сообщение
'CurrentPage'
я об этом разве не сказал? В комментариях кода?
Цитата Сообщение от YuryK Посмотреть сообщение
//CurrentPage - поле класса TForm3
* * // от которой можно будет плясать для последовательного перехода
0
0 / 0 / 0
Регистрация: 15.03.2017
Сообщений: 50
04.05.2017, 08:22  [ТС]
Понял. Form3.CurrentPage := IntToStr(APage), значит тип CurrentPage - string? Если да, то выскакивает ошибка [Error] Unit2.pas(199): There is no overloaded version of 'IntToStr' that can be called with these arguments
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
04.05.2017, 08:33
там StrToInt нужна код на коленке написан, так что ошибки неизбежны.
0
0 / 0 / 0
Регистрация: 15.03.2017
Сообщений: 50
04.05.2017, 10:15  [ТС]
Delphi
1
2
3
4
procedure TForm3.BitBtn2Click(Sender: TObject);
begin
Form2.NavigatePage(IntToStr(Inc(Form3.CurrentPage)));
end;
А здесь?
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
04.05.2017, 10:20
здесь целое Form3.CurrentPage увеличивается на единичку, результат переводится в строку и передается параметром. Вроде все верно
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33369 / 21495 / 8234
Регистрация: 22.10.2011
Сообщений: 36,893
Записей в блоге: 12
04.05.2017, 10:22
А здесь достаточно
Delphi
1
Form2.NavigatePage(IntToStr(Form3.CurrentPage + 1));
, Inc тут не пойдет, это не функция, а процедура, ее нельзя использовать в выражении.
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
04.05.2017, 10:26
точно, опять оконфузился
0
0 / 0 / 0
Регистрация: 15.03.2017
Сообщений: 50
04.05.2017, 15:09  [ТС]
Когда так делаю:
Delphi
1
2
3
4
procedure TForm2.LabelPageClick(Sender: TObject);
begin
  NavigatePage(Copy(Sender.Name, 6, 10));
end
ссылки на Lablах не работают,
а если так (на каждый отдельно):
Delphi
1
2
3
4
5
procedure TForm2.Label1Click(Sender: TObject);
begin
Form3.Show;
Form3.WebBrowser1.Navigate(ExtractFilePath(Application.Exename)+'lecture\1.html');
end;
то работает.
Могу же оставить второй вариант (по отдельности), но метод для показа оставить Ваш?
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
04.05.2017, 15:48
все работает, только у всех Label-ов нужно в качестве обработчика OnClick указать метод LabelPageClick:
Миниатюры
WebBrowser: переход между веббраузерами по нажатию кнопки  
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.05.2017, 15:48
Помогаю со студенческими работами здесь

Treeview, переход по элементам по нажатию кнопки
Здравствуйте! В общем есть кнопка по нажатию которой я перемещаюсь по Treeview: procedure TForm1.SledushClick(Sender: TObject); begin ...

Переход по вкладкам grid по нажатию кнопки
Подскажите как связать вкладки созданные с батонами что бы при нажатии батона менялись вкладки на grid

Treeview, переход по элементам по нажатию кнопки
procedure TForm2.SpeedButton1Click(Sender: TObject); begin treeview1.SetFocus; treeview1.Select(treeview1.Selected.GetPrev); ...

Переход на другую форму по нажатию кнопки
Сразу скажу что на Делфи не могу написать,так как курсовую заставили написать на супер Pascal ABC.NET.В Делфи эта проблема решается кодом...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru