Q&A

  • Edit 와 포커스 그리고 색깔
하나의 form 위에 panel 을 놓고...

그위에 여러개(20개 정도)의 edit control 이 있습니다.



탭키나 엔터키 또는 방향키를 통해서 포커스가 edit를 이동하게 하구요

포커스를 가졌을 때와 잃었을 때에 따라서 색깔을 다르게 하려구요...



현재... 아래와 같은 방법으로... 하고 있거든여...

각각의 edit 에 대해서 OnEnter 와 ONEXIT 함수를 만들어서...



procedure TFM_ItmMst.Edit1Enter(Sender: TObject);

begin

Edit1.Color := clInfobk;

end;



procedure TFM_ItmMst.Edit1Exit(Sender: TObject);

begin

Edit1.Color := clWindow;

end;



이런 함수는 20 여번에 걸쳐 반복하고 있습니다.

정말 무식하죠?.... ^^;



이걸 하나의 프로시저로 만들어서 사용할 수는 없나요?...

델파이를 접한지... 얼마 되지 않아서....

조언 부탁드립니다....

4  COMMENTS
  • Profile
    kylix 2001.05.20 07:27
    하나만 만들어서 Sender파라매터를 이용하세요...



    20개의 에디트의 OnEnter와 OnExit를 아래 이벤트로 연결하세요. 그럼 20개씩 만들 필요가 없습니다. 대부분의 이벤트는 Sender파라매터에 이벤트를 발생시킨 컴포넌트를 넘겨줍니다...



    procedure TFM_ItmMst.Edit1Enter(Sender: TObject);

    begin

    TEdit(Sender).Color := clInfobk;

    end;



    procedure TFM_ItmMst.Edit1Exit(Sender: TObject);

    begin

    TEdit(Sender).Color := clWindow;

    end;

    류성심 wrote:

    > 하나의 form 위에 panel 을 놓고...

    > 그위에 여러개(20개 정도)의 edit control 이 있습니다.

    >

    > 탭키나 엔터키 또는 방향키를 통해서 포커스가 edit를 이동하게 하구요

    > 포커스를 가졌을 때와 잃었을 때에 따라서 색깔을 다르게 하려구요...

    >

    > 현재... 아래와 같은 방법으로... 하고 있거든여...

    > 각각의 edit 에 대해서 OnEnter 와 ONEXIT 함수를 만들어서...

    >

    > procedure TFM_ItmMst.Edit1Enter(Sender: TObject);

    > begin

    > Edit1.Color := clInfobk;

    > end;

    >

    > procedure TFM_ItmMst.Edit1Exit(Sender: TObject);

    > begin

    > Edit1.Color := clWindow;

    > end;

    >

    > 이런 함수는 20 여번에 걸쳐 반복하고 있습니다.

    > 정말 무식하죠?.... ^^;

    >

    > 이걸 하나의 프로시저로 만들어서 사용할 수는 없나요?...

    > 델파이를 접한지... 얼마 되지 않아서....

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

  • Profile
    하기 2001.05.20 00:57
    참고하세요...

    is 연산자를 이용하여 Component의 종류를 알수 있고요

    As연산자를 이용하여 그 해당 Component의 이름을 알수 있답니다.

    As를 사용하면 일일이 Edit1,Edit2,Edit3이런식이 아닌

    (ActiveControl as TEdit) 이런식으로 사용이 가능하거든요...

    맞나... 하여간 참고 하세요



    류성심 wrote:

    > 하나의 form 위에 panel 을 놓고...

    > 그위에 여러개(20개 정도)의 edit control 이 있습니다.

    >

    > 탭키나 엔터키 또는 방향키를 통해서 포커스가 edit를 이동하게 하구요

    > 포커스를 가졌을 때와 잃었을 때에 따라서 색깔을 다르게 하려구요...

    >

    > 현재... 아래와 같은 방법으로... 하고 있거든여...

    > 각각의 edit 에 대해서 OnEnter 와 ONEXIT 함수를 만들어서...

    >

    > procedure TFM_ItmMst.Edit1Enter(Sender: TObject);

    > begin

    > Edit1.Color := clInfobk;

    > end;

    >

    > procedure TFM_ItmMst.Edit1Exit(Sender: TObject);

    > begin

    > Edit1.Color := clWindow;

    > end;

    >

    > 이런 함수는 20 여번에 걸쳐 반복하고 있습니다.

    > 정말 무식하죠?.... ^^;

    >

    > 이걸 하나의 프로시저로 만들어서 사용할 수는 없나요?...

    > 델파이를 접한지... 얼마 되지 않아서....

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

  • Profile
    류성심 2001.05.20 01:30
    하기 wrote:

    > 참고하세요...

    > is 연산자를 이용하여 Component의 종류를 알수 있고요

    > As연산자를 이용하여 그 해당 Component의 이름을 알수 있답니다.

    > As를 사용하면 일일이 Edit1,Edit2,Edit3이런식이 아닌

    > (ActiveControl as TEdit) 이런식으로 사용이 가능하거든요...

    > 맞나... 하여간 참고 하세요



    너무 어려워요...

    edit1 과 edit2 가 있을때... (첨엔 모두 흰색)

    edit1 에 커서가 갔을때... edit1 파란색으로 변경

    탭키 등의 키를 통해서 edit2 로 커서 이동

    edit1 흰색으로 edit2 파란색으로....

    이거의 확장이라 보시고...

    구체적인 예로 가르쳐 주심 안될까요?....



    답글 감사하구요... 좋은 주말 보내세요~~

  • Profile
    김일배 2001.05.20 06:31
    TEDIT로 부터 원하는 기능을 넣어 TColorEdit와 같은 컴포넌트를 하나 만들어

    등록하여 사용하면 어떨까요?





    uses

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

    StdCtrls;



    type

    TColorEdit = class(TEdit)

    private

    { Private declarations }

    protected

    { Protected declarations }

    procedure DoEnter; override;

    procedure DoExit; override;

    public

    { Public declarations }

    published

    { Published declarations }

    end;



    procedure Register;



    implementation



    procedure Register;

    begin

    RegisterComponents('My Vcl', [TColorEdit]);

    end;



    procedure TColorEdit.DoEnter;

    begin

    inherited;

    color:=clRed; {포커스를 받을때 빨강색이라면 }

    end;



    procedure TColorEdit.DoExit;

    begin

    inherited;

    color:=clBlue; {포커스가 떠났을때 파란색이라면}

    end;



    end.



    • 류성심
    • 2001.05.20 00:32
    • 4 COMMENTS
    • /
    • 0 LIKES
    • kylix
      2001.05.20 07:27
      하나만 만들어서 Sender파라매터를 이용하세요... 20개의 에디트의 OnEnter와 OnExit를 아래 이벤트로 ...
    • 하기
      2001.05.20 00:57
      참고하세요... is 연산자를 이용하여 Component의 종류를 알수 있고요 As연산자를 이용하여 그 해당 Comp...
    • 류성심
      2001.05.20 01:30
      하기 wrote: > 참고하세요... > is 연산자를 이용하여 Component의 종류를 알수 있고요 > As연산자를 이...
    • 김일배
      2001.05.20 06:31
      TEDIT로 부터 원하는 기능을 넣어 TColorEdit와 같은 컴포넌트를 하나 만들어 등록하여 사용하면 어떨까...
    • staman
    • 2001.05.19 23:54
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 강동희
      2001.05.21 22:47
      staman wrote: > MS액세스 프로그램에 포함되어 있는 MDB 파일을 파라독스 DB로 변환하고 싶은데요 > 실...
    • 2001.05.19 23:20
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김지엽
      2001.05.19 23:31
      급 wrote: > 급해서 그러는데 인스톨 쉴드를 구할수는 없을까요 > 있는곳을 가르켜 주면 후사 > 하겠습...
    • 초보
    • 2001.05.19 22:11
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 하기
      2001.05.20 00:28
      음냐리... 2.번에 and 가 하나 (' and Name = :Name1')빠진것 같군요... 이렇게요... 그리고 1번은 코딩이...
    • hobakpa
      2001.05.19 22:33
      정확하게 모라 말씀은 못드리지만.. if (edit24.text'') and (edit25.text'') then begin ...
    • 초보
      2001.05.21 21:17
      답변 대단히 감사드립니다. 많은 도움이 된 것 같습니다. 그런데도 제가 부족함이 많아서 또 한가지 에러...
    • 박영근
    • 2001.05.19 21:44
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2001.05.21 23:02
      안녕하세요. 최용일입니다. 수학시간에 다 배우셨을 텐데요... (X, Y)를 원점에 대한 Θ만큼 회전한 ...
    • 감초
      2001.05.20 02:22
      unit2 의 implementation 아래 부분에 uses unit1; 을 추가하세요. 전유대 wrote: > 안녕하세요? > ...
    • 송수정
      2001.05.19 18:59
      초보에용^^ wrote: > 안녕하세요.전 델파이는 완전 초보라.왜이렇게 힘든지.. > 고수님덜 좀 보시고 잘못...
    • 초보에용^^
      2001.05.21 06:31
      송수정 wrote: > 초보에용^^ wrote: > > 안녕하세요.전 델파이는 완전 초보라.왜이렇게 힘든지.. > > 고...
    • 송수정
      2001.05.19 19:03
      아기코알라 wrote: > 안녕하십니까? > 건강들 하시죠? > > 아직 정확한 답을 구하지 못해 이렇게 ...
    • 명탁
      2001.05.19 20:44
      송수정 wrote: > 아기코알라 wrote: > > 안녕하십니까? > > 건강들 하시죠? > > > > 아직 정확한 ...
    • 아기코알라
      2001.05.21 19:00
      명탁 wrote: > 송수정 wrote: > > 아기코알라 wrote: > > > 안녕하십니까? > > > 건강들 하시죠? >...
    • 김인성
    • 2001.05.19 12:19
    • 1 COMMENTS
    • /
    • 0 LIKES
    • kylix
      2001.05.20 21:10
      아마두 스탠다드버전인거 같은데 스탠다드버전에는 데이타베이스관련기능이 완전히 빠져있습니다... 프...
    • 궁그미
    • 2001.05.19 06:50
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 감초
      2001.05.20 02:28
      첫째 : "Unsatisfied forward or external declaration ...."의 에라가 난 이유는 분명히 function abc(st...
    • 블랙봉
      2001.05.19 07:42
      궁그미 wrote: > 안녕하세요.. > 오늘 궁금한 것은? > 머냐면... > 공통 유닛을 만들려구 하는데... pu...
    • 처보
    • 2001.05.19 05:21
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 김한
    • 2001.05.19 04:48
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 수완
    • 2001.05.19 03:43
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최혜룡
      2001.05.19 03:54
      쉽지 않은 질문이네요 en-core.com에서 한번 물어보시죠 오라클전문가가 많더군요 수완 wrote: > ...
    • 김동수
      2001.05.19 20:33
      오라클 설치할때....언어를 선택하는 부분이 있습니다. 저는 코리언으로 설치 했구여...... 근데....다른...
    • 짱아
    • 2001.05.19 03:36
    • 6 COMMENTS
    • /
    • 0 LIKES
    • 아폴론
      2001.05.19 04:01
      짱아 wrote: HIST_DEL은 삭제를 하는 쿼리문입니다... 프로그램을 런시켰을 경우 계속... EXECSQL; 에...
    • 강호규
      2001.06.25 19:53
      안녕하십니까 질문내용중에 사용하고 계신 DB에 대한 언급이 없네요... 트랜젝션을 지원하고 있는 DB를...
    • 짱아
      2001.05.19 20:57
      아폴론 wrote: > 짱아 wrote: > HIST_DEL은 삭제를 하는 쿼리문입니다... 프로그램을 런시켰을 경우 > ...
    • 최혜룡
      2001.05.19 04:08
      DB에서 Delete하는데 시간이 많이 걸리는 모양이네요 인덱스를 사용하는지 확인해보시죠 그리고 마지막 ...
    • 짱아
      2001.05.19 21:04
      우선 혜룡님 넘 감사해요~ 항상 늘~ ^^ 시간이 많이 걸린다면 오랜후에 처리가 되어야 하는데... 그상...
    • 최혜룡
      2001.05.20 01:53
      SQL*PLUS로 DELETE DML을 수행해보세요 (WHERE조건과 파라메터에 넘어가는 값도 상수화 해야겠죠) 삭제속...
    • 바보TT
    • 2001.05.19 03:14
    • 0 COMMENTS
    • /
    • 0 LIKES