Q&A

  • 다른 폼을 실행하고 그 폼의 특정 버튼을 작동할려고 하는데...
procedure Form1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
   If Key = VK_F12 Then
      Try
         Form2 := TFrom2.Create(Self);
         Form2.ShowModal;

         Form2.Button1Click(Self);
      Finally
         Form2.Free;
      end;
end;

그러나 Form2의 Button1Click 이벤트는 작동하질 않습니다.

아무래도 Form2.Button1Click(Self); 이놈의 작성이 잘못 된것 같은데...

이놈을 어떻게 해줘야 작동이 가능한지요 ?


만일 위와같이 구성하지 않을 경우 !

Form2가 자체적인 실행일 경우 그냥 실행되고, Form1에서 호출을 하였을
경우 Form2 실행시 위의 Button1Click 이벤트가 작동하게 할려면 어떤 식으로
구성을 하면 될까요 ?

고수님들의 조언 바랍니다. T_T
8  COMMENTS
  • Profile
    김운필 2004.02.21 03:11
    순서가 바뀌었네요...

    ShowModal이 되는 순가 제어권이 넘어가서 실행되지 않습니다.

    다음과 같이...

        Try
             Form2 := TFrom2.Create(Self);
             Form2.Button1Click(Self);
             Form2.ShowModal;
          Finally
             Form2.Free;
          end;


  • Profile
    성더기 2004.02.18 02:41
    try
    finally구분에서 Form2.Show 를 하면 바로 다음 라인을 실행하기 때문에
    폼이 떴다가 바로 닫혀버립니다..

    님께서 바라시는 것처럼 폼이 나타날때 버튼을 클릭하게 만들고 싶으시다면
    Form2를 호출할때는 ShowModal로 호출하고 Form2의 OnShow 이벤트에 Button2Click을 호출하세요
    그러니까

    procedure Form1.Edit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
       If Key = VK_F12 Then
          Try
             Form2 := TFrom2.Create(Self);
             Form2.ShowModal;
          Finally
             Form2.Free;
          end;
    end;
    이렇게 하고 Form2Show에 버튼클릭이벤트를 주면됩니다


  • Profile
    한원희 2004.02.18 01:30
    안녕하세요. 한원희입니다.


    Form2 의 OnShow 에서 처음 한번 실행될 때만, Button1Click() 메소드를 호출하도록 하면 같은 동작을 하리라 생각됩니다. 또는 Form1에서 꽁수로 PostMessage를 통해서 할 수도 있습니다. 음. 생각해보니 그럼 좀 복잡해 지겠네요. OnShow에서 처리하는 것이 가장 효율적이겠네요.

    그리고, ShowModal로 호출했기 때문에 아래의 ButtonClick가 호출되지 않는 것입니다. ShowModal로 폼을 표시하면, 그 창이 닫힐때까지 그 라인에서 멈춰있게 됩니다. 대신 Show로 폼을 표시하면, 만들어지자마자 아래에서 바로 Free 시켜주니 화면에 나타나지 않게 되겠죠. Finally에서 Free를 안시켜 주고, Form2자체에서 해제하게 만들면 되겠지만... 대화상자와는 다르게 포커스가 왔다리 갔다리 해서 대화상자로 사용하기에는 적합하지 않다고 생각됩니다.

    그럼, 즐프~



  • Profile
    레인시즈 2004.02.17 22:05
    폼을 생성 한 후 모달 형식으로 띄우기 전에
    버튼 동작 이벤을 호출 하며 됩니다.

    모양새가
    Form2.Button1click(nil); 가 안 좋네요 ^^;
    함수로 뽑는게 좋을듯 하네요...

    procedure Form1.Edit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
       If Key = VK_F12 Then
          Try
             Form2 := TFrom2.Create(Self);

             Form2.Button1Click(self);

             Form2.ShowModal;

          Finally
             Form2.Free;
          end;
    end;


  • Profile
    보리문디 2004.02.17 23:20

    Form의 Visible 속성이 True가 되기 직전인지라 Error가 나지 않을까요 ?

    읔... 아니나 다를까 조언해 주신대로 하니.. "Cannot focus a disabled or
    invisible window." 메세지가 뜨는군요. T_T


  • Profile
    유동기 2004.02.18 00:11
    showmodal을 show로 바꿔보세요

    아래 내용은 델마당에서 퍼온글입니다.

    Show와 ShowModal의 차이점은요
    먼저 Show : Show를 사용하여 Form을 열때, Form을 호출한 Program은
                     실행을  멈추지 않아요
                     Show 메소드는 호출한 모든코드가(메뉴,버튼...)실행을
                    계속합니다.
    ShowModal : Form ShowModal로 열릴때, 호출응용프로그램의
                       모든 프로그램 실행은 모 달폼이 닫힐때까지 정지합니다.
                                
    대답이 잘 되었는지 모르겠네요....


  • Profile
    보리문디 2004.02.18 01:39
    show로 바꾸었더니... 그냥 화면 열리자 마자 닫혀 버렸습니다.

    뭔가 머리를 많이 싸매야 할 듯 싶네요. T_T

  • Profile
    이중철 2004.02.18 04:57
    procedure Form1.Edit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
       If Key = VK_F12 Then
          Try
             Form2 := TFrom2.Create(Self);
             Form2.Show;
             Form2.Button1Click(self);
             Form2.Hide;
             Form2.ShowModal;
          Finally
             Form2.Free;
          end;
    end;
    별로 모양새가 안좋네요
    쩝..
    • 2004.02.18 23:48
      일단.. 문제점이 좀 많이 보이네요... 아마 소켓 프로그램을 짜고 계시는 모양인데... 이 레코드(c에서...
    • 방재웅
      2004.02.18 10:12
      구조체 정의 부분에서 m_hakbun : array[1..7] of String;  ---> m_hakbun : array[1....
    • oRaDeSigner
    • 2004.02.18 05:15
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 마코디
      2004.02.19 08:11
      TSQLConnection에서 DriverName 을 Oracle 로 설정하시면 되구여 이때 함께 배포해야하는 DLL 파일이 있...
    • nilriri™
      2004.02.18 21:36
      ADOQuery.isEmpty속성을 사용하시면 됩니다. 해당 테이블이 존재하는지 여부는 DBMS의 데이터사전을 ...
    • 이중철
      2004.02.18 05:22
      일단 질문내용은 잘 모르겠고 아래내용은 샘플이고요 두가지에 대한 답변이 될런지 모르겠네요 그럼 이만...
    • Galaxy
      2004.02.18 03:18
      안녕하세요 수고 많습니다. 버튼을 StringGrid에 Add한것을 말하는것 맞교 그러면 체크박스 해제하는 ...
    • 황재훈
    • 2004.02.17 22:23
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 성더기
      2004.02.18 02:46
      http://www.borland.co.kr/delphi_net/pdf/delphi_net8_techview_kr.pdf 에 나오는거 같네요
    • 김운필
      2004.02.21 03:11
      순서가 바뀌었네요... ShowModal이 되는 순가 제어권이 넘어가서 실행되지 않습니다. 다음과 같이......
    • 성더기
      2004.02.18 02:41
      try finally구분에서 Form2.Show 를 하면 바로 다음 라인을 실행하기 때문에 폼이 떴다가 바로 닫혀버립...
    • 한원희
      2004.02.18 01:30
      안녕하세요. 한원희입니다. Form2 의 OnShow 에서 처음 한번 실행될 때만, Button1Click() 메소드를 ...
    • 레인시즈
      2004.02.17 22:05
      폼을 생성 한 후 모달 형식으로 띄우기 전에 버튼 동작 이벤을 호출 하며 됩니다. 모양새가 Form2....
    • 보리문디
      2004.02.17 23:20
      Form의 Visible 속성이 True가 되기 직전인지라 Error가 나지 않을까요 ? 읔... 아니나 다를까 조언해...
    • 유동기
      2004.02.18 00:11
      showmodal을 show로 바꿔보세요 아래 내용은 델마당에서 퍼온글입니다. Show와 ShowModal의 차이점은...
    • 보리문디
      2004.02.18 01:39
      show로 바꾸었더니... 그냥 화면 열리자 마자 닫혀 버렸습니다. 뭔가 머리를 많이 싸매야 할 듯 싶네요....
    • • • •
    • 손상엽
    • 2004.02.17 18:17
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최진욱
      2004.02.17 22:38
      흠 초보가 이런데 글을 올려도 되나 잘 모르겠지만.. 여하튼.. ^.^;; 흠 파일을 올리는 방법은 여러 방...
    • 손상엽
      2004.02.17 22:44
      파일 서버는... 지정 컴퓨터를 사용할꺼구요.... 그 쪽에... 파일을 업로드 하고... 다운 로드 하는 기...
    • 엑기스
    • 2004.02.17 11:18
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 한원희
      2004.02.17 18:09
      안녕하세요. 한원희입니다. OpenKey의 두번째 인자에 true값을 주면, 키가 없을 경우 생성됩니다. 그...
    • 고평수
    • 2004.02.17 08:06
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이중철
      2004.02.18 05:38
      모두 SDI로 구현하세요 저도 SDI 메인폼에 메뉴 클릭시 TAB BAR 형식으로  SDI폼 뛰우고 TAB...
    • 에이원
    • 2004.02.17 07:41
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2004.02.17 08:16
      안녕하세요. 최용일입니다. 에러메세지 그대로 QUICKREPORT 2 POWERPACK란게 쉐어웨어 버전이구 델파이 ...
    • 최두승
    • 2004.02.17 06:27
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 성더기
      2004.02.17 19:51
      shellExecute를 사용해보세요 실행파일 경로와 상관없이 파일타입에 따라 실행됩니다 탐색기에서 Excel파...
    • 이명희
    • 2004.02.17 05:12
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 방재웅
      2004.02.17 10:35
      정답은 아니지만 힌트를 드리자면 델파이에서 DLL을 사용하는 방법이 두 가지가 있습니다. LoadLibra...
    • 용이...
    • 2004.02.17 01:46
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 방재웅
      2004.02.17 10:45
      String하고 Char 개념하고 혼돈을 하시는거 같네요 ^^    FillChar(r, sizeof(r), #0); ...
    • 용이...
    • 2004.02.17 01:27
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 이원복
    • 2004.02.17 00:07
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 성더기
      2004.02.17 19:53
      Access는 Paradox와 달리 MDB파일이 테이블이 아닙니다 MDB파일은 데이터 베이스입니다 테이블의 MDB파일...
    • romantic
      2004.02.17 00:23
      테이블 명에 '.' 을 빼보세요.ㅡㅡ.. a.mdb -> 이게 사용자 a의 mdb 테이블.. 머 이런식이 아닐까...
    • 토토98
      2004.02.17 02:13
      안녕하세요. 혹시라도 도움이 될까해서 글을 올립니다. 5년전에 저두 같은 작업을 한적이 있었습니다. ...