|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
10.05.2007, 22:58 | #1 |
Пользователь
Регистрация: 05.05.2007
Сообщений: 10
|
закрытие вкладки в TTabControl
Всем привет, пардон что пересоздал тему в другом разделе, в начале написал в "помощь студентам" но туда мало кто заходит, 1 ответ был но не тот. Нужен код закрытия вкладки в элементе TTabControl. этот код будет вызываться при правом клике на корешке вкладки и выборе "закрыть" из контекстного меню... ну и соответственно закрsвать эту вкладку. Оч нужно, просто срочно, без этого дальше программа не двигается( помогите кто знает
|
10.05.2007, 23:27 | #2 |
Форумчанин
Регистрация: 16.04.2007
Сообщений: 298
|
TabControl1.Tabs.Delete(TabControl1 .TabIndex);
только так.
Не надо ничего усложнять. Все достаточно тривиально.
|
11.05.2007, 01:55 | #3 |
Пользователь
Регистрация: 05.05.2007
Сообщений: 10
|
Во, работает, благодарствуйте) и еще вот такой вопрос: как известно элементы принадлежащие элементу TTabControl на каждой закладке одинаковы, меняется только их содержимое... так вот, как сделать чтоб при переключении вкладок содержимое менялось?
применительно к моей проге это так: у мя есть эти вкладки и на них есть элемент WebBrowser, и к примеру у меня открыто 2 вкладки, но как только я загружаю в WebBrowser страничку, она появляется сразу в 2 закладках, воть. Как мне это избежать? |
11.05.2007, 02:36 | #4 |
Форумчанин
Регистрация: 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;
Не надо ничего усложнять. Все достаточно тривиально.
|
12.05.2007, 00:39 | #5 |
Пользователь
Регистрация: 05.05.2007
Сообщений: 10
|
да, ты прав, так будет легче, но! Это у меня дипломный проект, случай с визибл-невизибл не прокатит, ну тоесть прокатит конечно - работать будет, но это уже будет "-" к разработке, и к оценке. Тем более что закладки то можно закрывать и открывать. Также тут не целесообразно использовать PageControl - опять же по причине того, что это диплом, да и был косяк с ним, я по началу именно PageControl использовал - когда создаются вкладки, нужно создавать и элемент WebBrowser - а он нигодяй не хочет создаваться способом которым создаются обычные элементы, воть. Вообще по поводу всего этого мне мой научный руководитель объяснил, что и как можно использовать и какие +/- это дает, так что нужно именно то, что я сказал(
|
12.05.2007, 12:11 | #6 |
Форумчанин
Регистрация: 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; Примерно так.
Не надо ничего усложнять. Все достаточно тривиально.
|
13.05.2007, 00:30 | #7 |
Пользователь
Регистрация: 05.05.2007
Сообщений: 10
|
ок, спасибо, правда это другой немного подход, у меня строка адреса одна на все вкладки, но и так тоже можно попробовать - завтра сделаю, а сейчас спать)
|
17.05.2007, 23:20 | #8 |
Пользователь
Регистрация: 05.05.2007
Сообщений: 10
|
угу, интересно, только вот при переключении на закладку где уже загружена страница, приходится заново ее загружать(точнее заново ее загружает приложение)... насколько я понял, сделать по-другому при таком подходе не реально( Завтра попробую договориться с науч. руководителем об использовании TPageControl'а. Сразу назревает вопрос - как при динамическом создании вкладки опять же динамически создать на ней компонент TWebBrowser - сколько не пытался, создать по-простому ее не получается... Точнее создать так как создается большинство компонентов
|
18.05.2007, 01:47 | #9 |
Форумчанин
Регистрация: 16.04.2007
Сообщений: 298
|
Компонент TWebBrowser предназначен для навигации.И при таком подходе, который я тебе показал, можно не загружать каждый раз новую страницу. Для этого, как ты правильно подметил надо каждый раз при создании новой закладки создавать новый браузер и загружать в него страницу, а предыдущие браузеры скрывать, но это не подход, поэтому я и предложил именно такой метод - сохранять адреса в памяти (поскольку TWebBrowser не умеет работать с закэшированными страницами).
Не надо ничего усложнять. Все достаточно тривиально.
|
19.05.2007, 03:02 | #10 | |
Пользователь
Регистрация: 05.05.2007
Сообщений: 10
|
Что-то я тебя немного не понял. Сначала ты говоришь что можно каждый раз не загружать страницу, а потом говоришь что он не умеет работать с кешем... Правильно, не умеет, поэтому при том подходе который ты показал при переходе на страницу где у нас уже загружена страница(прошу прощения за тавтологию, думаю ты понял о чем я), браузер вновь запрашивает адрес из массива сохраненных и поэтому страница каждый рах перезакачивается(перезагружается). Это приминительно к подходу который ты мне показал и к элементу TTabControl.
Теперь о TPageControl'e. Цитата:
, и скрывать здесь самому ничего не приходится т.к. оно скрывается само при переключении закладки. Вопрос в том, как создать этот элемент? создать обычным путем как к примеру создается TEdit и большинство других визуальных компонентов у меня не получилось. Вот. Поправь пожалуйста если я что то не так сказал или чего то не понял |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
закрытие вкладки в 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 |