Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Переход на формы по закладкам [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 формы:
......
procedure TGroupsForm.FormCreate(Sender: TObject);

begin
with ParentFM.TabSet do begin
Tabs.AddObject('nevermind',GroupsForm);
end;
ParentFM.TabSet.RePaint; //приходится прорисовывать, иначе закладка просто не появляется//
onChange Tabset-a:
......
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


Наверх

Титульная страница Поиск, карта сайта Написать письмо