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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.02.2014, 09:36   #1
zvo
 
Регистрация: 16.02.2014
Сообщений: 3
По умолчанию Как правильно закрывать вкладку TTabSheet с TWebBrowser?

Здравствуйте! Я делаю свой веб-браузер (на основе TWebBrowser). И пытаюсь в нём сделать вкладки (с помощью TPageControl). Делаю вот так:
Код:
procedure TForm1.NewTab(Title: String);
var
 ts: TTabSheet;
 wb: TWebBrowser;
begin
 ts := TTabSheet.Create(PageControl);
 ts.Visible := True;
 ts.Caption := Title;
 ts.PageControl := PageControl;
 PageControl.ActivePage := ts;
 wb := TWebBrowser.Create(Self);
 TWinControl(wb).Parent := ts;
 wb.Align := alClient;
 wb.OnNewWindow2 := WebBrowser1NewWindow2;
 wb.OnProgressChange := WebBrowser1ProgressChange;
 ts.Tag := Integer(wb);
end;

procedure TForm1.WebBrowser1NewWindow2(Sender: TObject;
  var ppDisp: IDispatch; var Cancel: WordBool);
begin
 NewTab('Вкладка');
 ppDisp := TWebBrowser(PageControl.ActivePage.Tag).DefaultDispatch;
end;
Но у меня не получается закрыть вкладку. Делаю вот так:
Код:
procedure TForm1.CloseTabClick(Sender: TObject);
begin
 if PageControl.ActivePageIndex > 0 then
  begin
   if PageControl.ActivePage.ControlCount > 0 then
    if PageControl.ActivePage.Controls[0] is TWebBrowser then
    begin
    (TWebBrowser(PageControl.ActivePage.Controls[0])).Free;
    WebBrowser1 := nil;
    PageControl.ActivePage.Free;
    end;
  end;
end;
Но это закрывает только активную вкладку. Скажите пожалуйста, как сделать, чтобы при клике правой кнопкой мыши по вкладке (я использую TPopupMenu с единственный пунктом) закрывалась именно выбранная вкладка, а не активная.
zvo вне форума Ответить с цитированием
Старый 16.02.2014, 12:30   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Код:
procedure TForm1.PageControl1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var i: Integer;
begin
  if (Button=mbRight) and (PageControl1.PageCount>1) then begin
    i:=PageControl1.IndexOfTabAt(X,Y);
    PageControl1.Pages[i].Free;
  end;
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.02.2014, 13:46   #3
zvo
 
Регистрация: 16.02.2014
Сообщений: 3
По умолчанию

Аватар, спасибо Вам большое! Вот этот код заработал!
zvo вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TWebBrowser переход по ссылке на другую вкладку Pcrepair Общие вопросы Delphi 2 08.11.2013 15:49
Как правильно закрывать сокет? Wild_klas Общие вопросы по Java, Java SE, Kotlin 1 14.03.2013 03:03
Как правильно парсить с TWebBrowser? Проблема с отображением. kojiger Общие вопросы Delphi 0 03.05.2012 07:14
Как закрывать форму с активным idTCPServer'ом TwiX Работа с сетью в Delphi 1 21.03.2010 20:45
Как изменить размер выделеного текста в twebbrowser правильно pervii Мультимедиа в Delphi 0 08.02.2010 09:09