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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.09.2012, 14:41   #1
admin-one
Пользователь
 
Регистрация: 14.07.2012
Сообщений: 31
По умолчанию крестик на вкладке в page control

Я по совету специалистов этого форума поменял простой контрол на альпа контрол там нашел функцию для добавления крестика на вкладки и все хорошо но когда закрываю вкладку она закрывается но при этом сразу новая появляется .....как это исправить ? я понял что дело в коде так как я динамко создаю вкладки может что тут нужно исправить ?
Код:
procedure TfrmMyBrowser.sPageControlChange(Sender: TObject);
var
  CurrentWB: TWebbrowser; tab:TsTabSheet; wl,wb: TWebBrowser;
begin
  // Set Toolbutton State Back Forward
  ToolbtnBack.Enabled := False;
  ToolBtnForward.Enabled := False;

  with sPageControl do
    if ActivePage.ControlCount > 0 then
      if ActivePage.Controls[0] is TWebbrowser then
      begin
        CurrentWB := TWebbrowser(ActivePage.Controls[0]);
        WB_SetFocus(CurrentWB);
        ToolbtnBack.Enabled := CurrentWB.FNavBack;
        ToolBtnForward.Enabled := CurrentWB.FNavForward;
        edURL.Text := CurrentWB.LocationURL;
        Self.Caption := TWebbrowser(CurrentWB).FTitle;
       
      end;

  if sPageControl.ActivePage.Caption = 'Document Info' then
    PageControlInfosChange(nil);

    
     if sPageControl.TabIndex=sPageControl.PageCount-1 then begin
    tab:=TsTabSheet.Create(sPageControl);
    tab.PageControl:=sPageControl;
    tab.Caption:=blank;
    tab.PageIndex:=sPageControl.PageCount-2;
    sPageControl.TabIndex:=tab.PageIndex;
    wl:=TWebBrowser(WebBrowser1);
    wb:=TWebBrowser.Create(tab);
    with TWinControl(wb) do begin
      parent:=tab; // веб браузер активизация
      // загрузка параметров
      visible:=true; width:=wl.Width; height:=wl.Height; left:=wl.Left; top:=wl.Top;
      Align:=wl.Align;
        with TFrame5.Create(tab) do begin
   Align:=alClient;
   Parent:=tab;
   Show;

  end; 
end;
  end;
end;
заранее спасибо за ответы )

Последний раз редактировалось Stilet; 16.09.2012 в 14:50.
admin-one вне форума Ответить с цитированием
Старый 16.09.2012, 17:52   #2
admin-one
Пользователь
 
Регистрация: 14.07.2012
Сообщений: 31
По умолчанию

что никто не знает ? хоть кто то помогите исправить
admin-one вне форума Ответить с цитированием
Старый 16.09.2012, 18:04   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я точно не знаю, поскольку сторонние компоненты не использую.
Однако могу тебе кое-что посоветовать
в обработчике клика по крестику пропиши
Код:
sPageControl.tag:=-1;
А в этом коде
Код:
if (sPageControl.TabIndex=sPageControl.PageCount-1) and(sPageControl.tag<>-1;) then begin
sPageControl.tag:=0;
...
Т.е. поставить флаг на закрытие.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.09.2012, 18:16   #4
admin-one
Пользователь
 
Регистрация: 14.07.2012
Сообщений: 31
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
в обработчике клика по крестику пропиши
Код:
sPageControl.tag:=-1;
а как мне сделать клик по крестику ? там такой функции нет ! в spagecontrol есть такая функция showclosebtns ее надо поставить в true тогда появится крестик.......
admin-one вне форума Ответить с цитированием
Старый 16.09.2012, 18:38   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
там такой функции нет !
Что неужели нет ничего такого в событиях?
Ану поищи вниматочнее
Вся проблема в том, что после закрытия срабатывает событие смены вкладки, соответственно твой код.
Ладно предложу по другому: Запоминай кол-во вкладок в sPageControl.tag, а в событии так:
Код:
if (sPageControl.TabIndex=sPageControl.PageCount-1) and(sPageControl.PageCount<>sPageControl.tag;) then begin
sPageControl.tag:=sPageControl.PageCount;
...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.09.2012, 20:05   #6
admin-one
Пользователь
 
Регистрация: 14.07.2012
Сообщений: 31
По умолчанию

так вкладка удаляется но новая не появляется ........или я что то сделал не так
admin-one вне форума Ответить с цитированием
Старый 16.09.2012, 20:14   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
так вкладка удаляется но новая не появляется
и
Цитата:
но при этом сразу новая появляется .....как это исправить ?
Это психологическая рекурсивная атака на моск форумчан?
Учти - у многих от такого стоит на телепаторах капча, так что но пассаран.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.09.2012, 16:57   #8
admin-one
Пользователь
 
Регистрация: 14.07.2012
Сообщений: 31
По умолчанию

я тебя что то не понял ........смотри при обычно моем коде при закрытии вкладка закрывается и приэтом на ее месте появляеся новоя ( тоесть срабатывает мой код ) потом ты мне посоветовал поменять
if sPageControl.TabIndex=sPageControl. PageCount-1 then begin
на
if (sPageControl.TabIndex=sPageControl .PageCount-1) and(sPageControl.PageCount<>sPageCo ntrol.tag then begin
sPageControl.tag:=sPageControl.Page Count;
(если я правельно понял ) так вкладка закрывается но потом создать новую не получается
как сделать чтоб при закрытии вкладки она закрывалась но при этом чтоб я мог и создовать новые

Последний раз редактировалось admin-one; 17.09.2012 в 17:55.
admin-one вне форума Ответить с цитированием
Старый 17.09.2012, 17:55   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
но потом создать новую не получается
Ну так поставь точку прерывания на то событие и посмотри почему не создается.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.09.2012, 19:58   #10
admin-one
Пользователь
 
Регистрация: 14.07.2012
Сообщений: 31
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ну так поставь точку прерывания на то событие
а как поставить точку прерывания ? у меня добавляются вкладки до тех пор пока я не закрою 1 а потом уже не добавляются ......

тебе может со стороны показаться что за м*дак не понимает такого но прошу объяснить что и как сделать

объясни пожалуйста

Последний раз редактировалось Stilet; 17.09.2012 в 21:52.
admin-one вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Крестик закрытия программы skanku C++ Builder 1 26.05.2012 08:12
Нарисовать крестик egorzenit Общие вопросы Delphi 3 03.01.2012 00:38
Закодить крестик в форме (Delphi) SL1M_DOGG Помощь студентам 3 15.12.2011 17:26
Отключение реакции на Page UP и Page Down для определенной формы TimRus Microsoft Office Access 2 06.06.2010 00:10
Рисуем крестик (Delphi 7) alxd Помощь студентам 4 09.09.2009 17:46