Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.02.18;
Скачать: CL | DM;

Вниз

Уход модальных форм на задний план   Найти похожие ветки 

 
Sam Stone ©   (2006-12-25 19:10) [0]

Немного корявенькое название, но все же ) Периодически вылезает такой глюк - модальная формочка или ShowMessage "проваливается" за форму. Возникает предположительно при больших тормозах компа в общем (пример: нажатие на кнопку б1 на форме Ф1 вызывает модальное окно Ф2. Нажимаем на кнопку и тут же тыкаем по Ф1 и при наличии тормозов модальная форма может уйти "назад", в результате Ф1 задисейблена и ничего сделать нельзя), и если программа чего-нибудь много считает :). Вытащить форму/сообщение можно альт-табом на другую программу - по возвращении модал.форма вылезает наверх. Собсна как бы такой гадости избежать?


 
Правильный Вася   (2006-12-26 15:27) [1]

у меня та же фигня
как ее бороть?


 
novill ©   (2006-12-26 16:30) [2]

+1
похоже никто не знает (


 
Sam Stone ©   (2006-12-26 18:46) [3]

коллективным разумом на работе решили, что это багоглюка вцл ) Но лечить все-таки надо )


 
ors_archangel ©   (2006-12-26 19:32) [4]

Не получилось повторить, но может

 enabled := false;
 showmessage("modal");
 enabled := true;

поможет, скажите, если да


 
EvChul ©   (2006-12-27 09:55) [5]

Вдобавок, похоже, что в момент глюка, поверх этих форм должно находится окно другого приложения. Глюк редкий и трудновоспроизводимый.

Кац предлагает сдаться (с)


 
Darvin ©   (2006-12-27 10:59) [6]

Иногда бывает такое. Обычно перезапуск программы спасает.


 
EvChul ©   (2006-12-27 11:39) [7]

> [6] Darvin ©   (27.12.06 10:59)

Зачем перезапуск? Alt + Tab и все дела.


 
cr3at0r   (2006-12-27 14:46) [8]

Не проверял, но думается должно помочь


procedure TfrmModal.FormShow(Sender: TObject);
begin
   BringToFront;
end;  


 
Правильный Вася   (2006-12-27 15:24) [9]

cr3at0r   (27.12.06 14:46) [8]
И где ты это вопхнешь в MessageDlg?


 
Sam Stone ©   (2006-12-27 18:45) [10]

> [7] EvChul ©   (27.12.06 11:39)

Ага...
Заказчик: а че это форма недоступна/где диалоговое окошко?
Программист: да это глюк, модальная форма провалилась, вы альт-табнитесь на другое окно, потом обратно - и вам будет счастье.


 
Yozch1   (2006-12-27 22:02) [11]

+1
Мдас,  тоже хотелось бы просечь в чем-таки фишка....


 
easy ©   (2006-12-28 12:42) [12]

воспроизведение глюка
unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;
const
WM_MSGBOX  = WM_USER + 1;
type
 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
   procedure msgBoxShow(var msg: TMessage); message WM_MSGBOX;
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 PostMessage(handle, WM_MSGBOX, 0, 0);
 showmessage("modal");
end;

procedure TForm1.msgBoxShow(var msg: TMessage);
begin
 SetForegroundWindow(handle);
end;

end.


 
easy ©   (2006-12-28 12:43) [13]

возможно, так вылечится -
procedure TForm1.msgBoxShow(var msg: TMessage);
var
 msgbHandle: HWND;
begin
 msgbHandle := GetActiveWindow;
 if msgbHandle <> 0 then
   SetForegroundWindow(msgbHandle);
end;


 
Sam Stone ©   (2006-12-28 14:04) [14]

> [13] easy ©   (28.12.06 12:43)

это получается надо делать PostMessage перед ShowMessage?



Страницы: 1 вся ветка

Текущий архив: 2007.02.18;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.047 c
1-1167063016
Sam Stone
2006-12-25 19:10
2007.02.18
Уход модальных форм на задний план


3-1164347417
Ольга
2006-11-24 08:50
2007.02.18
Дополнительный запрос в всплывающем меню


15-1169869363
IMHO
2007-01-27 06:42
2007.02.18
Слово о клавиатуре


15-1168099871
Алексей С.
2007-01-06 19:11
2007.02.18
Алгоритм проведения соревнования по олимпийскаой системе.


3-1164220973
TauRus1
2006-11-22 21:42
2007.02.18
мультивыбор в dbgride