Форум: "Основная";
Текущий архив: 2003.10.02;
Скачать: [xml.tar.bz2];
Вниздобавление 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.008 c