Главная страница
    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.85 MB
Время: 0.14 c
14-4114
-=[SDA]=-
2003-09-12 07:07
2003.10.02
!!! Как вырубить звуковуху !


1-3894
Goga
2003-09-18 13:46
2003.10.02
Дублирование объекта


14-4113
panov
2003-09-13 13:46
2003.10.02
Еще без слов-)


3-3705
Юлия
2003-09-14 22:53
2003.10.02
Вопрос по installshield


11-3812
Igit
2003-01-19 17:10
2003.10.02
Загрузка картинки в Imageshow





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский