지금 한참 메신저를 만들고 있는데요.
DB에 있는 사용자 정보를 서버에 불러와서 TcxGrid에 보여 주는데요.
서버 TcxGrid에 사용자 상태값을 서버 첫 실행시 추가합니다.
(온라인 :1, 자리비움 :2, 오프라인은 :9) 이런식으로 보여 줍니다.
클라이언트에서 로그인을 하면 잘 접속이 되는데요.
접속 후 클라이언트에서 사용자 상태 변경을 하면 서버의 TcxGrid 가
잘 변경되고 하는데요. 가끔 안보이거나...작게 보이고 합니다.
그 상황에서 다른 클라이언트로 접속로 하면 접속이 안됩니다.
몇일째 삽질 중인데 그이유를 모르겠습니다.
======== 서버에서 상태 변경하는 부분입니다.===========
<!--CodeS-->
procedure TfrmServer.doEmpty(Athread: TIdPeerThread; sBodyData: TStringList);
var
user_id ,user_Empty ,Empty_check: string;
list: TList;
vGrid, i, iRow : Integer;
Client: TClientInfo;
begin
List := IdTCPServer1.Threads.LockList;
user_id := sBodyData[0]; // 변경될 ID값
user_Empty := sBodyData[1]; // 변경될 상태값
iRow := cxGrid1onAir.DataController.FindRecordIndexByText(0,0,user_ID,False, False, True);
if iRow = -1 then
exit;
try
cxGrid1onAir.BeginUpdate;
cxGrid1onAir.DataController.Values[irow,2] := user_Empty;
cxGrid1onAir.EndUpdate;
Empty_check := '110' + ETX + user_id + ETX + user_Empty + ETX;
Client := Pointer(AThread.Data);
Client.UserID := user_id;
for i := 0 to Clientlist.Count - 1 do
begin
if TClientInfo(Clientlist.Items[i]).UserID = Client.UserID then
Continue;
TClientInfo(Clientlist.Items[i]).joblist.Add(Empty_check);
end;
IdTCPServer1.Threads.UnlockList;
except
on e: Exception do
begin
log('doEmpty:iRow[' + InttoStr(iRow)+ ']:' + e.Message ,LOGDATADIRECTORY + '\test.log');
end;
end;
end;
<!--CodeE-->
===================================
뭣미... 퀀텀그리드가 안깔려있다는... ^^;;