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

Вниз

Как программно закрыть MessageBox?   Найти похожие ветки 

 
Sharik_212   (2003-08-04 15:49) [0]

Собственно, и весь вопрос. Спасибо.


 
KDS ©   (2003-08-04 16:25) [1]

procedure Kill_ChatSoft;
var AppIGA:THandle;
begin
AppIGA:=FindWindow("класс_формы","заголовок_формы"); //
if (AppIGA>0) then PostMessage(AppIGA,$0012,0,0); // :-))
end;


 
Echelon ©   (2003-08-04 16:47) [2]

Однако возникает вопрос, как вызвать эту процедуру ,ведь
MesageBox - модальный диалог?


 
Palladin ©   (2003-08-04 17:12) [3]

однако наверно в соседнем потоке/процессе


 
KDS ©   (2003-08-04 17:17) [4]

по таймеру!
Если юзерок тормозит 5 минут,
то сделать выбор за него: ответить ОК или ob и закрыть


 
Sharik_212   (2003-08-04 17:25) [5]

А как нажать на енту ОК?


 
Palladin ©   (2003-08-04 17:26) [6]

у тебя как со зрением?


 
Sharik_212   (2003-08-04 17:55) [7]

Вообще-то я сюда пришел не на прием к офтальмологу. Если знаешь как нажать - подскажи, нет не надо ехидничать (это для Palladin)


 
Ученик ©   (2003-08-04 21:12) [8]

Не MessageBox, но очень близко

type
TAnswerTimer = class(TTimer)
private
FAnswerDefault : Word;
FAnswerDelay : Word;
FDelayLabel : TLabel;
procedure DoTimer(Sender : TObject);
public
constructor Create(AOwner : TComponent;
AAnswerDefault,
AAnswerDelay : Word;
ADelayLabel : TLabel{$IFDEF WIN32} = NIL{$ENDIF}); {$IFDEF WIN32} reintroduce; {$ENDIF}
end;

constructor TAnswerTimer.Create;
begin
inherited Create(AOwner);
FAnswerDefault := AAnswerDefault;
FAnswerDelay := AAnswerDelay;
if ADelayLabel = NIL then
with TForm(AOwner) do begin
FDelayLabel := TLabel.Create(AOwner);
FDelayLabel.AutoSize := False;
FDelayLabel.Alignment := taRightJustify;
FDelayLabel.SetBounds(Width - 30, Height - 40, 20, 20);
FDelayLabel.Parent := TForm(AOwner);
FDelayLabel.Caption := IntToStr(FAnswerDelay)
end
else
FDelayLabel := ADelayLabel;
OnTimer := DoTimer;
end;

procedure TAnswerTimer.DoTimer(Sender : TObject);
begin
Dec(FAnswerDelay);
if FAnswerDelay <= 0 then
TForm(Owner).ModalResult := FAnswerDefault
else
FDelayLabel.Caption := IntToStr(FAnswerDelay)
end;

function MessageDlgWithTimer(const Msg: string;
DlgType: TMsgDlgType;
Buttons: TMsgDlgButtons;
AnswerDefault,
AnswerDelay : Word): Word;
var
MsgDlg : TForm;
begin
MsgDlg := CreateMessageDialog(Msg, DlgType, Buttons);
try
( MsgDlg, AnswerDefault, AnswerDelay, nil) Не MessageBox, но очень близко

type
TAnswerTimer = class(TTimer)
private
FAnswerDefault : Word;
FAnswerDelay : Word;
FDelayLabel : TLabel;
procedure DoTimer(Sender : TObject);
public
constructor Create(AOwner : TComponent;
AAnswerDefault,
AAnswerDelay : Word;
ADelayLabel : TLabel{$IFDEF WIN32} = NIL{$ENDIF}); {$IFDEF WIN32} reintroduce; {$ENDIF}
end;

constructor TAnswerTimer.Create;
begin
inherited Create(AOwner);
FAnswerDefault := AAnswerDefault;
FAnswerDelay := AAnswerDelay;
if ADelayLabel = NIL then
with TForm(AOwner) do begin
FDelayLabel := TLabel.Create(AOwner);
FDelayLabel.AutoSize := False;
FDelayLabel.Alignment := taRightJustify;
FDelayLabel.SetBounds(Width - 30, Height - 40, 20, 20);
FDelayLabel.Parent := TForm(AOwner);
FDelayLabel.Caption := IntToStr(FAnswerDelay)
end
else
FDelayLabel := ADelayLabel;
OnTimer := DoTimer;
end;

procedure TAnswerTimer.DoTimer(Sender : TObject);
begin
Dec(FAnswerDelay);
if FAnswerDelay <= 0 then
TForm(Owner).ModalResult := FAnswerDefault
else
FDelayLabel.Caption := IntToStr(FAnswerDelay)
end;

function MessageDlgWithTimer(const Msg: string;
DlgType: TMsgDlgType;
Buttons: TMsgDlgButtons;
AnswerDefault,
AnswerDelay : Word): Word;
var
MsgDlg : TForm;
begin
MsgDlg := CreateMessageDialog(Msg, DlgType, Buttons);
try
TAnswerTimer.Create(MsgDlg, AnswerDefault, AnswerDelay, nil);
Result := MsgDlg.ShowModal
finally
MsgDlg.Free
end
end;


 
Sharik_212   (2003-08-04 22:15) [9]

Ок, спасибо. Последний вопрос, чего подставлять в качестве аргумента AnswerDefault?


 
Ученик ©   (2003-08-04 22:16) [10]

>Sharik_212 (04.08.03 22:15)
То, что нужно ответить, если пользователь не выбирает сам
mrYes, mrNo, mrOK и т.д.


 
Sharik_212   (2003-08-04 22:19) [11]

Ок, спасибо еще раз.


 
Sharik_212   (2003-08-04 22:34) [12]

Все класс, только не "нажимает". Лейбл никак не хочет декрементироваться.


 
Ученик ©   (2003-08-04 22:46) [13]

А так работает ?

procedure TForm1.Button1Click(Sender: TObject);
begin
if MessageDlgWithTimer("Test Test Test Test Test", mtConfirmation, [mbYes, mbNo], mrYes, 10) = mrYes then
( "Yes") А так работает ?

procedure TForm1.Button1Click(Sender: TObject);
begin
if MessageDlgWithTimer("Test Test Test Test Test", mtConfirmation, [mbYes, mbNo], mrYes, 10) = mrYes then
ShowMessage("Yes")
end;



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

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

Наверх




Память: 0.49 MB
Время: 0.008 c
14-58407
hga
2002-12-14 12:54
2003.08.18
Proxies


14-58391
Kocmoc
2003-08-04 14:47
2003.08.18
Сортировка StringGrid


14-58480
Владий
2003-07-23 16:00
2003.08.18
Как внести рассчитанное значение?...


14-58428
IBSN
2003-08-01 16:01
2003.08.18
ctrl+alt+delete или OnExit


14-58457
KPY
2003-08-04 08:52
2003.08.18
Сколько надо времени чтобы выучить английский?