Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.02;
Скачать: CL | DM;

Вниз

добавление ToolButton во время исполнения программы   Найти похожие ветки 

 
AndrewPo ©   (2003-09-17 11:42) [0]

Задача такая... МДИ-приложение... При выборе пункта меню нужно создать и показать дочернюю форму и добавить кнопочку ToolButton на ToolBar (как Панель задач Виндовз :)

Пишу так:

procedure TForm1.N3Click(Sender: TObject);
var
TB1: TToolButton;
begin
N3.Enabled:=False;
Application.CreateForm(TForm2, Form2);
Form2.Show;
TB1:=TToolButton.Create(Self);
TB1.Parent:=ToolBar1;
TB1.Caption:=Form2.Caption;
TB1.Show;
end;


это работает.

Теперь сам вопрос: Как добавить событие на эту сделанную кнопочку TB1? Чтобы при нажатии на нее одна из дочерних форм выходила на передний план.

Заранее благодарен


 
AndrewPo ©   (2003-09-17 12:02) [1]

дополнение:

как добавить событие TB1Click


 
dataMaster ©   (2003-09-17 12:12) [2]

http://closed.narod.ru/k/2/1760.html


 
KSergey ©   (2003-09-17 12:16) [3]

http://www.delphikingdom.com/helloworld/runtime_comp.htm

И все статьи из

http://www.delphikingdom.com/asp/section.asp?ID=16

к обязательному прочтению!!!!


 
AndrewPo ©   (2003-09-17 13:03) [4]

Спасибо за ссылки, почитал :)

(пояснение: у меня для каждой дочерней формы создается кнопка TBxxx, где xxx - номер)

В разделе private класса TForm1 описал процедуру procedure TBsClick(Sender: TObject);, которая должна подвинуть на передний план дочернюю форму, которой соответствует кнопка TB
При создании кнопки присваиваю ей событие onClick:
TB2.OnClick:=TBsClick;
Подскажите, пожалуйста, как можно выдвинуть дочернюю форму на передний план?

вот так у меня не работает:

procedure TForm1.TBsClick(Sender: TObject);
begin
TForm(Sender).BringToFront;
end;

я так понял, что TForm(Sender) обращается к кнопочке.


 
ZEE ©   (2003-09-17 13:11) [5]

>AndrewPo © (17.09.03 13:03) [4]
>procedure TForm1.TBsClick(Sender: TObject);
>begin
> TForm(Sender).BringToFront;
>end;
да, в этом случае Sender - это кнопка (ну или какого там типа у тебя TBs)
а надо найти именно форму которую ты хочешь "выдвинуть"...
а как - это тебе лучше знать - этого кода ж недостаточно чтоб понять что у тебя там творится...


 
KSergey ©   (2003-09-17 13:23) [6]

Для вывода на передний план MDI Child окна достаточно у него вызвать Show.


 
Игорь Шевченко ©   (2003-09-17 14:13) [7]

KSergey © (17.09.03 13:23)

Недостаточно :)


 
AndrewPo ©   (2003-09-18 12:32) [8]


{процедура создания дочерней формы}
procedure TForm1.N3Click(Sender: TObject);
{при выборе соответствующего пункта меню ...}
var
TB1: TToolButton;
begin
N3.Enabled:=False;
Application.CreateForm(TForm2, Form2);
Form2.Show;
{... создаю форму...}
TB1:=TToolButton.Create(ToolBar1);
TB1.Parent:=ToolBar1;
TB1.Caption:=Form2.Caption;
TB1.OnClick:=TBsClick;
TB1.Show;
{... и соответствующую ей кнопочку}
end;

{событие для клика на кнопочку}
procedure TForm1.TBsClick(Sender: TObject);
begin
TForm(Sender).BringToFront;
end;


аналогичным образом создаются еще 2-3 формы и кнопки для них.

Потом я хочу, чтоб при клике на кнопочку соответствующая для нее форма выдвигалась вперед.
Как ее найти - фиг его знает... я хотел передать ее в процедуру TBsClick, но не знаю как...

У дочерних форм и соответствующих кнопочек Caption одинаковый. Вот.


 
Song ©   (2003-09-18 12:39) [9]

Классно.. а как это вы кнопочку приводите к TForm ?


 
ZEE ©   (2003-09-18 12:53) [10]

а если при создании кнопки добавить такую строку
TB1.Tag=MDIChildCount;
и при нажатии кнопки
TForm(MDIChildren[TToolButton(Sender).Tag-1]).BringToFront;


 
AndrewPo ©   (2003-09-18 13:32) [11]

Всем спасибо за советы и ответы.

Заработало вот так:
при создании каждой формы к ней в Tag заносим ее номер ( MDIChildCount-1). В Tag к кнопочке заносим то же самое:
procedure TForm1.N3Click(Sender: TObject);
var
TB1: TToolButton;
begin
N3.Enabled:=False;
Application.CreateForm(TForm2, Form2);
Form2.Tag:=MDIChildCount-1;
Form2.Show;
TB1:=TToolButton.Create(ToolBar1);
TB1.Parent:=ToolBar1;
TB1.Caption:=Form2.Caption;
TB1.Tag:=MDIChildCount-1;
TB1.OnClick:=TBsClick;
TB1.Show;
end;


обработчик клика для кнопочки:
procedure TForm1.TBsClick(Sender: TObject);
var
i: Integer;
begin
for i:=0 to MDIChildCount-1 do
if TForm(MDIChildren[i]).Tag = TToolButton(Sender).Tag then
begin
TForm(MDIChildren[i]).BringToFront;
Break;
end;
end;


 
AndrewPo ©   (2003-09-18 16:54) [12]

Во прикол!

А почему во время исполнения программы не видны метки, положенные на главную МДИ-форму?

И почему Баттоны и Эдиты, положенные на ту же главную МДИ-форму, находятся ПОВЕРХ дочерних форм?

Подскажите, как с этим бороться?



Страницы: 1 вся ветка

Текущий архив: 2003.10.02;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.026 c
3-3770
andrey__
2003-09-11 17:16
2003.10.02
Одно из полей в сумме равно Null


3-3710
Gorn
2003-09-14 17:43
2003.10.02
Как удалить выделенные записи?


3-3755
Wild
2003-09-11 17:57
2003.10.02
RecNo в SQL запросе


14-4087
raper
2003-09-14 17:11
2003.10.02
Простите но мой вопрос касаеться винды


14-4056
aga
2003-09-13 10:28
2003.10.02
Linux Mandrake 9.1(9.2)