Anthonio Chaw
Member
Sorry,i have many questions recently.
I'm now developing a network program using
DOA(Hotel Management System,PMS),in my program some forms need dynamic refresh its data(such as room status),so i use delphi's socket control to notify other computers runing same program when i update the room
status.
//Code in main form
procedure Tfrm_MainForm.ClientSocketRead...
begin
case NetWorkMessage of
SWM_REFRESH
ostUserMessage(WM_REFRESH);
//SWM_REFRESH & WM_REFRESH are defined by myself
end;
end;
procedure Tfrm_MainForm.PostUserMessage(Msg:integer);
var i:integer;
begin
for i:=0 to MDIChildCount-1 do
begin
PostMessage(MDIChildren.Handle, Msg, 0,0);
end;
end;
//Code in MDIChildForm
procedure Tfrm_Room.WMREFRESHREV (var Message: TMessage);
begin
ods_Room.Close;
ods_Room.Open;
end;
but the ods_room does not really refreshed,
so i insert a messagebox to debug:
procedure Tfrm_Room.WMREFRESHREV (var Message: TMessage);
begin
showmessage('Refresh Start');
ods_Room.Close;
ods_Room.Open;
end;
when i close the messagebox,then it works;
dataset has been refreshed;
or i change a way:
procedure Tfrm_Room.WMREFRESHREV (var Message: TMessage);
begin
Timer1.Enabled:=True;
end;
procedure Tfrm_Room.Timer1Timer(Sender: TObject);
begin
ods_room.Close;
ods_room.Open;
Timer1.Enabled:=False;
end;
it works again.
I wanna know why, thanks.
Best regards,
Anthonio Chaw
I'm now developing a network program using
DOA(Hotel Management System,PMS),in my program some forms need dynamic refresh its data(such as room status),so i use delphi's socket control to notify other computers runing same program when i update the room
status.
//Code in main form
procedure Tfrm_MainForm.ClientSocketRead...
begin
case NetWorkMessage of
SWM_REFRESH

//SWM_REFRESH & WM_REFRESH are defined by myself
end;
end;
procedure Tfrm_MainForm.PostUserMessage(Msg:integer);
var i:integer;
begin
for i:=0 to MDIChildCount-1 do
begin
PostMessage(MDIChildren.Handle, Msg, 0,0);
end;
end;
//Code in MDIChildForm
procedure Tfrm_Room.WMREFRESHREV (var Message: TMessage);
begin
ods_Room.Close;
ods_Room.Open;
end;
but the ods_room does not really refreshed,
so i insert a messagebox to debug:
procedure Tfrm_Room.WMREFRESHREV (var Message: TMessage);
begin
showmessage('Refresh Start');
ods_Room.Close;
ods_Room.Open;
end;
when i close the messagebox,then it works;
dataset has been refreshed;
or i change a way:
procedure Tfrm_Room.WMREFRESHREV (var Message: TMessage);
begin
Timer1.Enabled:=True;
end;
procedure Tfrm_Room.Timer1Timer(Sender: TObject);
begin
ods_room.Close;
ods_room.Open;
Timer1.Enabled:=False;
end;
it works again.
I wanna know why, thanks.
Best regards,
Anthonio Chaw