안녕하세요 고수님들...
우선 제가 올린 질문을 열어봐 주셔서 무척 감사합니다.
사설이 길면 짜증나겠죠... 바로 본론으로 들어가겠습니다.
우리가 흔히 잘짠 프로그램이다. 라고 말하는 프로그래밍 기법을 조금은 구체적으로 알고 싶습니다.
어떤 기능이 특별해서 잘짰다기 보다는 데이터들을 주고 받는 방법 클래스의 활용법등 실전에서 보다 깔끔하게 작성하는 방법을 알고 싶습니다.
물론 이 질문에는 정답이 없겠죠...
그래서 고수님들의 많은 조언을 부탁드립니다.
좀더 구체적으로 질문을 드리면...
명함관리 프로그램을 만든다고 가정할때, (데이터베이스가 아님)
한사람의 정보는
이름, 성별, 전화번호, 주소
폼1에서 입력된 사람들의 리스트를 보여주고(리스트는 스트링 그리드로 이름과 전화번호만보여줌), 특정 한사람을 더블클릭하면 그사람의 상세정보(한사람에 대한 모든정보)를 보여준다고 했을때 상세정보인 폼2에 데이터를 어떻게 보내나요?
여기서 초보인 제가 몇가지를 생각해 보기를...
1> 폼1의 더블클릭 이벤트에서 폼2를 생성하고 폼2에 각 컴포넌트에 정보를 대입한후 ShowModal, ModalResult가 mrOk이면 폼2의 각 정보를 폼1에서 관리하는 곳으로 다시 대입하고 폼2를 프리한다.
코딩으로하면 이렇게 되겠죠..
폼2 := T폼2.Create(Self);
폼2.edt이름.Text := 이름;
폼2.rdo남성.Checked := 성벌 = 남성;
....
if 폼2.ShowModal = mrOk then begin
이름 := 폼2.edt이름.Text;
성별 := 폼2.rdo남성.Checked;
...
end;
폼2.Free;
2> 각 사람들의 정보를 구조체로 만들어서 데이터를 관리하고, 버블클릭 이벤트에서 폼2를 생성하고 Execute함수를 만들어 선택한 사람의 정보를 구조체로 넘기고 폼2에서 받은 구조체 정보를 폼2의 각 컴포넌트에 대입, 수정후 OK버튼을 클릭하면, 폼2에서 다시 구조체로 변경된 데이터를 채워넣는다. 물론 이때 Execute함수에서 사용하는 구조체의 변수는 var로 선언해야 겠죠...
코딩으로 옮기면
폼2 := 폼2.Create(Self);
if 폼2.Execute(한사람정보) then begin
변경된 데이터 반영
end;
----------폼2에서는--------
function 폼2.Execute(var Info:한사람정보): Integer;
begin
edt이름.Text := Info.이름;
rdo남성.Checked := Info.성별;
...
Result := Self.ShowModal;
if Result = mrOk then begin
Info.이름 := edt이름.Text;
Info.성벌 := rdo남성.Checked;
...
end;
3> 2번과 유사하나 구조체를 넘기지 않고 구조체의 포인터만 넘겨서 처리...
4> 기타...
너무 장황하죠? 이방법 저방법 사용해 보는데, 어떤게 좋은건지, 다른사람들은 어떻게 코딩하는지 알수가 없어요... 대부분의 샘플은 1번을 사용하던데...
또하나
만일 폼2에서 성별정보를 표현할때 라디오 버튼 2개를 사용해서 남성, 여성을 표현한다고 했을때, 걍 남성.Checked := True; 여성.Check := False로 하는게 좋은지 아님
Sex(^^;)라는 프로퍼티를 만들어서 폼2.Sex := 남성 이라고 했을때. SetSex에서 관련된 인터페이스 설정을 해주는 것이 좋은지...
후자의 방법으로 했을때 폼 크레이트에서 하면 문제가 있긴 하던데...
음...
우선 급한대로 이 두가지만이라도 가르쳐 주십시오...
국내 프로그래머들을 위해 고수님들의 많은 관심 부탁드립니다. ^^;