![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Доброго времени суток, есть проболема с привязкой MDI формы с [D7, WinXP]
Delphin © (2004-06-09 18:09:00)Проблема с привязкой MDI формы с кнопкой из массива
есть код:
var
Form1: TForm1;
Child: TForm;
But:Array[1..99]of TButton;
I:Integer;
procedure TForm1.MyButClick(Sender:TObject);
var
A:Integer;
begin
for A:=0 to 99 do
if Sender = But[A] then Begin
Form1.MDIChildren[A].SetFocus;
End;
End;
procedure TForm1.Button2Click(Sender: TObject);
begin
Inc(I);
Child := TForm2.Create(Application);
Child.Caption := 'Caption'+IntToStr(i);
But[i]:=TButton.Create(Self);
But[i].Parent:=Panel3;
But[i].Name:='Name'+IntToStr(i);;
But[i].Caption:='Caption'+IntToStr(i);;
But[i].top:=But[i-1].top+26;
But[i].Tag:=I;
But[i].OnClick:=MyButClick;
End;
procedure TForm1.FormCreate(Sender: TObject);
begin
Inc(I);
But[i]:=TButton.Create(Self);
But[i].Parent:=Panel3;
But[i].Name:='Name'+IntToStr(i);
But[i].Caption:='Name'+IntToStr(i);
But[i].Tag:=I;
But[i].OnClick:=MyButClick;
end;
Кнопки и MDI формы создаются вообще без проблем, проблема в следующем: при вызове процедуры MyButClick;, она срабатывает, но не корректно, т.е выделяется не нужное в данный момент окно.
Кто знает, в чём может быть проблема ?
И есть ли другой способ определить какая кнопка из массива была нажата ?
Заранее благодарен
Delphin (2004-06-09 23:18:00) [1]Всем спасибо я сам разобрался. Я сделал проще, я просто сравниваю заголовки.
procedure TForm1.MyButClick(Sender:TObject);
var
A:Integer;
begin
A:=1;
IF MDIChildren[A].Caption=TButton(Sender).Caption Then
MDIChildren[a].BringToFront
Else
Repeat
IF MDIChildren[A].Caption<>TButton(Sender).Caption
Then INC(A);
Until
(MDIChildren[A].Caption=TButton(Sender).Caption)OR(A>MDIChildCount);
IF MDIChildren[A].Caption=TButton(Sender).Caption Then
MDIChildren[a].BringToFront;
A:=0;
End;
Delphin (2004-06-09 18:37:00) [2]procedure TForm1.MyButClick(Sender:TObject);
begin
MDIChildren[TButton(Sender).Tag].BringToFront;
End;
Всё ровно работает не корректно
Семен Сорокин (2004-06-09 18:19:00) [3]Delphin © (09.06.04 18:16) [2]
мне нужно узнать какая кнопка была нажата и выделить окно, с такимже номером
задавай кнопке номер в Tag при создании, при нажатии определяй Tag у Sender'а, а окно выделяй методом BringToFront.
Delphin (2004-06-09 18:16:00) [4]мне нужно узнать какая кнопка была нажата и выделить окно, с такимже номером
Семен Сорокин (2004-06-09 18:13:00) [5]бред какой-то
procedure TForm1.MyButClick(Sender:TObject);
begin
TForm(TButton(Sender).Parent).BringToFront
end;