Q&A

  • TForm을 인자로 사용하는 방법 ???
[질문] TForm을 인자로 사용하는 방법 ???

안녕하세요.
TForm을 인자로 사용하는 방법을 몰라 질문을 드립니다.

Main폼 외에 폼이 2개가 더있고, 메인폼에서 아래와 같은 코딩을 하고 있습니다.

frmReport.QRLabel50.Caption := ErrText0;
frmReport.QRLabel51.Caption := ErrText1;
frmReport.QRLabel52.Caption := ErrText2;
...

frmReport2.QRLabel50.Caption := ErrText0;
frmReport2.QRLabel51.Caption := ErrText1;
frmReport2.QRLabel52.Caption := ErrText2;
...

위처럼 폼이름만 다르고, 폼내에서의 동작루틴은 폼내에서의 이름이 모두 같습니다.
거의 같은 내용이 반복적이라 코드가 비효율적이라 별도의 함수를 사용하여,

procedure msgRoutine(FF: TForm);
begin
FF.QRLabel50.Caption := ErrText0;
FF.QRLabel51.Caption := ErrText1;
FF.QRLabel52.Caption := ErrText2;
end;

위처럼 코딩을 하고 싶은데 방법이 있을까요???
(frmReport폼과 frmReport2폼은 이미 생성된 상태입니다.)
3  COMMENTS
  • Profile
    [勳]후니 2004.05.22 20:58
    밑에 작성하신 함수로 테스트 해보셨는지..??

    그대로 하면 될꺼 같은데요..

    폼 생성하고 생성된 넘을 함수로 인자로 넘겨 주면 됩니다.

  • Profile
    석주현 2004.05.23 05:13
    각각의 폼에 공통적인 부분을 하나로 한 폼을 만들고요..

    그걸 상속 받아서 작업하시면 됩니다..

    그러니깐

    일단 기본적인 폼 클래스를

    만약

    TQReport1 이라고 하면

    새로운 폼을 생성해서

    type
      TForm3 = class(TForm) // 여기 TForm 이란 부분에 넣어주면 상속되겠죠..
      private
        { Private declarations }
      public
        { Public declarations }
      end;

    그러니깐

    type
      TForm3 = class(TQReport1)
      private
        { Private declarations }
      public
        { Public declarations }
      end;

    이렇게요. 그렇게 한후에 폼에서 View As Text 를 하면

    object Form3: TForm3
      Left = 357
      Top = 305
      Width = 420
      Height = 397
      Caption = 'Form3'
      PixelsPerInch = 96
      TextHeight = 13
    end

    이런식으로 나오는데 이부분에서 첫 부분에 Object 를 inherited 로 바꿔주면

    상속받은 폼의 모양으로 폼이 바뀝니다..

    이거 참 보여주면서 하는게 아니라 이해가 잘 안가실지 모르겠네요.. --;;

    그렇게 하시고

    procedure TForm1.PassForm(Sender : TForm);
    begin
      (Sender As TQReport1).label1.Caption := '11111111';
      (Sender As TQReport1).label2.Caption := '22222222';
    end;

    그런 후에는 위에서 처럼 상속한 폼으로 강제 형변환 해서 적용이 가능합니다.

    물론 파라메터로 들어갈 수 있는 폼은 TQReport1 을 상속한거라야 되겠죠..

    음 이 방법이 과연 좋은 방법인지는 모르겠네요..
  • Profile
    마이다스 2004.05.23 01:36
    • 안복환
    • 2004.05.22 20:29
    • 1 COMMENTS
    • /
    • 0 LIKES
    • [勳]후니
      2004.05.22 20:56
      join에서 인어 조인 말고 left, right join을 이용하세요 SELECT A.ADATE, A.ACODE, A.APRICE, B.BP...
    • 마이다스
    • 2004.05.22 20:15
    • 3 COMMENTS
    • /
    • 1 LIKES
    • [勳]후니
      2004.05.22 20:58
      밑에 작성하신 함수로 테스트 해보셨는지..?? 그대로 하면 될꺼 같은데요.. 폼 생성하고 생성된 넘을...
    • 석주현
      2004.05.23 05:13
      각각의 폼에 공통적인 부분을 하나로 한 폼을 만들고요.. 그걸 상속 받아서 작업하시면 됩니다.. 그...
    • 마이다스
      2004.05.23 01:36
    • 다롱이
    • 2004.05.22 19:48
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 석주현
      2004.05.23 04:54
      음 뭘 말씀하시는 건지 정확하게 모르겠네요.. 암튼 불어오는 바람의 방향을 표시하시고 싶으신 거 같은...
    • 다롱이
      2004.05.23 06:11
      RE ; 대충 이해를 하신거 같은데요...        화살표가 이미지 컴포넌...
    • 한상훈
    • 2004.05.22 16:16
    • 0 COMMENTS
    • /
    • 0 LIKES
    • saxoji
    • 2004.05.22 13:57
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2004.05.22 04:29
      안녕하세요. 최용일입니다. 입력하는 값이 문자열라면 몰라도 숫자라면 구분하는 방법이 없습니다. 컴퓨...
    • 전춘영
      2004.05.22 05:16
      답변감사드립니다. 그런데 최용일님의 말씀대로 TRegistry.WriteInteger를 이용해서 10000 이라는 숫자를...
    • 최용일
      2004.05.22 08:57
      안녕하세요. 최용일입니다. 흠... 무슨 말씀이신지 이해하기가 힘드네요... 아까도 말씀드렸지만 컴...
    • 바다사랑
      2004.05.22 17:12
      트라이아이콘 과 타이머.. 컴퍼넌트를 사용해서.. 항상 시스템에 상주시키면되겠네요.. 해당컴프넌트...
    • 이승준
      2004.05.22 19:10
      팁정보 강민주님이 올리신 겁니다..그런데 아래에 isDir가 있는데 어떻게 사용하는건지 자꾸 여기서 에러...
    • 서동혁
    • 2004.05.22 03:47
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2004.05.22 04:24
      안녕하세요. 최용일입니다. Low-level함수써서 하지 마시고 델파이에서 지원하는 편리한 High-level 클...
    • 2004.05.22 01:05
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 바다사랑
      2004.05.22 17:14
      질문의 뜻을 이해하지 못하겠네요... Preview 에서 프린터 설정을 바꿨는데도 그렇다는건지...
    • 2004.05.22 18:05
      제가 잘못 썼나 보네요. 죄송;; 님 말씀대로 Preview 에서 다른 프린터로 바꿔도 기본 프린터로 인쇄가 ...
    • 착한천사
      2004.05.24 19:49
      data loader라는 것이 양쪽(oracle, mysql)에 있는걸로 알고 있습니다. oracle의 내용을 특정 구분자로 da...
    • Del_WOW
    • 2004.05.21 21:05
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김정은
      2004.05.21 23:20
      모달 꼭 써야하나요? 전 그냥 프리뷰 만 하는데...   if OpenDialog.Execute then begin ...
    • 최용일
      2004.05.22 04:52
      안녕하세요. 최용일입니다. 상당히 복잡해요. 양도 많고 알아야 할것도 많고... 기본적으로 COM에 대해...
    • 김민우
    • 2004.05.21 19:44
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 바보래요
      2004.05.21 19:57
      제가 생각하기론 대략 작업 내용이 서버에 있는 디비를 로칼에 복사한후 작업을 해서 서버로 다시 보내...
    • 김민우
      2004.05.21 22:36
      제어 PC가 두대가 있습니다. 한대는 사용자가 주로 이용하는 Main PC이고 다른 Sub PC는 만약에 메인...
    • 바보래요
      2004.05.22 00:42
      파일로 복사가 아닌 자료만 복사하면 안되나요? 당연히 파일로 하면 사용하고 있을경우는 복사할수 ...
    • 김민우
      2004.05.22 04:20
      ...
    • 바보래요
      2004.05.21 19:14
      더블클릭이 안되는 이유가 제 생각에는 각각이 클릭이벤트를 발생시키기 때문인것 같거든요... 버...
    • 상현
    • 2004.05.21 18:29
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2004.05.21 20:27
      안녕하세요. 최용일입니다. 여러가지 방법이 있습니다. 아래는 그중 하나입니다... function ShortTo...
    • 상현
      2004.05.21 21:27
      감사함다~ 결과값은 원하는데로 나오는디... 한바퀴 마라톤을 뛰는듯 하군요... ^^
    • 조상일
      2004.05.21 06:52
      GetForegroundWindow 함수가 있었네요.. 무한삽질중 건졌습니다.. 우헤헤.. ^^ 그럼.. 계속 즐~~&nb...
    • 안영제
      2004.05.21 06:10
      http://swiss.torry.net/vcl/mmedia/other/tlame.zip
    • Maverick
      2004.05.21 18:45
      앗, 정말 감사합니다... 이런 사이트가 있는줄은 몰랐네요... 그런데 dpk가 설치가 안 되네요... 이...
    • 최용일
      2004.05.21 20:31
      안녕하세요. 최용일입니다. MMTools쓰신다고 하셨죠? MMTools패키지에서 그렇게 하는겁니다. 뭐 복사...
    • Maverick
      2004.05.22 01:21
      감사합니다. 가르쳐 주신대로 했더니 컴포넌트는 잘 설치가 되었습니다. TLame이라는 컴포넌트를 설치했는...
    • 최용일
      2004.05.22 02:06
      안녕하세요. 최용일입니다. TLame이라는 것은 제가 써본적이 없어서 어떻게 하는지는 모르구요... AS...
    • 이현정
    • 2004.05.21 03:28
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김길현
      2004.05.21 08:51
      메뉴에서   File -> New -> Other 를 하시면   많은 아이콘들 중에 Consol&n...
    • 바다사랑
      2004.05.21 17:05
      한글은 2바이트문자이기 때문에 ㄱ 으로 시작되는 문자를 찾기란 힘들것 같네요... 차라리... 가 . 나 . 다...
    • 오광택
      2004.05.21 19:30
      ^^ 제가 무지해서요..답변에 감사합니다. 그럼  ㄱ 이란 문자를 코드화 시킬수 있나요? ...