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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.05.2007, 22:58   #1
Shade
Пользователь
 
Регистрация: 05.05.2007
Сообщений: 10
По умолчанию закрытие вкладки в TTabControl

Всем привет, пардон что пересоздал тему в другом разделе, в начале написал в "помощь студентам" но туда мало кто заходит, 1 ответ был но не тот. Нужен код закрытия вкладки в элементе TTabControl. этот код будет вызываться при правом клике на корешке вкладки и выборе "закрыть" из контекстного меню... ну и соответственно закрsвать эту вкладку. Оч нужно, просто срочно, без этого дальше программа не двигается( помогите кто знает
Shade вне форума Ответить с цитированием
Старый 10.05.2007, 23:27   #2
Shuraken
Форумчанин
 
Аватар для Shuraken
 
Регистрация: 16.04.2007
Сообщений: 298
По умолчанию

TabControl1.Tabs.Delete(TabControl1 .TabIndex);
только так.
Не надо ничего усложнять. Все достаточно тривиально.
Shuraken вне форума Ответить с цитированием
Старый 11.05.2007, 01:55   #3
Shade
Пользователь
 
Регистрация: 05.05.2007
Сообщений: 10
По умолчанию

Во, работает, благодарствуйте) и еще вот такой вопрос: как известно элементы принадлежащие элементу TTabControl на каждой закладке одинаковы, меняется только их содержимое... так вот, как сделать чтоб при переключении вкладок содержимое менялось?
применительно к моей проге это так: у мя есть эти вкладки и на них есть элемент WebBrowser, и к примеру у меня открыто 2 вкладки, но как только я загружаю в WebBrowser страничку, она появляется сразу в 2 закладках, воть. Как мне это избежать?
Shade вне форума Ответить с цитированием
Старый 11.05.2007, 02:36   #4
Shuraken
Форумчанин
 
Аватар для Shuraken
 
Регистрация: 16.04.2007
Сообщений: 298
По умолчанию

Может проще использовать TTabPages? Там таких заморочек не возникает. А на данный случай... Самый простой способ, это накидать WebBrowser-ов по количеству закладок друг на друга и при смене закладки делать видимым только один из них, а все остальные скрывать. Код примерно такой, у себя я на edit-ах пробовал.

procedure TForm1.TabControl1Change(Sender: TObject);
begin
case TabControl1.TabIndex of
0: begin
ed1.Visible := true;
ed2.Visible := false;
ed3.Visible := false;
end;
1: begin
ed1.Visible := false;
ed2.Visible := true;
ed3.Visible := false;
end;
2: begin
ed1.Visible := false;
ed2.Visible := false;
ed3.Visible := true;
end;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
TabControl1Change(nil);
end;
Не надо ничего усложнять. Все достаточно тривиально.
Shuraken вне форума Ответить с цитированием
Старый 12.05.2007, 00:39   #5
Shade
Пользователь
 
Регистрация: 05.05.2007
Сообщений: 10
По умолчанию

да, ты прав, так будет легче, но! Это у меня дипломный проект, случай с визибл-невизибл не прокатит, ну тоесть прокатит конечно - работать будет, но это уже будет "-" к разработке, и к оценке. Тем более что закладки то можно закрывать и открывать. Также тут не целесообразно использовать PageControl - опять же по причине того, что это диплом, да и был косяк с ним, я по началу именно PageControl использовал - когда создаются вкладки, нужно создавать и элемент WebBrowser - а он нигодяй не хочет создаваться способом которым создаются обычные элементы, воть. Вообще по поводу всего этого мне мой научный руководитель объяснил, что и как можно использовать и какие +/- это дает, так что нужно именно то, что я сказал(
Shade вне форума Ответить с цитированием
Старый 12.05.2007, 12:11   #6
Shuraken
Форумчанин
 
Аватар для Shuraken
 
Регистрация: 16.04.2007
Сообщений: 298
По умолчанию

Ну тогда так.
На TabControl кидаем Edit в который прописываем адрес, по которому будем переходить и кнопку, по нажатию на которую переходим, а в модуле пишем такой код:

type
TForm1 = class(TForm)
....
private
{ Private declarations }
FWebUrl: array of string; //здесь мы будем запоминать адреса
...
end;

procedure TForm1.FormCreate(Sender: TObject);
var
i: integer;
begin
SetLength(FWebUrl, TabControl1.Tabs.Count);
for i := Low(FWebUrl) to High(FWebUrl) do
FWebUrl[i] := 'about:blank'; //обнулим таким образом
TabControl1Change(nil);
end;

procedure TForm1.btGoToUrlClick(Sender: TObject);
begin
wb1.Navigate(edUrl.Text); //навигация
end;

procedure TForm1.TabControl1Change(Sender: TObject);
begin
// ПОСЛЕ изменения закладки переходим на нужный адрес
edUrl.Text := FWebUrl[TabControl1.TabIndex];
btGoToUrlClick(btGoToUrl);
end;

procedure TForm1.TabControl1Changing(Sender: TObject;
var AllowChange: Boolean);
begin
//ДО изменения закладки сохраняем адрес.
FWebUrl[TabControl1.TabIndex] := edUrl.Text;
end;

Примерно так.
Не надо ничего усложнять. Все достаточно тривиально.
Shuraken вне форума Ответить с цитированием
Старый 13.05.2007, 00:30   #7
Shade
Пользователь
 
Регистрация: 05.05.2007
Сообщений: 10
По умолчанию

ок, спасибо, правда это другой немного подход, у меня строка адреса одна на все вкладки, но и так тоже можно попробовать - завтра сделаю, а сейчас спать)
Shade вне форума Ответить с цитированием
Старый 17.05.2007, 23:20   #8
Shade
Пользователь
 
Регистрация: 05.05.2007
Сообщений: 10
По умолчанию

угу, интересно, только вот при переключении на закладку где уже загружена страница, приходится заново ее загружать(точнее заново ее загружает приложение)... насколько я понял, сделать по-другому при таком подходе не реально( Завтра попробую договориться с науч. руководителем об использовании TPageControl'а. Сразу назревает вопрос - как при динамическом создании вкладки опять же динамически создать на ней компонент TWebBrowser - сколько не пытался, создать по-простому ее не получается... Точнее создать так как создается большинство компонентов
Shade вне форума Ответить с цитированием
Старый 18.05.2007, 01:47   #9
Shuraken
Форумчанин
 
Аватар для Shuraken
 
Регистрация: 16.04.2007
Сообщений: 298
По умолчанию

Компонент TWebBrowser предназначен для навигации.И при таком подходе, который я тебе показал, можно не загружать каждый раз новую страницу. Для этого, как ты правильно подметил надо каждый раз при создании новой закладки создавать новый браузер и загружать в него страницу, а предыдущие браузеры скрывать, но это не подход, поэтому я и предложил именно такой метод - сохранять адреса в памяти (поскольку TWebBrowser не умеет работать с закэшированными страницами).
Не надо ничего усложнять. Все достаточно тривиально.
Shuraken вне форума Ответить с цитированием
Старый 19.05.2007, 03:02   #10
Shade
Пользователь
 
Регистрация: 05.05.2007
Сообщений: 10
По умолчанию

Что-то я тебя немного не понял. Сначала ты говоришь что можно каждый раз не загружать страницу, а потом говоришь что он не умеет работать с кешем... Правильно, не умеет, поэтому при том подходе который ты показал при переходе на страницу где у нас уже загружена страница(прошу прощения за тавтологию, думаю ты понял о чем я), браузер вновь запрашивает адрес из массива сохраненных и поэтому страница каждый рах перезакачивается(перезагружается). Это приминительно к подходу который ты мне показал и к элементу TTabControl.
Теперь о TPageControl'e.
Цитата:
Для этого, как ты правильно подметил надо каждый раз при создании новой закладки создавать новый браузер и загружать в него страницу, а предыдущие браузеры скрывать, но это не подход
Почему?? Когда я говорил что нужно создавать TwebBrowser я имел ввиду что его нужно создавать на новой закладке в TPageControl'e
, и скрывать здесь самому ничего не приходится т.к. оно скрывается само при переключении закладки. Вопрос в том, как создать этот элемент? создать обычным путем как к примеру создается TEdit и большинство других визуальных компонентов у меня не получилось. Вот. Поправь пожалуйста если я что то не так сказал или чего то не понял
Shade вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
закрытие вкладки в TTabControl Shade Помощь студентам 3 06.02.2009 13:10
Создание вкладки. фЁдОр Общие вопросы Delphi 10 11.02.2008 16:27
Вкладки в делфи7 Никита1984 Компоненты Delphi 3 09.12.2007 17:33
Как совместить Ttabcontrol и tpagecontrol ? UnD)eaD)Snake Общие вопросы Delphi 6 28.07.2007 14:23
Вкладки Каштанка Компоненты Delphi 1 02.05.2007 11:01