Q&A

  • 일반적인 프로그램 화면을 보면..
제가 알고자 하는 것은
일반적으로 4GL 프로그램을 보면....메인메뉴가 제일위에 있고 그 아래에는 툴바로..입력/수정/삭제/조회...
같은 버튼이 있습니다..

그리고 메인메뉴에서...하나의 폼을 열어서...조회하고자 하거나..입력/수정/삭제 하고자 하면..메인메뉴의 툴바에 있는 버튼을
이용해서...합니다..
즉 다른 폼을 열어도...메인메뉴에 있는 버튼으로 해결합니다..


어떻게 이버튼으로 해당폼을 인식하고 조회/입력/수정/삭제 가능한지...통 감이 오지 않네요..

어떻게 구현해야 하나요..조그만한 힌트라고 부탁드립니다...초보라...

감솨합니다.
5  COMMENTS
  • Profile
    cdrd 2010.10.05 23:55
    프레임으로 입력/수정/삭제/조회 버튼을 만들어서 MDIChild 폼에서 동적생성해서 사용하는 방법은 어떤가요?
  • Profile
    이승규 2010.10.05 23:56
    mdi 폼에서 만든걸 말씀하신것 같네요~
    제가 작업 한건뎅~ 참고하세요
    <!--CodeS-->
    procedure TfrmMain.buttonExecute(Sender: TObject);
    begin
    Case TAction(Sender).Tag of
    100:Begin
    //검색

    If Self.ActiveMDIChild.Name = 'frmInsa' Then
    Begin
    If gf_Program_chk(gv_User_id, 'frmInsa' ,'Search') = True Then
    frmInsa.Un_Search;
    End

    Else If Self.ActiveMDIChild.Name = 'frmkongsabook' Then
    Begin
    If gf_Program_chk(gv_User_id, 'frmkongsabook' ,'Search') = True Then
    frmkongsabook.Un_Search ;
    End;

    End;
    200:Begin
    //입력
    If Self.ActiveMDIChild.Name = 'frmInsa' Then
    Begin
    If gf_Program_chk(gv_User_id, 'frmInsa' ,'Input') = True Then
    frmInsa.Un_Input;
    End
    Else If Self.ActiveMDIChild.Name = 'frmkongsabook' Then
    Begin
    If gf_Program_chk(gv_User_id, 'frmkongsabook' ,'Input') = True Then
    frmkongsabook.Un_Input ;
    End;

    End;
    300:Begin
    //저장
    If Self.ActiveMDIChild.Name = 'frmInsa' Then
    Begin
    If gf_Program_chk(gv_User_id, 'frmInsa' ,'Save') = True Then
    frmInsa.Un_Save;
    End
    Else If Self.ActiveMDIChild.Name = 'frmkongsabook' Then
    Begin
    If gf_Program_chk(gv_User_id, 'frmkongsabook' ,'Save') = True Then
    frmkongsabook.Un_Save ;
    End;

    End;
    400:Begin
    //삭제
    If Self.ActiveMDIChild.Name = 'frmInsa' Then
    Begin
    If gf_Program_chk(gv_User_id, 'frmInsa' ,'Delete') = True Then
    frmInsa.Un_Delete;
    End
    Else If Self.ActiveMDIChild.Name = 'frmkongsabook' Then
    Begin
    If gf_Program_chk(gv_User_id, 'frmkongsabook' ,'Delete') = True Then
    frmkongsabook.Un_Delete ;
    End;

    End;
    600:Begin
    //인쇄
    If Self.ActiveMDIChild.Name = 'frmInsa' Then
    Begin
    If gf_Program_chk(gv_User_id, 'frmInsa' ,'Print') = True Then
    frmInsa.Un_Print;
    End
    Else If Self.ActiveMDIChild.Name = 'frmkongsabook' Then
    Begin
    If gf_Program_chk(gv_User_id, 'frmkongsabook' ,'Print') = True Then
    frmkongsabook.Un_Print ;
    End;

    End;
    900:Begin
    //종료
    if Self.MDIChildCount > 0 then
    Begin
    Self.ActiveMDIChild.Close;
    End
    else
    Begin
    nMsg := messagedlg('최상위 페이지입니다.'+#13+#13+ '프로그램을 종료 하시겠습니까 ?' ,mtwarning,[mbyes,mbno],0);
    if nMsg = 6 then
    Close;
    End;
    End;
    end;
    end;

    <!--CodeE-->
  • Profile
    이승규 2010.10.06 00:05
    위 코드 설명하자면~
    처음에 액션을 만들었습니다.
    액션을 연결 시켰구요~
    메인에서 버튼을 클릭하면
    (조회를 눌렀다 가정)
    먼저 내가 보이는 칠드폼이름을 비교해서
    맞으면 프로그램 권한을 보고 사용자가 권한이 있으면 실행합니다..
    줄수를 단축해볼려고 이것도 해보고 저것도해봤는뎅~ ㅋㅋ 제가 판단하기에 잴루 근접해서 ㅋㅋㅋ 하드 코딩 했습니다..
    궁금한 사항 있으면 쪽지주세요~
  • Profile
    Hyphen 2010.10.06 02:11
    Tag에 한표!
  • Profile
    박성훈 2010.10.06 20:54
    저같은 경우는 Window Message로 처리하고 있습니다.
    Main Form에서 Button을 눌렀을 때 Child에 SendMessage()로 Message를 날리고
    Child Form에서 Message를 받을 수 있는 처리를 하는 겁니다.


    //MainForm(Form1으로 가정)
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    if Self.ActiveMdiChild = nil then Exit;

    SendMessage(Self.ActiveMdiChild.Handle, WM_USER+999, 1, 0);
    end;

    //Child Form(Form2로 가정)
    //private영역에 Message trap을 위한 prototype 선언
    procedure WM_ToolButtonClicked(var Msg: TMessage); message WM_USER+999;

    //implementation
    procedure TForm2.WM_ToolButtonClicked(var Msg: TMessage);
    begin
    case Msg.WParam of
    1: ShowMessage('조회');
    2: ShowMessage('신규등록');
    3: ShowMessage(수정);
    4: ShowMessage('저장');
    5: ShowMessage('삭제');
    end;
    end;

    이런 형태로 처리하고 있습니다. Message의 값을 constant로 정의하시면 조금 더 가독성이 있겠네요.
    • cdrd
      2010.10.15 23:37
      자답입니다. 위의 마우스다운 이벤트에서 이미지리스트에 있는 이미지를 리스트뷰에 다시 셋팅하는 방...
    • 김현철
    • 2010.10.14 20:44
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 박정순
    • 2010.10.14 02:54
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2010.10.14 06:08
      뭘 질문하시는지 명확히 파악이 안되네요... 대강 유추해보면 아래 내용이 아닐까 생각되는데... htt...
    • 박정순
      2010.10.14 22:02
      답변 감사 합니다.^^ 제가 너무 편하게 하려고 욕심을 내었내요~ 최용일 님의 답글을 토대로 구글링 해...
    • 왕재식
      2010.10.13 03:23
      제가아는 허접한 방법은 마우스다운 이벤트하고 마우스업 이벤트를 이용하면 될 것 같습니다.
    • 이용벽
      2010.10.13 20:36
      아래와 같은 간단한 프로그램을 만들어서 테스트해 보세요. Form의 Mouse Down Event를 이용한 것입니다...
    • 프리랜서
      2010.12.16 09:19
      좋은 정보 감사드립니다.^^
    • 이상행
    • 2010.10.10 00:35
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2010.10.12 07:52
      저같으면 디자인패턴을 적용해서 코드를 다시 작성할것 같네요. 초기에 작성해야할 소스는 많아지지만 ...
    • 홍성락
      2010.10.12 18:52
      답변 감사합니다. <!--CodeS--> if BdeUse then with Query1 do else with ADOQuery1 d...
    • 이정욱
      2010.10.19 16:34
      여는 부분은 어쩔수 없겠지만, 데이터를 읽는 부분은 통합이 가능할것 같습니다. 사실 여는 부분도 함수...
    • 홍성락
      2010.10.19 19:45
      답변 감사합니다. TDataSet으로 하니깐 뒷부분은 많이 단순화는 되네요. 쿼리부분 함수만 2개로 빼고 ...
    • 이정욱
      2010.10.21 22:02
      아... 그리고 Query_BDE.SQL.Clear; Query_BDE.SQL.Add(SelectStr + WhereStr); 이렇게 된 부...
    • 홍성락
      2010.10.21 22:09
      예. 감사합니다
    • 이승규
      2010.10.11 00:05
      이상하네요~ 소스를 봐야알뜻하겠는데요~ 혹시 자료를 잘라서 입력하지 않나요? 하나씩 잘라서 입력 할...
    • 김현철
    • 2010.10.08 00:26
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 노이
    • 2010.10.06 13:03
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 정대명
    • 2010.10.05 23:22
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이승규
      2010.10.05 23:59
      몇개 안 깔린듯 하네요~~ 차근 차근 다시 한번 깔아보세요 ^^
    • 밴댕이
    • 2010.10.05 22:47
    • 5 COMMENTS
    • /
    • 0 LIKES
    • cdrd
      2010.10.05 23:55
      프레임으로 입력/수정/삭제/조회 버튼을 만들어서 MDIChild 폼에서 동적생성해서 사용하는 방법은 어떤가요?
    • 이승규
      2010.10.05 23:56
      mdi 폼에서 만든걸 말씀하신것 같네요~ 제가 작업 한건뎅~ 참고하세요 <!--CodeS--> procedure...
    • 이승규
      2010.10.06 00:05
      위 코드 설명하자면~ 처음에 액션을 만들었습니다. 액션을 연결 시켰구요~ 메인에서 버튼을 클릭하면 ...
    • Hyphen
      2010.10.06 02:11
      Tag에 한표!
    • 박성훈
      2010.10.06 20:54
      저같은 경우는 Window Message로 처리하고 있습니다. Main Form에서 Button을 눌렀을 때 Child에 SendM...
    • 노이
    • 2010.10.05 22:23
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 노이
      2010.10.05 23:07
      아... 한번에 설치되네요 제가 파일을 잘못오픈했엇네요.. ㅠㅠ 이런.. ㅋ
    • Hyphen
      2010.10.06 00:49
      TMS꺼 대부분 상용이던데..
    • 최용일
      2010.10.05 20:21
      델파이 7과 6은 기능상 거의 차이가 없으니 컴포넌트들만 있다면 별 문제 없을듯 합니다. 델파이 7은 델...
    • 박준영
      2010.10.05 22:09
      답변 감사합니다.. 그렇군요.. 컴퍼넌트만 있으면 된다니.. 참 다행입니다.. ^^
    • 이승규
      2010.10.05 17:26
      ini 파일 맹그러서~ edit 에 입력 했던 값을 저장하고 edit 하고 ini 하고 비교해서 비슷한걸 동적으로...
    • 다이나믹
      2010.10.05 22:43
      네 답변 감사합니다.
    • 신영일
      2010.10.05 17:13
      거 웃기는 색휘들이네요. 별 거지 같은... 웹 스크립핑은 은행쪽에서 많이 사용 하고 있구요. 자체 ...
    • 서현덕
      2010.10.05 20:08
      단시간에 해보면서 배우라는 목적인것 같아요... 어떤식으로 접근해야 될지 막막하네요 ㅜㅜ; 책에...
    • 이승규
    • 2010.10.04 23:34
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 박경록
      2010.10.04 21:48
      win7이 사용자 계정 컨트롤 설정을 변경 하시면 될 듯합니다. 계정 권한을 최하위로 두시면 exe파일 및 B...
    • 아폴론
      2010.10.05 19:42
      win7 64bit에선 BDE 호환되지 않는다는 많은 글 들이 있습니다. 64bit라면 BDE버리고 다른것으로 갈...
    • 따랑
      2010.10.03 09:41
      정말 해결방법이 없는것인가요? 아주 난감합니다. 처음부터 양식을 다시 그릴려하니 그렇습니다. 도움이 ...
    • 박경록
      2010.10.04 21:52
      QRShape의 Properties에 Shape 종류를 바꿔보시면 될듯합니다. 가로 qrsHorLine, 세로 qrsVertLine
    • 이승규
      2010.10.05 00:07
      QRShape 에 보시면 Pen 에서 Style 에 보시면 psInsideFrame 하시면 될꺼에요~ 저두 옛날에 그랬거덩...
    • 로즐리
    • 2010.10.02 01:27
    • 0 COMMENTS
    • /
    • 0 LIKES