Q&A

  • 폼이 사람잡네....(누가 폼좀 잡아주세요.)
안녕하세요..

저는 이경원이라고 합니다.

지금 UNI_SQL과 Delphi로 프로그램을 짜고 있는데...

제 사수가 짜던 걸 고치고 있는데 역시 초보라서 어쩔수 가 없네요..



다름이 아니라



첫번째 질문 : 메인폼과 서브폼의 관계가 MDI와 child 관계가 아니고 다른 걸로 되어 있어서 M : child 관계로 고쳤는데 이게 말을 듣지 않습니다.fsNormal로 하면 뜨는데 그렇지 않고 child를 호출하면 그냥 메인 폼만 달랑 떠 있습니다.어떻게 해야 될지 막막 하네요..

또 Show Modal로 하면 Cannot make a visible window modal이라고 뜹니다.

어디서 어떻게 처리를 해야되는지요



두번째 질문 : 그냥 fsNormal로 하면 부르면 부르는데로 메뉴에 있는 폼을 생성시키지 않습니까.물론 MDIchildcount라는게 있는 건 아는데 M : child 관계가 아닌 그냥 fsNormal 상태에서 오픈 되는 폼의 카운터를 제한 할 수는 없는지요....



부록 질문 :Date_TimePicker 맞나.. 하여튼 여기 날짜를 시스템 날짜와 맞추려면 어떻게 해야 되는지요...잘 안되더라구요...



선배 여러분 ......(*^^*)

3  COMMENTS
  • Profile
    후니 2000.05.06 20:33
    첫번째 질문에 대한 답변

    우선 project-->option에서 해당 form이 auto-createforms에 있어서는 안됩니다.

    available forms에 위치해 있어야 하구요

    form 호출시 아래와 같은 코딩이 있어야 합니다.



    form1 := Tform1.create(self);

    form1.show;



    두번째 질문에 대한 답은 김일영님의 답변을 참조하시고요



    부록질문에 대한 답은

    해당 form이 show 또는 create하면서 시스템 날짜를가지고 오면

    될것같으므로 form show 또는 form create event에

    datetimepicker1.date := date;정도로 하면 됩니다.



    그럼



    이경원 wrote:

    > 안녕하세요..

    > 저는 이경원이라고 합니다.

    > 지금 UNI_SQL과 Delphi로 프로그램을 짜고 있는데...

    > 제 사수가 짜던 걸 고치고 있는데 역시 초보라서 어쩔수 가 없네요..

    >

    > 다름이 아니라

    >

    > 첫번째 질문 : 메인폼과 서브폼의 관계가 MDI와 child 관계가 아니고 다른 걸로 되어 있어서 M : child 관계로 고쳤는데 이게 말을 듣지 않습니다.fsNormal로 하면 뜨는데 그렇지 않고 child를 호출하면 그냥 메인 폼만 달랑 떠 있습니다.어떻게 해야 될지 막막 하네요..

    > 또 Show Modal로 하면 Cannot make a visible window modal이라고 뜹니다.

    > 어디서 어떻게 처리를 해야되는지요

    >

    > 두번째 질문 : 그냥 fsNormal로 하면 부르면 부르는데로 메뉴에 있는 폼을 생성시키지 않습니까.물론 MDIchildcount라는게 있는 건 아는데 M : child 관계가 아닌 그냥 fsNormal 상태에서 오픈 되는 폼의 카운터를 제한 할 수는 없는지요....

    >

    > 부록 질문 :Date_TimePicker 맞나.. 하여튼 여기 날짜를 시스템 날짜와 맞추려면 어떻게 해야 되는지요...잘 안되더라구요...

    >

    > 선배 여러분 ......(*^^*)

  • Profile
    Mr.Q 2000.05.05 11:37
    이경원 wrote:

    > 안녕하세요..

    > 저는 이경원이라고 합니다.

    > 지금 UNI_SQL과 Delphi로 프로그램을 짜고 있는데...

    > 제 사수가 짜던 걸 고치고 있는데 역시 초보라서 어쩔수 가 없네요..

    >

    > 다름이 아니라

    >

    > 첫번째 질문 : 메인폼과 서브폼의 관계가 MDI와 child 관계가 아니고 다른 걸로 되어 있어서 M : child 관계로 고쳤는데 이게 말을 듣지 않습니다.fsNormal로 하면 뜨는데 그렇지 않고 child를 호출하면 그냥 메인 폼만 달랑 떠 있습니다.어떻게 해야 될지 막막 하네요..

    > 또 Show Modal로 하면 Cannot make a visible window modal이라고 뜹니다.

    > 어디서 어떻게 처리를 해야되는지요

    >

    > 두번째 질문 : 그냥 fsNormal로 하면 부르면 부르는데로 메뉴에 있는 폼을 생성시키지 않습니까.물론 MDIchildcount라는게 있는 건 아는데 M : child 관계가 아닌 그냥 fsNormal 상태에서 오픈 되는 폼의 카운터를 제한 할 수는 없는지요....

    >

    > 부록 질문 :Date_TimePicker 맞나.. 하여튼 여기 날짜를 시스템 날짜와 맞추려면 어떻게 해야 되는지요...잘 안되더라구요...

    >

    > 선배 여러분 ......(*^^*)



    혹시 projcet옵션에서 child될 폼을 autocreateform->avilable form으로 안옮긴것은 아닌지?



  • Profile
    김일영 2000.05.05 04:24
    첫번째 질문에서 왜 메인 폼만 달랑 뜨는지는 상황을 몰라 알 수가 없군요...

    ShowModal시 Cannot make a visible window modal이란 메시지가 뜨는 것은

    띄우고자 하는 폼의 Visible 프로퍼티가 True이기 때문입니다. False로 바꿔놓으시면

    아무 문제 없을 겁니다.



    두번째 질문에 앞서 부록 질문에 대해서는 now라는 함수를 헬프에서 찾아보시기 바랍니다.



    두번째 질문은 소스로 답해드리겠습니다.



    unit Unit1;



    interface



    uses

    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    StdCtrls, Menus;



    type

    TForm1 = class(TForm)

    MainMenu1: TMainMenu;

    New1: TMenuItem;

    MaxFormCountIncrease1: TMenuItem;

    procedure New1Click(Sender: TObject);

    procedure FormCreate(Sender: TObject);

    procedure FormClose(Sender: TObject; var Action: TCloseAction);

    procedure MaxFormCountIncrease1Click(Sender: TObject);

    private

    { Private declarations }

    public

    { Public declarations }

    MaxFormCount: Integer;

    FormList: TList;

    end;



    var

    Form1: TForm1;



    implementation



    {$R *.DFM}



    uses

    Unit2;



    procedure TForm1.New1Click(Sender: TObject);

    var

    tmpForm: TForm2;

    begin

    if FormList.Count < MaxFormCount then begin

    tmpForm := TForm2.Create(Self);

    FormList.Add(tmpForm);

    tmpForm.Show;

    end;

    end;



    procedure TForm1.FormCreate(Sender: TObject);

    begin

    FormList := TList.Create;

    MaxFormCount := 1;

    end;



    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

    var

    I: Integer;

    begin

    for I := FormList.Count - 1 downto 0 do begin

    TForm2(FormList.Items[I]).Free;

    FormList.Delete(I);

    end;

    FormList.Free;

    end;



    procedure TForm1.MaxFormCountIncrease1Click(Sender: TObject);

    begin

    Inc(MaxFormCount);

    end;



    end.



    건강하고 활기찬 하루 되세요(저녁이지만.)

    =======================================================================

    이경원 wrote:

    > 안녕하세요..

    > 저는 이경원이라고 합니다.

    > 지금 UNI_SQL과 Delphi로 프로그램을 짜고 있는데...

    > 제 사수가 짜던 걸 고치고 있는데 역시 초보라서 어쩔수 가 없네요..

    >

    > 다름이 아니라

    >

    > 첫번째 질문 : 메인폼과 서브폼의 관계가 MDI와 child 관계가 아니고 다른 걸로 되어 있어서 M : child 관계로 고쳤는데 이게 말을 듣지 않습니다.fsNormal로 하면 뜨는데 그렇지 않고 child를 호출하면 그냥 메인 폼만 달랑 떠 있습니다.어떻게 해야 될지 막막 하네요..

    > 또 Show Modal로 하면 Cannot make a visible window modal이라고 뜹니다.

    > 어디서 어떻게 처리를 해야되는지요

    >

    > 두번째 질문 : 그냥 fsNormal로 하면 부르면 부르는데로 메뉴에 있는 폼을 생성시키지 않습니까.물론 MDIchildcount라는게 있는 건 아는데 M : child 관계가 아닌 그냥 fsNormal 상태에서 오픈 되는 폼의 카운터를 제한 할 수는 없는지요....

    >

    > 부록 질문 :Date_TimePicker 맞나.. 하여튼 여기 날짜를 시스템 날짜와 맞추려면 어떻게 해야 되는지요...잘 안되더라구요...

    >

    > 선배 여러분 ......(*^^*)