Q&A

  • 폼의 복사
델파이로 프로그램 짜다가..

의문이 생겨서 그러는데...... 부탁드립니다...

뭐냐하면.. 폼에.. 버튼을 두고선.. 실행시켜.. 이 버튼을 계속 누르면..

버튼이 박혀 있는 그니깐(똑같은 폼을)계속해서 .. 띄울려고.. 하거든여...

비베에선.... 폼 객체 변수를... Set해서.. 할 수 있는데...

델파이에서도.. 가능할거라 생각하는데.. 혹시.. 어떻게 하는지.....

부탁드립니다....

그럼...... 잠오지 않는 밤을... 멋지게.. 보내시길...



5  COMMENTS
  • Profile
    조규춘 2000.03.18 07:53
    쫑현이 wrote:

    > 델파이로 프로그램 짜다가..

    > 의문이 생겨서 그러는데...... 부탁드립니다...

    > 뭐냐하면.. 폼에.. 버튼을 두고선.. 실행시켜.. 이 버튼을 계속 누르면..

    > 버튼이 박혀 있는 그니깐(똑같은 폼을)계속해서 .. 띄울려고.. 하거든여...

    > 비베에선.... 폼 객체 변수를... Set해서.. 할 수 있는데...

    > 델파이에서도.. 가능할거라 생각하는데.. 혹시.. 어떻게 하는지.....

    > 부탁드립니다....

    > 그럼...... 잠오지 않는 밤을... 멋지게.. 보내시길...

    >



    저는 영원한 초보입니다.

    그래서 공부하는 의미에서 최용일님꺼를 해보왔더니 안되더군요!

    제가 방법을 몰라서 그런지 몰라도.. 용일님 죄송!

    하여간에 그래서 저 나름대로의 방법

    (단, 버튼의 위치는 아니 바꿔노왔습니다.)

    unit Unit1;



    interface



    uses

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

    StdCtrls;



    type

    TForm1 = class(TForm)

    Button1: TButton;

    procedure Button1Click(Sender: TObject);

    procedure FormCreate(Sender: TObject);

    private

    { Private declarations }

    public

    { Public declarations }

    end;



    var

    Form1: TForm1;

    i : integer;

    implementation



    {$R *.DFM}



    procedure TForm1.Button1Click(Sender: TObject);

    var

    newForm: TForm;

    begin

    newForm := TForm.Create(Self);

    with Tbutton.Create(newForm) do

    try

    Parent := newForm;

    newform.Left := i;

    newform.top := i;

    newForm.Show;

    finally

    end;

    inc(i);

    end;



    procedure TForm1.FormCreate(Sender: TObject);

    begin

    i:= 0;

    end;



    end.





  • Profile
    하얀까마귀 2000.03.18 19:56
    안녕하세요 하얀까마귀 입니다..



    조규춘님께 조금 죄송하지만.. 이상해서 해보니까 잘 안되네요...



    ... 쩝......



    create문으로 만들면 그냥 폼만 만들어지죠.... 그러니 그 안의 각종 콤포넌트



    들은 다 어떻게 할려면 무척 힘들겠죠????



    이렇게 한번 해보세요...



    procedure TForm1.Button1Click(Sender: TObject);

    var

    newForm : TForm;

    begin

    // 요놈은 자주 보셧죠?? procect 에 보시면 자주 보는 거잖아요....

    // 그래서 이놈으로 만들면 됩니다.

    Application.CreateForm(TFormClass(self.ClassType), newForm);



    newForm.Left := self.Left + 100;

    newForm.Top := self.Top + 100;

    newForm.Show;

    end;





    조규춘 wrote:

    > 쫑현이 wrote:

    > > 델파이로 프로그램 짜다가..

    > > 의문이 생겨서 그러는데...... 부탁드립니다...

    > > 뭐냐하면.. 폼에.. 버튼을 두고선.. 실행시켜.. 이 버튼을 계속 누르면..

    > > 버튼이 박혀 있는 그니깐(똑같은 폼을)계속해서 .. 띄울려고.. 하거든여...

    > > 비베에선.... 폼 객체 변수를... Set해서.. 할 수 있는데...

    > > 델파이에서도.. 가능할거라 생각하는데.. 혹시.. 어떻게 하는지.....

    > > 부탁드립니다....

    > > 그럼...... 잠오지 않는 밤을... 멋지게.. 보내시길...

    > >

    >

    > 저는 영원한 초보입니다.

    > 그래서 공부하는 의미에서 최용일님꺼를 해보왔더니 안되더군요!

    > 제가 방법을 몰라서 그런지 몰라도.. 용일님 죄송!

    > 하여간에 그래서 저 나름대로의 방법

    > (단, 버튼의 위치는 아니 바꿔노왔습니다.)

    > unit Unit1;

    >

    > interface

    >

    > uses

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

    > StdCtrls;

    >

    > type

    > TForm1 = class(TForm)

    > Button1: TButton;

    > procedure Button1Click(Sender: TObject);

    > procedure FormCreate(Sender: TObject);

    > private

    > { Private declarations }

    > public

    > { Public declarations }

    > end;

    >

    > var

    > Form1: TForm1;

    > i : integer;

    > implementation

    >

    > {$R *.DFM}

    >

    > procedure TForm1.Button1Click(Sender: TObject);

    > var

    > newForm: TForm;

    > begin

    > newForm := TForm.Create(Self);

    > with Tbutton.Create(newForm) do

    > try

    > Parent := newForm;

    > newform.Left := i;

    > newform.top := i;

    > newForm.Show;

    > finally

    > end;

    > inc(i);

    > end;

    >

    > procedure TForm1.FormCreate(Sender: TObject);

    > begin

    > i:= 0;

    > end;

    >

    > end.

    >

    >

  • Profile
    최용일 2000.03.18 11:52
    진짜 초보님이 맞으시는군요. 저는 그러한 방법으로 생성한다는 것만



    말씀드렸습니다. 그걸 어떻게 사용하는가는 전적으로 사용자님에게



    달려 있는거죠. 그래서 생성과 소멸의 중간에 "..."생략부호를 넣어놓았었는데...



    그럼 조규춘님의 예제대로 버튼을 클릭하면 똑같은 폼을 보여주는 예제를



    만들겠습니다. 너무 쉬운 예제라 설명은 안해도 이해하시리라 믿습니다.



    그리고 조규춘님의 코드에는 동적으로 생성한 폼을 삭제하는 코드가 없더군요.



    그렇게 되면 프로그램을 실행할때마다 조금씩 리소스를 잃어버릴수 있습니다. 그렇게



    해서 리소스가 완전히 고갈되면 시스템이 다운됩니다. 그러므로 반드시 프리를



    해주세요.



    unit Unit1;



    interface



    uses

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

    StdCtrls;



    type

    TForm1 = class(TForm)

    Button1: TButton;

    procedure Button1Click(Sender: TObject);

    procedure FormCreate(Sender: TObject);

    private

    { Private declarations }

    public

    { Public declarations }

    end;



    var

    Form1: TForm1;

    i : integer;

    implementation



    {$R *.DFM}



    procedure TForm1.Button1Click(Sender: TObject);

    var

    NewForm: TForm1;

    begin

    newForm := TForm1.Create(Self);

    NewForm.Show;

    // InsertControl을 사용할경우 폼이 종료되면 자동으로 NewForm이 프리됩니다.

    InsertControl(NewForm);

    // 모들폼(다이얼로그와 같은)으로 띄울땐 다음과 같이 하시면 됩니다.

    // newForm := TForm.Create(Self);

    // NewForm.ShowModal;

    // 이경우는 직접 프리해주어야 합니다.

    // NewForm.Free;

    end;



    end.

  • Profile
    최용일 2000.03.18 07:34
    그러니까 현재의 폼이 TForm1형이라면...



    var

    NewForm: TForm1;

    begin

    ...

    NewForm := TForm1.Create(Self);

    ...

    NewForm.Free;

    ...

    end;





    쫑현이 wrote:

    > 델파이로 프로그램 짜다가..

    > 의문이 생겨서 그러는데...... 부탁드립니다...

    > 뭐냐하면.. 폼에.. 버튼을 두고선.. 실행시켜.. 이 버튼을 계속 누르면..

    > 버튼이 박혀 있는 그니깐(똑같은 폼을)계속해서 .. 띄울려고.. 하거든여...

    > 비베에선.... 폼 객체 변수를... Set해서.. 할 수 있는데...

    > 델파이에서도.. 가능할거라 생각하는데.. 혹시.. 어떻게 하는지.....

    > 부탁드립니다....

    > 그럼...... 잠오지 않는 밤을... 멋지게.. 보내시길...

    >

  • Profile
    하얀까마귀 2000.03.18 20:22
    안녕하세요 하얀까마귀 입니다..



    음.. 제가 잘 못 보았군요....



    조규춘님께서



    newForm := TForm.Create(Self);



    이렇게 해서.. 전 왜??? 폼객체를 생성해서 그걸 일일이 안의 콤포넌트를 만들까??



    라고 생각을 했죠.. 그런데... 최용일님의 소스는 맞게 되어 있네요....



    그냥 잘못한 것도 있고 해서...잠시 테스트 한걸 올립니다. 참고 하세요..



    //////////////--------------------

    폼을 생성하고 싶을때..

    var

    newForm : TForm;

    begin

    Application.CreateForm(TFormClass(self.ClassType), newForm);

    // 요놈은 그냥 newForm := TForm1.Create해도 되요....



    newForm.Left := self.Left + 100;

    newForm.Top := self.Top + 100;

    newForm.Show;

    end





    // 요건 객체 증식하기...

    // 요건 전에 책보고 공부하면서 만든겁니다... 어떤 책이었는지는 까먹었어요....

    // 좀 오래전에 본 책이라서.....

    procedure ......(Sender : TObject);

    var

    CtrlText : String;

    begin



    // 현재 오브젝트로 같은 객체를 하나 만들어요...

    with TcontrolClass(Sender.ClassType).Create(self) do

    begin

    // 보모는 똑깥이 하고..

    parent := (Sender as Tcontrol).Parent;

    // 위치는 조금 다르게..

    Left := (Sender as Tcontrol).Left + 10;

    Top := (Sender as Tcontrol).Top + 10;



    // 요부분이 쬐끔 이상하게 보일려나???/

    // 뭐 별건 아니구요... TControl의 짜식들은 그냥 코드 수정없이

    // 몽땅 복제할려구 이렇게 되어 있는겁니다.. 그러니까 caption이나 text의

    // 내용을 가져와야 하니까....

    // 그냥 복사해서 넣어줘 버려요..

    SetLength(ctrlText,50);

    (Sender as TControl).GetTextBuf(PChar(CtrlText), 50);

    CtrlText := PChar(CtrlText) + '+';

    SetTextBuf(Pchar(CtrlText));

    end;









    • 양은주
    • 2000.03.18 22:24
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.03.18 22:55
      TButton보다는 TBitBtn이나 TSpeenButton을 이용하시면 간단히 구현하실 수 있습니다. 양은주 wrote: >...
    • 최용일
      2000.03.18 22:47
      현재 프로젝트의 디렉토리에 넣으시거나 환경설정에서 지정한 디렉토리에 넣으십시오. hee wrote: > 분...
    • 최용일
      2000.03.18 22:44
      안녕하세요. 제목의 두 메소드는 Drag&Drop나 Drag&Dock작업을 할 때 쓰이는 메소드입니다. DragMode가...
    • 임형호
      2000.03.18 22:35
      김준연 wrote: > 제목 그대로 입니다. > 아무리 찾아봐도 사용법을 모르겠어요.... > 아무도 설명을 안...
    • 최용일
      2000.03.18 22:53
    • hee
      2000.03.19 00:10
    • 최용일
      2000.03.19 01:33
    • hee
      2000.03.19 01:39
    • 최용일
      2000.03.19 04:11
    • cabaret
      2000.03.22 18:18
      델파이사랑 wrote: > formkeydown에서 키를 정의하려고 하는데 key값을 몰라 이렇게 질문을 올립니다. >...
    • 하얀까마귀
      2000.03.18 19:37
      안녕하세요 하얀까마귀 입니다. vk_Tab = $09;이고 아니...delpisourcertlwin 안에 보시면 win...
    • 이빈
    • 2000.03.18 18:40
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 하얀까마귀
      2000.03.18 19:30
      안녕하세요 하얀까마귀 입니다... 잠깐 들어 왔다가... 지금 시간이 없어서.. 간단하게만 답변 할께요.....
    • 델파이청년
      2000.03.18 18:53
      이빈 wrote: > 한상 친절한 답변 감사합니다.... > 마우스화살표를 버튼에다 갔다 놓으면 흑백이 칼라로 ...
    • 최은정
    • 2000.03.18 18:31
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.03.18 21:36
      다음과 같이 해보세요 var Sum: Integer; begin Application.MessageBox('합계', PChar(IntToStr(S...
    • 하얀까마귀
      2000.03.18 19:32
      안녕하세요 하얀까마귀 입니다. 그냥 간단하게 하세요... ShowMessage('합계 = ' + IntToStr(Sum) );...
    • 정인복
    • 2000.03.18 17:53
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.03.18 22:01
      안녕하세요! 훌륭하신 생각인것 같군요. 많은 사람과 자료를 공유하고 싶으시다면 자료실을 이용해 ...
    • 류종택
      2000.03.18 16:15
      아래와 같이하세요.. 여러가지 방법이 있지만 다소 간단한 것 입니다.. 인스턴스를 읽는 것이 되다 안되...
    • 최은정
    • 2000.03.18 08:59
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.03.18 09:19
      변수값을 여러가지 변환 함수를 써서 스트링으로 변환해서 넣어주시면 됩니다. 스트링이라면 그냥 넣어주...
    • 조규춘
      2000.03.18 08:21
      조씨 wrote: > > DBGrid에 bmp파일이 보이게 할려면 어떻게 하나요? > > 건강하시고, 모두들 행복하...
    • 최용일
      2000.03.18 09:06
      델파이로 못하는것은 없어요... 이수정 wrote: > 어떤 홈페이지에 들어갔는데, asp 확장자에서 물음표(...
    • 이수정
      2000.03.18 18:00
      너무 자신만만 하시군요.. 저의 질문에 대해서는 일언반구 의견 한마디 없이.. 그냥 무조건 된다니요...
    • 유중기
    • 2000.03.18 07:15
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 조규춘
      2000.03.18 08:35
      유중기 wrote: > 델파이를 공부하고픈 사람인데 델파이를 공부하려면 델파이 프로그램을 구입해야 하는 것...
    • 쫑현이
    • 2000.03.18 07:08
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 조규춘
      2000.03.18 07:53
      쫑현이 wrote: > 델파이로 프로그램 짜다가.. > 의문이 생겨서 그러는데...... 부탁드립니다... > 뭐...
    • 하얀까마귀
      2000.03.18 19:56
      안녕하세요 하얀까마귀 입니다.. 조규춘님께 조금 죄송하지만.. 이상해서 해보니까 잘 안되네요... ....
    • 최용일
      2000.03.18 11:52
      진짜 초보님이 맞으시는군요. 저는 그러한 방법으로 생성한다는 것만 말씀드렸습니다. 그걸 어떻게 사용...
    • 최용일
      2000.03.18 07:34
      그러니까 현재의 폼이 TForm1형이라면... var NewForm: TForm1; begin ... NewForm := TForm1...
    • 하얀까마귀
      2000.03.18 20:22
      안녕하세요 하얀까마귀 입니다.. 음.. 제가 잘 못 보았군요.... 조규춘님께서 newForm := TForm....
    • 최연수
    • 2000.03.18 06:51
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.03.18 23:00
      1. 다음은 다중선택된 리스트뷰의 아이템을 리스트박스에 넣는 예제입니다. var NextItem: TListItem...
    • 왕초보
    • 2000.03.18 06:48
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.03.18 06:57
      다음과 같이 하세요... var SearchRec: TSearchRec; Item: TListItem; begin if FindFirst(Se...
    • 이윤환
    • 2000.03.18 05:54
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.03.18 11:05
      메모에 추가... var I : Integer; begin for I := 0 to Memo1.Lines.Count - 1 do // 이부분은 ...