Форум: "Основная";
Текущий архив: 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.037 c