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

Вниз

SendMessage при разных вызовах форм   Найти похожие ветки 

 
Цукор5   (2006-02-13 13:14) [0]

Unit2

const _Mes=WM_USER+3;
...
 private
   procedure Mess(var Msg:TMessage);message _Mes;  
 public
...
procedure TForm2.Mess(var Msg: TMessage);
begin
 Windows.Beep(800,200);
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
 SendMessage(Form2.Handle,WM_USER+3,0,0); //тут жмем
end;


Если "вызывать" Form2 так :

 //в *.dpr Application.CreateForm(TForm2, Form2);
 procedure TForm1.Button1Click(Sender: TObject);
 begin
   Form2.ShowModal;
 end;


то все работает,а если так :


 //в *.dpr НЕТ Application.CreateForm(TForm2, Form2);
 var Frm:TForm2;
begin
 Frm:=TForm2.Create(Self);
 try
   Frm.ShowModal;
 finally
   Frm.Close;
   Frm.Free;
 end;
end;

то будет AV.С чем это связано и как от этого избавиться?


 
Digitman ©   (2006-02-13 13:16) [1]


> Если "вызывать" Form2 так :
>
>  //в *.dpr Application.CreateForm(TForm2, Form2);
>  procedure TForm1.Button1Click


???


 
Цукор5   (2006-02-13 13:55) [2]

Первый вариант,РАБОЧИЙ :

//
program Project1;
uses
 Forms,
 Unit1 in "Unit1.pas" {Form1},
 Unit2 in "Unit2.pas" {Form2};
{$R *.RES}
begin
 Application.Initialize;
 Application.CreateForm(TForm1, Form1);
 Application.CreateForm(TForm2, Form2);
 Application.Run;
end.

//
unit Unit1;
interface
uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
 public
 end;

var  Form1: TForm1;

implementation
 uses Unit2;
{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
 Form2.ShowModal;
end;
end.

//
unit Unit2;
interface
uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls;

const _Mes=WM_USER+3;

type
 TForm2 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
    procedure Mess(var Msg:TMessage);message _Mes;
 public
 end;

var Form2: TForm2;
implementation
{$R *.DFM}

procedure TForm2.Button1Click(Sender: TObject);Жмем тут
begin
 SendMessage(Form2.Handle,WM_USER+3,0,0);
end;

procedure TForm2.Mess(var Msg: TMessage);
begin
 Windows.Beep(800,200);
end;
end.


Второй вариант,НЕРАБОЧИЙ :

//
program Project1;
uses
 Forms,
 Unit1 in "Unit1.pas" {Form1},
 Unit2 in "Unit2.pas" {Form2};
{$R *.RES}
begin
 Application.Initialize;
 Application.CreateForm(TForm1, Form1);
 Application.Run;
end.

//
unit Unit1;
interface
uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
 public
 end;

var  Form1: TForm1;

implementation
 uses Unit2;
{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
 var Frm:TForm2;
begin
 Frm:=TForm2.Create(Self);
 try
   Frm.ShowModal;
 finally
   Frm.Close;
   Frm.Free;
 end;
end;
end.

//
unit Unit2;
interface
uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls;

const _Mes=WM_USER+3;

type
 TForm2 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
    procedure Mess(var Msg:TMessage);message _Mes;
 public
 end;

var Form2: TForm2;
implementation
{$R *.DFM}

procedure TForm2.Button1Click(Sender: TObject); // жмем и AV
begin
 SendMessage(Form2.Handle,WM_USER+3,0,0);
end;

procedure TForm2.Mess(var Msg: TMessage);
begin
 Windows.Beep(800,200);
end;
end.


P.S. Насколько я понял,проблема с Form2.Handle,которого нет.


 
evvcom ©   (2006-02-13 14:03) [3]


> Насколько я понял,проблема с Form2.Handle,которого нет

Проблема с Form2. Ее нет. Отсюда и AV. Нафиг тебе
> SendMessage(Form2.Handle,WM_USER+3,0,0);
? Зачем привязываться к Form2 переменной? Напиши просто
SendMessage(Handle,WM_USER+3,0,0);
и, как говорят, будет тебе Щастье!


 
Цукор5   (2006-02-13 18:49) [4]

2 evvcom
>, как говорят, будет тебе Щастье!
Ага,спасибо! ОНО наступило ;)



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

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

Наверх




Память: 0.48 MB
Время: 0.033 c
2-1145420179
Rubey
2006-04-19 08:16
2006.05.07
Централизованная БД для сбора информации


15-1144997405
syte_ser78
2006-04-14 10:50
2006.05.07
вопрос по работе со временем.


15-1144829483
boriskb
2006-04-12 12:11
2006.05.07
Как вам американский "Солярис"?


15-1145023037
iamdanil
2006-04-14 17:57
2006.05.07
Глюк винды (фотка)


15-1145130006
homm
2006-04-15 23:40
2006.05.07
Мой первый проект на PHP :)