Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
14-4047
Красная майка
2003-09-04 10:41
2003.10.02
И снова MMP (Moscow Mastak Party ;)!!! Встреча Мастаков в Москве!


14-4048
Layner
2003-09-15 15:06
2003.10.02
1C 7.7+SQLserv-клиент не может загрузить программу, желтая


7-4151
Германн
2003-07-20 02:14
2003.10.02
Какой драйвер нужен в XP


1-3909
SergeyM
2003-09-20 21:16
2003.10.02
Оператор if


14-4063
usdl
2003-09-14 11:24
2003.10.02
ВСЕМ,кто пишет программы самостоятельно, предлагаю объединиться.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский