Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];

Вниз

Список окон в 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.041 c
1-1110181047
Dyusha
2005-03-07 10:37
2005.03.20
Работа с Microsoft Agent 2.0


14-1109824602
begin...end
2005-03-03 07:36
2005.03.20
С Днём рождения! 3 марта


6-1105529569
Diaskhan
2005-01-12 14:32
2005.03.20
Как написать клиент отправки почты под ИНДИ


6-1106219568
Star
2005-01-20 14:12
2005.03.20
Обработка ошибок IdHTTP


14-1109744546
OneFragLeft
2005-03-02 09:22
2005.03.20
Найти и обезвредить.





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