Господа, помогите пожалуйста разобраться, в чем проблема.
В программе одна форма, на ней табконтрол с двумя вкладками. TabPosition - None. Одна вкладка выполняет роль меню, из которой можно перейти во вторую вкладку, куда грузится фрейм.
Если возвращаться в главную вкладку из фрейма через обработку OnKeyUp, то всё норм, без зависаний:
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
var KeyChar: Char; Shift: TShiftState);
begin
if (Key = vkHardwareBack) then
begin
Key := 0;
if (TabControl1.ActiveTab = TabItem1) then
Close
else
TabControl1.ActiveTab := TabItem1;
end;
end;
А если через кнопку внутри фрейма
Form1.TabControl1.ActiveTab := Form1.TabItem1;
то виснет.
Уничтожаю фрейм так:
procedure TForm1.TabControl1Change(Sender: TObject);
begin
if (TabControl1.ActiveTab = TabItem1) then
if (FFrame <> nil) then
begin
FFrame.Parent := nil;
FFrame.DisposeOf;
FFrame := nil;
end;
end;
Вопрос
Major
Господа, помогите пожалуйста разобраться, в чем проблема.
В программе одна форма, на ней табконтрол с двумя вкладками. TabPosition - None. Одна вкладка выполняет роль меню, из которой можно перейти во вторую вкладку, куда грузится фрейм.
Если возвращаться в главную вкладку из фрейма через обработку OnKeyUp, то всё норм, без зависаний:
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState); begin if (Key = vkHardwareBack) then begin Key := 0; if (TabControl1.ActiveTab = TabItem1) then Close else TabControl1.ActiveTab := TabItem1; end; end;
А если через кнопку внутри фрейма
Form1.TabControl1.ActiveTab := Form1.TabItem1;
то виснет.
Уничтожаю фрейм так:
procedure TForm1.TabControl1Change(Sender: TObject); begin if (TabControl1.ActiveTab = TabItem1) then if (FFrame <> nil) then begin FFrame.Parent := nil; FFrame.DisposeOf; FFrame := nil; end; end;
Ссылка на комментарий
10 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.