Форум: "Начинающим";
Текущий архив: 2007.05.20;
Скачать: [xml.tar.bz2];
ВнизКак закрыть нужную форму? Найти похожие ветки
← →
sergeyst © (2007-05-02 14:21) [0]Привет всем. Есть несколько различных MDI-форм. При создании любой из них на тулбаре в главной форме создается кнопка, при нажатии на которую отображается соотв. окно. Хочу сделать всплывающее меню для этой кнопки с пунктом "Закрыть", но не знаю как сказать кнопке какая форма ей нужна.
Это создание кнопки
procedure CreatePopupForButton(Sender: TSpeedButton; Form: TForm);
var
mi: TMenuItem;
pm: TPopupMenu;
begin
pm := TPopupMenu.Create(Sender);
Sender.PopupMenu := pm;
mi := TMenuItem.Create(pm);
mi.Caption := "Закрыть";
mi.OnClick := CloseF;
pm.Items.Add(mi);
Что здесь можно сделать с Form - я не знаю. Подскажите, плиз.
← →
iXT © (2007-05-02 14:36) [1]Все зависит от того, как ты собрался связывать Окно и кнопку (логически). И как они у тебя описанны.
← →
sergeyst © (2007-05-02 14:45) [2]mi.Tag := Integer(Form); - это связал
procedure CloseF(Sender: TObject);
var
i: Integer;
begin
for i := 0 to Pred(MainForm.MDIChildCount) do
if (Sender as TMenuItem).Tag = Integer(MainForm.MDIChildren[i]) then
begin
MainForm.MDIChildren[i].Close;
Exit;
end;
end;
это закрыл, но компилятор говорит:
[Error] LibraryUnit.pas(528): Incompatible types: "method pointer and regular procedure"
, а если сделать
...
mi.OnClick = MyObject.CloseF;
...
procedure MyObject.CloseF..., то:
Incompatible types: "TNotifyEvent" and "Procedure"
Чего надо изменить?
← →
sergeyst © (2007-05-02 14:45) [3]
> И как они у тебя описанны.
То есть?
← →
iXT © (2007-05-02 15:52) [4]Т.Е. я не увидел, как ты создаешь батоны, но это уже второе. Первое, определись, как у тебя определенный батон соответствует определенной форме
← →
sergeyst © (2007-05-02 15:54) [5]Ой, MyObject был классом, а не объектом. Теперь работает. Спасибо.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.05.20;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.042 c