Q&A

  • 초본대요,프로시저를 만들어서 테스트하려구하는데요.
Sams 인포북에서 나온 초보자를 위한 델파이4 21일완성을 보고 있습니다.
Day2 에서 연습문제를 풀고 있는데 첫번째 부터 막히고 있습니다.
델파이6을 갖고 연습하고 있어요.

107쪽 연습문제 1번인데요.
1. Label 컴포넌트의 내용을 변화시키는 프로시저를 Test2라는 이름으로 만들어 보아라. 폼 위에 버튼을 놓고 버튼의 OnClick 이벤트 핸들러에서 Test2프로시저를 호출해 보아라.

문제는 이렇습니다.

제가 멀 고쳐야 하는지요. 알려주시면 감사드리겠습니다.,.

그리고 제가 나름대로 적어본 소스는 다음과 같습니다.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure Test2;
begin
  Label1.Caption := '바꿉니다.';
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
    Test2;
end;

end.

감사합니다.
3  COMMENTS
  • Profile
    최용일 2002.02.01 20:11
    안녕하세요. 최용일입니다.

    일반 프로시져로 만드시지 마시고 객체의 메소드로 만들어서 사용하세요...

    type
        TForm1 = class(TForm)
            Button1: TButton;
            Label1: TLabel;
            procedure Button1Click(Sender: TObject);
        private
            procedure Test2;
        end;

    procedure TForm1.Test2;
    begin
        Label1.Caption := '바꿉니다.';
    end;

    ^^ 항상 즐코하세요...

  • Profile
    임재균 2002.02.01 20:18
    답변 감사합니다. 최용일님.
    앞으로 자주 궁금한거 있스면 여쭤도 되죠?

    정말 고맙습니다.
    근데 한가지 더 궁금한건 객체의 메소드로 만들어서 사용하라는건
    객체 TForm 의 메소드 Test2 라는 말이져?

    그리고 type에 private 밑에 procedure  Test2라고 적었는데
    주석을 달아보니 역시 실행이 안되는군요
    왜 private에 그런걸 적어주야 되는지요..
    초보의 무지함을... 용서하십시요.

    감사합니다.

  • Profile
    최용일 2002.02.01 21:09
    안녕하세요. 최용일입니다.

    Test2에서 쓰는 Label1은 TForm1이라는 객체에 속해있습니다.  그러니까 일반함수로 만들어서 참조할려면 TForm1의 인스턴스인 Form1을 참조해야 합니다.

    procedure Test2;
    begin
        Form1.Label1.Caption := '바꿉니다.';
    end;
    그런데 이러한 방식은 객체지향프로그램에서는 좋은 코딩방법이라고 할 수는 없거든요... 그래서 메소드를 이용하는 거구요...

    이러한건 참조하는 변수들에대한 범위(Scope)문제입니다. TForm1내에서는 Label1을 인식할 수 있지만 일반프로시져인 Test2에서는 TForm1의 Label1을 인식할 수 없습니다. Test2에서 Label1을 인식을 할려면 Test2가 TForm1의 메소드가 되어야 하는거죠...

    pirvate파트에 선언하나 protected, public에 선언하나 별 상관은 없습니다.
    Test2란게 내부에서만 사용하기 때문에 private파트에 선언한거구요. 외부에서
    도 Test2란 메소드를 사용한다거나 TForm1에서 상속된 객체에서도 사용할
    수 있도록 하실려면 protected나 public에 선언을 해야 하겠죠...

    객체지향 프로그래밍에 관해서 좀 더 많은 공부를 하신다면 이해를 하실 수 있게될겁니다...

    ^^ 항상 즐코하세요...

    • 한원희
    • 2002.02.01 20:20
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 박성훈
      2002.02.01 21:02
      안녕하세요. 프로젝트소스에 Application.ShowMainForm:= False를 집어넣어 보세요.
    • 한원희
      2002.02.01 20:36
      >일반 유틸리티를 보면, 프로그램이 시작되면서, 트레이 아이콘으로 최소화 되어 실행되는 유틸이 많이 있...
    • 박성훈
      2002.02.01 21:06
      안녕하세요. 5만건이면 파라독스가 감당하기가 점 버거울듯 싶네여. 백업을 받아보시구 해보시죠. 혹...
    • 박용철
      2002.02.01 21:20
      제가 여쭤본 속도 저하 table 이 어떤 일련의 계산 과정에서 중간 테이블중 하나에서 발생하는 문제인 것 ...
    • 장명선
      2002.02.01 21:24
      이건 해당 값으로 색깔 표시한겁니다. 좀 수정하시면 될겁니다. //*** DBGrid Cell 색깔 표시 *** proc...
    • 임재균
    • 2002.02.01 19:51
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.02.01 20:11
      안녕하세요. 최용일입니다. 일반 프로시져로 만드시지 마시고 객체의 메소드로 만들어서 사용하세요... ...
    • 임재균
      2002.02.01 20:18
      답변 감사합니다. 최용일님. 앞으로 자주 궁금한거 있스면 여쭤도 되죠? 정말 고맙습니다. 근데 한...
    • 최용일
      2002.02.01 21:09
      안녕하세요. 최용일입니다. Test2에서 쓰는 Label1은 TForm1이라는 객체에 속해있습니다.  그...
    • 전재욱
    • 2002.02.01 19:47
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 윤도상
    • 2002.02.01 19:44
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.02.01 20:20
      안녕하세요. 최용일입니다. 델파이 Bin폴더에 있는 TDump.exe를 이용해보세요. DLL버전은 알 수가 없지...
    • 수야.
    • 2002.02.01 19:36
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 박성훈
      2002.02.01 21:09
      안녕하세요? 물론 도움말은 있습니다. 같이 배포가 안되는 것 뿐이니까요. 여기 자료실이나 Rx홈에 ...
    • 김기자
    • 2002.02.01 19:31
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이창환
      2002.06.08 22:25
      MIDAS를 사용하시면서 TClientDataSet 컴포넌트가 있는데 왜 TQuery를 사용하세요?? 모든 Query나 Table...
    • 박준영
    • 2002.02.01 19:23
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 장명선
      2002.02.01 19:29
      질문을 하실때는 먼저 자료실에서 검색을 하시고 올려주세요 이왕 올린거 알려드리져 ^^* DBGrid 의 Pr...
    • 박준영
      2002.02.01 19:53
      급한 마음에 자료들을 자세히 보지 못했습니다. 답변 주셔서 감사합니다. 그런데 저도 이왕 글 쓴거 하나...
    • 장명선
      2002.02.01 21:36
      그건 레코드의 위치를 그쪽으로 이동하게 하면 됩니다... 찾기를 해서 이동하시면 됩니다.. 그럼..수거...
    • 신호
    • 2002.02.01 18:09
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 박성훈
      2002.02.01 21:12
      안녕하세요? 저두 초보라 별 도움이 될지는 모르지만... 라인을 그릴 때 캔버스에 직접 그리지 마시...
    • 최용일
      2002.02.01 21:20
      삼각형 프레스에서 나온 책인데 Inside Secret Delphi 3 개발자 핸드북이란책 괞찮아요...
    • Delphi Kim
    • 2002.02.01 06:01
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 조인환
      2002.02.01 19:14
      아래 예제는 IME 원도우즈 메시지를 처리하며 막는 소스입니다. 예전에 참고했던 소스인데요. 도움이 되...
    • 뚜벅이
    • 2002.02.01 05:20
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 장명선
      2002.02.01 08:04
      파라폭스는 인원의 제한이 있습니다... NT Server를 쓰신다고 했으니깐...제가 보기엔 db에서 인원 제한을...
    • 뚜벅이
      2002.02.01 20:19
      Db에서의 제한은 없습니다. 파라독스를 쓴느 게 아니라 AS/400에 Db2를 씁니다.... 거기에서는 인원 제한...
    • Tk
      2002.02.01 23:23
      as/400 이  델파이랑 연동 할려면  delphi/400 이거나 아님 ace/400(easycom) 또는 ...
    • 장명선
      2002.02.01 04:45
      제가 쓰는 방법인디 괜찮은지 모르겠네요 우선 Project->Options에서 Form을 available form쪽으로 이...
    • 유종근
      2002.02.01 04:49
      그렇게 하면 프로그램이 실행될때 리포트작성폼이 화면에 먼저 뜨잖아요..그문제는 어떻게 해결을 하셨나요...
    • 장명선
      2002.02.01 08:02
      위의 방법대로 하면 리포트작성폼은 안뜨고 프리뷰화면만 뜨는데??? 님이 잘 하셨는지요 ?
    • 장명선
      2002.02.01 04:04
      날짜를 문자형으로 했을경우에는 굳이 날짜형으로 변환하는것보다 그냥 조회하는게 좋지 않을까요 ? Sq...
    • 최영근
      2002.02.01 04:46
      만약 C/S 프로그램       '델파이 4, 시작 그리고 완성'  도서출...
    • 장명선
      2002.02.01 04:00
      다우에서 발행한 책자가 있습니다... 제목이 잘 생각이 안나지만...그것이 좋을듯 하네요 아마 제목 델...
    • 한강민
    • 2002.02.01 03:51
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 5782_Click
      2002.02.01 04:57
      다른 파일들은 다 있궁 플젝트 파일만 없어졌나요? 그럼 혹시... pas파일들을 모두 열어놓구 프로젝트 ...
    • (_^^)~U
    • 2002.02.01 03:45
    • 3 COMMENTS
    • /
    • 0 LIKES
    • Mr. Ziker
      2002.02.01 08:22
      Object Inspector 에 Propertise에 보시면 MultiSelect 라는 옵션이 있는데 True로 해주시면 됩니다. ...
    • (_^^)~U
      2002.02.01 18:34
      답변은 감사 한대요 TreeView 에는 MultiSelect 가 없는대요?
    • 김현
      2002.02.01 20:55
      ListView 와 달리 TreeView 는 다중 선택을 기본적으로 지원하지 않슴다 토리나 델파이 슈퍼페이지 가면 ...