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

Вниз

Список окон в MDI приложении в виде кнопок на ToolBar   Найти похожие ветки 

 
smok_red   (2005-03-06 15:52) [0]

Здравствуйте!

 Есть MDI приложение, на главной форме есть toolbar, при создании окна на toolbar создается кнопка с надписью(где надпись это caption открываемой формы)
 Кнопки создаются динамически. как перехватить нафатие на днопку и совершить напиример вывод формы на передний план.

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


 
Gero ©   (2005-03-06 15:57) [1]


> как перехватить нафатие на днопку

Присвоить значение свойству Кнопка.OnClick.
Если, конечно, таковое у нее имеется.

> вывод формы на передний план

TForm.BrightToFront


 
smok_red   (2005-03-06 15:59) [2]

кнопка создается динамически,
я делаю это так!

var
 Form1: TForm1;
 ToolBtn:TRzToolButton;

form4:=Tform4.Create(Application);
form4.Show;
ToolBtn:=TRzToolButton.Create(RzToolbar2);
ToolBtn.Parent:=RzToolbar2;
ToolBtn.Caption:=form4.Caption;


 
MU ©   (2005-03-06 16:13) [3]

Напиример,
при создании кнопки можно написать так:
  TB.Caption := MDIxxxForm.Caption;
  TB.Tag := Integer(MDIxxxForm);
  TB.OnClick := MyOnClick;

procedure MDIMainForm.OnClick(Sender : TObject);
begin
  with Sender as TToolButton do begin
     TCustomForm(Tag).BringToFront;
  end;
end;


 
MU ©   (2005-03-06 16:20) [4]

ивините,
procedure MDIMainForm.MyOnClick(Sender : TObject);


 
smok_red   (2005-03-06 16:34) [5]

все нормально, процедура обработки запускается!
но вот
    with Sender as TToolButton do begin
    TCustomForm(Tag).BringToFront;
неработает (((((
я назначил дочерней форма tag 1
а при TB.Tag := Integer(form4);
в TB.Tag заносится какаето чушь (((


 
smok_red   (2005-03-06 16:38) [6]

Все работает просто замечательно!

Огромное спосибо!!!!


 
smok_red   (2005-03-06 17:26) [7]

у меня еще вопросик на данную тему!

сейчас все работает. Тоесть создается кнопка, при нажатии выводит  нужную форму на передний план!

А вот как отследить что если форма закрыта то и кнопка должна быть удалена!

Заранее спосибо!


 
MU ©   (2005-03-06 17:30) [8]

исправьте
ToolBtn:=TRzToolButton.Create(RzToolbar2);
на
ToolBtn:=TRzToolButton.Create(Form4);


 
smok_red   (2005-03-06 17:33) [9]

ВАУУУУУУ!!!

все просто здорова!!! ОГРОМНОЕ СПОСИБО!


 
smok_red   (2005-03-07 08:35) [10]

Доброе утро всем !

вот и еще один подводный камень  ((((((

может кто подскажет как от него избавится !
есть такой код:
if not Assigned(Form4) then
 begin
   sp_dolg_refrash;
   form4:=Tform4.Create(Application);
   form4.Show;
   ToolBtn:=TToolButton.Create(form4);
   ToolBtn.Parent:=Toolbar1;
   ToolBtn.Caption:=form4.Caption;
   ToolBtn.Hint:="Вывести на передний план "+form4.Caption;
   ToolBtn.Tag := Integer(Form4);
   ToolBtn.OnClick := MYOnClick;
 END;
procedure TForm1.MYOnClick(Sender : TObject);
begin
 with Sender as TToolButton do begin
    TCustomForm(Tag).BringToFront;
 end;
end;

тоесть создаю динамически экземпляр дочерней формы
все гуд. кнопка на toolbar поевляется.

я попытался кодом if not Assigned(Form4) then отрезать повторное создание формы
все работает до момента пока я не создам другую форму.
как только создал, сразу могу снова создать первую, хотя она уже созданна.

плиззз. подскажите , как предотвратить повторное создание форм

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


 
smok_red   (2005-03-07 09:33) [11]

Все получилось!

Получается класная функция:

function ShowMDIChild (const AFormClass: TFormClass): TForm;
var
i: Integer;
begin
Result := nil;
for i := 0 to Application.MainForm.MDIChildCount-1 do
 if Application.MainForm.MDIChildren[i].ClassType = AFormClass then
 begin
   Result := Application.MainForm.MDIChildren[i];
   Result.Show;  //SetWindowPos(MDIChildren[i].Handle, HWND_TOP, 0, 0, 0, 0, SWP_NOSIZE+SWP_NOMOVE);
   break;
 end;
if NOT Assigned(Result) then
begin
 Result := AFormClass.Create(Application);
 ToolBtn:=TToolButton.Create(Result);
 ToolBtn.Parent:=Form1.ToolBar1;
 ToolBtn.Caption:=Result.Caption;
 ToolBtn.Hint:="Вывести на передний план "+Result.Caption;
 ToolBtn.Tag := Integer(Result);
end;
end;

Это на случай если вдруг кому надо!



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

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

Наверх




Память: 0.49 MB
Время: 0.06 c
10-1087300918
max1000
2004-06-15 16:01
2005.03.20
При печати Word а через мою программу выдает ошибку


14-1109416402
boriskb
2005-02-26 14:13
2005.03.20
Вот она - настоящая литература!


4-1107326263
FFF
2005-02-02 09:37
2005.03.20
Top,left


9-1104069951
Brak
2004-12-26 17:05
2005.03.20
Сгдаживание точки в OpenGL


14-1109751261
Gero
2005-03-02 11:14
2005.03.20
Просьба потестировать