메시지 서비스 프로그램을 할려고 합니다.
가령 FormMain폼의 리스트박스에 사용자 ID가 있고 그 사용자 ID를 클릭할경우 메시지 송수진폼을 뜨게 할려고 합니다. 메시지폼을 FormMessage라고 하면 FormMesage폼을 기본적으로 디자인해놓고... 리스트박스에서 사용자ID를 클릭시 그 사용자 ID별로 FormMessage폼을 띄워야하는데 어떻게 하는지 몰라서 고수님께 도움을 청합니다. 그리고 어떤 사용자ID를 클릭하였을때 그 사용자 ID의 메세지폼이 떠 있지 않으면 새롭게 생성하고, 만일 그 사용자ID의 메세지폼이 떠 있을경우에는 그 폼에 포커스를 줄려고 합니다.
그리고 메인폼을 종료시 여러개 떠있는 메세지폼과 다른 폼들을 한꺼번에 종료할려고 하는데 어떻게 해야하는지 답변좀 올려주세요..제발..
> 메시지 서비스 프로그램을 할려고 합니다.
>
> 가령 FormMain폼의 리스트박스에 사용자 ID가 있고 그 사용자 ID를 클릭할경우 메시지 송수진폼을 뜨게 할려고 합니다. 메시지폼을 FormMessage라고 하면 FormMesage폼을 기본적으로 디자인해놓고... 리스트박스에서 사용자ID를 클릭시 그 사용자 ID별로 FormMessage폼을 띄워야하는데 어떻게 하는지 몰라서 고수님께 도움을 청합니다. 그리고 어떤 사용자ID를 클릭하였을때 그 사용자 ID의 메세지폼이 떠 있지 않으면 새롭게 생성하고, 만일 그 사용자ID의 메세지폼이 떠 있을경우에는 그 폼에 포커스를 줄려고 합니다.
>
> 그리고 메인폼을 종료시 여러개 떠있는 메세지폼과 다른 폼들을 한꺼번에 종료할려고 하는데 어떻게 해야하는지 답변좀 올려주세요..제발..
>
>
1. 메인폼에 TList를 하나 선언하시고 FormCreate에서 Create (formClose에 반드시 해제)
2. 리스트에서 아이디 선택하면 TList에서 같은 아이디가 있나 확인
3. 없다면 송수신 폼을 Create하고 리스트에 추가하고 show
4. 송수신 폼에 FormClose에 Action:= caFree; 를 추가하고 (자동 제거)
메인 폼에 TList에서 제거하는 펑션 Call
5. 만약 같은 아이디가 존재하면 Show하거나, 안되면 ?? Activate해야 될지도???
메인폼이 사라지면 연관된 폼은 자동해제되니 걱정하지 마시길...
ex)
///////////////////
TFrmMain.FormCreate(...
begin
inherited;
lstChil := TList.Create
end;
///////////////////
TFrmMain.FormClose ....
begin
lstChild.Free;
inherited;
end;
/// 리스트에서 선택시..
TFrmMain.어쩌구 저쩌구 펑션
var
frm: TFrmChild;
i: integer;
begin
for i:=0 to (lstChild.Count-1) do
begin
frm := TFrmChild(lstChild.Items[i]);
if(frm.strID=선택된 id) then
begin
frm.Show; // 혹은 재주껏 위로 올리시길.. 안먹을 수도...
exit;
end;
end;
// 새폼 만들기
frm := TFrmChild.Create(Self);
frm.strID := 아까선택한 ID;
AddChild(frm);
frm.Show;
end;
//////////////////////
TFrmMain.AddChild(var frm: TFrmChild);
begin
lstChild.Add(frm);
end;
//////////////////////
TFrmMain.RemoveChild(var frm: TFrmChild); // 반드시 var로 선언
var
nCount, i: integer;
begin
lstChild.Remove(frm); // 확인해보시길 안해봐서 될지???
end;
/// 폼의 public에 다음 추가
strID: string;
//////////////
TFrmChild.FormClose ....
begin
FrmMain.RemoveChild(Self);
Action := caFree;
inherited;
end;
너무 자세한것 같군요.. 이렇게 자세하게 설명해주면 실력이 늘지않는답니다.
나머지 문제는 매뉴얼을 참고해서 해결하시고요. 이거 대충 온라인상 만든것이라
안돌아 갈지도 모른답니다..