![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Переход на формы по закладкам [D6, WinXP]
CyBeR © (2004-07-06 04:49:00)Добрый день! Кто нить знает как перемещаться по формам с помощью закладок. Имеется куча модальных окон, надо, чтобы при открытии формы создавалась закладка (Tabset), а при закрытии формы она ес--но удалялась.
TohaNik (2004-07-08 09:25:00) [1]>CyBeR © (07.07.04 23:13) [16]
Сколько нужно пользователю столько и создается.
Ест-но активизируются иначе зачем это нужно.:)
>Кстати когда у тебя заполнено все пространство тулбара, размер кнопок уменьшатся???
Красоту еще не наводил - проверяю пока чтоб работало без проблем.
Ну а так думаю над двумя вариантами:
-Либо уменьшать размер кнопок(кстати SpeedButton плохо подходит-нет выравнивания и кепшены обрезаются по краям хотя Hint на весь кепшен, но всеравно не красиво)
- Или когда не помещаются как-то в два ряда создавать
TUser (2004-07-08 07:53:00) [2]
> суть в том что они создаются, но переключения не происходит,
> смотри [10]
Сделай проще
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
i:=length(Form2);
setLength(Form2,i+1);
Form2[i]:=TForm2.create(Application);
Form2[i].Caption:='Form2 ('+inttostr(i)+')';
TabSet1.Tabs.Add(inttostr(i));
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Cur:=-1;
end;
procedure TForm1.TabSet1Click(Sender: TObject);
var i:integer;
begin
i:=TabSet1.TabIndex;
if i <> Cur then
if (i<length(Form2)) and (i>=0) then begin
Cur:=i;
for i:=0 to length(Form2)-1 do
Form2[i].Hide;
Form2[Cur].Show;
Form2[Cur].SetFocus;
end;
end;
Form2 - это здесь дин. массив.
CyBeR (2004-07-07 23:13:00) [3]TohaNik ©
форм много создаешь???
при нажатии те формы активизируются???
ща попробую, посмотрим
Просто я хотел именно с Табсетом
Кстати когда у тебя заполнено все пространство тулбара, размер кнопок уменьшатся???
TohaNik (2004-07-07 14:48:00) [4]Я сделал так...
на OnCreate MDI формы на главной форме создаю ToolBar-е
кнопку с именем = имени, кепшеном = кепшену и Tag = Handle создаваемой формы
В OnClick кнопки проверяю на всяк случай существует-ли форма
если да то BringWindowToTop(сюда таг нажатой кнопки)
А на FormDestroy уничтожаю кнопку с именем формы
Второй день работает - пока без проблем.
CyBeR (2004-07-07 14:34:00) [5]суть в том что они создаются, но переключения не происходит, смотри [10]
TUser (2004-07-07 14:30:00) [6]А тебе что надо? Создай закладку для каждой формы и переключайся м. ними.
CyBeR (2004-07-07 14:22:00) [7]ну что, никто не поставит на путь истиный??? ;-)
CyBeR (2004-07-07 10:05:00) [8]2 TUser ©
>[5] точно работает.
что работает-то, закладки создаются???
CyBeR (2004-07-07 10:03:00) [9]Проверил я дома - эффект тот же.
Вот код, который я использую:
onCreate формы:
......onChange Tabset-a:
procedure TGroupsForm.FormCreate(Sender: TObject);
begin
with ParentFM.TabSet do begin
Tabs.AddObject('nevermind',GroupsForm);
end;
ParentFM.TabSet.RePaint; //приходится прорисовывать, иначе закладка просто не появляется//
......
if (Sender is TTabset) then......
with (Sender as TTabset) do
TForm(TabSet.Tabs.Objects[TabSet.TabIndex]).Show;
Короче, при попытке перехода он есс-но пишетTabindex is out of bounds(-1)
TUser (2004-07-07 09:38:00) [10][5] точно работает.
CyBeR (2004-07-07 00:53:00) [11]я делал так, на событие OnCreate формы.
Закладка не добавляется.
На всякий случай:
формы удалены из списка автосоздаваемых.
Когда создаешь еще одну форму (та же форма, тока капшн другой) появляются две закладки, одна пустая, одна с Caption второй формы.
Может надо делать так??: MainTabset.Tabs.AddObject('bla-bla',Form1).
Плохо проверить не могу делфа не установлена. Но я точно помню, так как долго с этим фозился и спрашивал уже.
CyBeR (2004-07-06 23:13:00) [12]Спасибо, дома попробую.
Кщд (2004-07-06 07:24:00) [13]tcChildren: TTabControl;
Sender: TForm;
так добавляем
tcChildren.Tabs.AddObject(Sender.Caption{tvNavigate.Selected.Parent.Text}, Sender);
так показываем
на OnChange TTabControl:
TForm(tcChildren.Tabs.Objects[tcChildren.TabIndex]).BringToFront;
TUser (2004-07-06 07:06:00) [14]Не работал, честно говоря, с этим компонентом ни разу, но в справке сказано
One tab is created for each string.
Соотв. при создании форму - создавай новую строчку, при закрытии формы - удаляй ее. Зачем тут торри?
CyBeR (2004-07-06 05:46:00) [15]че-то не нашел нихрена
CyBeR (2004-07-06 05:39:00) [16]понял, не дурак ;-) смотрю
CyBeR (2004-07-06 05:37:00) [17]2 CyberSpy88 извини, эт где???
CyberSpy88 (2004-07-06 05:03:00) [18]Посмотри на torry