Q&A

  • 컴포넌트를 만드는데요. 이전컴포넌트의 이벤트를 덧붙이려면요?
안녕하세요.

  제가 에디터 컴포넌트를 수정하여 만들려고 합니다.

그런데 KeyDown, KeyUp 이벤트를 에디터 컴포넌트에서 상속받아서

기능을 추가하려고 하는데 이상한 에러가 나네요. 도움말을 봐도,

질문 난과 같이 해서 선언에러 같은 것 이 자꾸납니다.

무엇을 잘 못해 에러가 나는건지요?

==========================================
다음과 같이 해보세요.
Example입니다. 즐거운 하루되세요.

unit LsyEditpas;

interface

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

type
  TLsyEdit = class(TEditPanel)
  private
    FNo1           : TEdit;
    FNo2           : TEdit;
    { Private declarations }
  protected
    { Protected declarations }
      procedure KeyPress(var Key: Char); override;  //***** 다음과 같이 쓰세요 *****
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    { Public declarations }
  published
    { Published declarations }
      property OnKeyPress; //***** 다음과 같이 쓰세요 *****
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Sample', [TLsyEdit]);
end;

procedure KeyPress(var Key: Char);
begin
   inheried;
end;
================== 질문과 답변을 보고 해서 아래와 같은 에러가 나네요?

[Error] LsyEditpas.pas(16): Declaration of 'KeyPress' differs from previous declaration

=========== 그러나 override 와  inheried 제거 하면 실행되지만, 내용은 실행이 되지 않습니다. ^^;;;
1  COMMENTS
  • Profile
    김길현 2004.04.10 21:39
    제가 클래스를 잘못 넣었네요.  TEdit 를 상속받으려 했는데.

    그것이 문제가 아니였고,

    TEdit 를 보니,  OnKeyDown, OnKeyUp 종류들은 property로 되어 있어

    제가 어떻게  기능들은 재정의 해서 사용할수 있을까 했었는데,  답을 얻었습니

    다. 함수 원형이

    TWinControl 클래스 안에 들어 있더군요. ^^;;;

    저와 같이 실수 하지지 마시라는 의미에서 아래와 같이 붙입니다.

    선언부에  클래스는 TEdit를 상속 받았구요.


    published
      { Published declarations }
      procedure KeyPress(var key : Char);override;
      procedure KeyDown(var Key: Word; Shift: TShiftState); override;
      procedure KeyUp(var Key: Word; Shift: TShiftState); override;

    정의하시구요.
    구현부에

    procedure TPWEdit.KeyDown(var Key: Word; Shift: TShiftState);
    begin
      inherited KeyDown(Key,Shift);
    end;
    .
    .
    .
    동일하게 하시면 기능을 모두 상속받고, 아래에 기능들을 덧 붙일 수 있습니다. ^^

    평안하루 되세요.
    • 최민호
    • 2004.04.11 21:07
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 박수영
      2004.04.12 18:20
         table1.Insert;    dbgrid1.Columns[0].Field.AsString := '1111'; 이런...
    • 이중철
      2004.04.11 20:03
      Procedure TForm1.BtnBtn1Click(Sender : TObject); var   A : array[0..100] of char; &nbs...
    • 김만수
    • 2004.04.11 03:25
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 이정표
      2004.04.11 20:30
      읽다보니 아래 STX, ETX에관한 내용이 있어 추가 답변 드립니다. 제가 사용하는 예입니다. DEL STX ....
    • 이정표
      2004.04.11 20:04
      저두 장비쪽하고 통신을 하는데  저녁변수를 설정해서 쓰고있고여.. 통신 속도에 따라서 읽혀...
    • 최여옥
      2004.04.11 09:35
      도움이 될런지는 모르겠지만 전역변수를 써서 btDatas에 계속저장을 시킨후 원하는 바이트가 되면 사용하...
    • 김만수
      2004.04.11 17:11
      감사^^ 님말씀이 맞는것 같아요.. AsnycPro도움말을 자세히 읽어봤는데.. tcp/ip같은 경우에는 8바이트...
    • bbizim
    • 2004.04.10 19:36
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 너구리
      2004.04.11 04:32
      없습니다. 그런상황 때문에 트리거가 필요한것이겠죠.. 아니면 트랜잭션을 걸고 작업을 하셔야 합니...
    • 이중철
      2004.04.11 20:25
      RDB는 관계형 데이타베이스 라고 하죠 각 테이블의 관계를 정하고 그 원칙에 의해 관리합니다. 외부키를 ...
    • Galaxy
      2004.04.11 18:36
    • 최인권
    • 2004.04.10 18:50
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 하얀까마귀
      2004.04.11 09:38
      안녕하세요 하얀까마귀 입니다. 이미지를 가로또는 세로로 회전시키는 콤포넌트가 있는지는 모르겠습니...
    • 김길현
    • 2004.04.10 11:19
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김길현
      2004.04.10 21:39
      제가 클래스를 잘못 넣었네요.  TEdit 를 상속받으려 했는데. 그것이 문제가 아니였고, TE...
    • 김진태
    • 2004.04.10 05:54
    • 1 COMMENTS
    • /
    • 0 LIKES
    • [勳]후니
      2004.04.10 06:12
      델파이에선 지원 안하는 걸로 알고 있습니다. PDA os용 sdk 가 C, C++ 용으로 되어 있으며 이걸 델파...
    • 사나이
    • 2004.04.10 03:44
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 고진중
    • 2004.04.10 02:45
    • 4 COMMENTS
    • /
    • 0 LIKES
    • [勳]후니
      2004.04.10 03:07
      어떤 오류 메시지가 발생하는지요? 메모리 문제가 대부분일껀데... 2501이던가... 어떤 오류 메시지...
    • 고진중
      2004.04.10 04:07
      답변 보구 바로 확인해봤는데.. 메모리 문제가 맞는것 같습니다.. 엑셀파일 두개 띠어놓고 프로그램 ...
    • [勳]후니
      2004.04.10 05:57
      저도 전에 그 에러때문에.. 해결책을 찾아봤지만... 메모리에 BDE를 올릴수 있는 용량 초과나, 충돌로 ...
    • 고진중
      2004.04.12 18:13
      이곳저곳 다 돌아다닌 결과 해결했읍니다.. 레지스트리에서 BDE Administrator에서 [Configuration] 탭...
    • 미소^^
    • 2004.04.10 02:13
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김진용
      2004.04.10 20:27
    • 너구리
      2004.04.10 02:41
      급조해서 이게 맞게 짠건지 모르겠습니다. 한가지 의심 되는건 array[0..255] of TMyPanel 이부분...
    • 김현수
      2004.04.10 01:49
      원하는 답변이 될지는 모르겠습니다만.. unit u_form1; interface uses   Windo...
    • 엄문용
      2004.04.10 18:52
      열심히 해보겠습니다... ^^;
    • 김지훈
    • 2004.04.10 01:18
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 초보임당
      2004.04.10 01:30
      오라클 쓰시면 ROWNUM 쓰시면 될것 같은데요 select rownum as num,a, b, c from 테이블 ;
    • nilriri™
      2004.04.10 05:10
      샬롬~ vidle라는 컴포넌튼데.. 님께서 원하시는 그런 용도로 사용하기위해서 제가 약간 변경해서 사...
    • 박수영
      2004.04.10 01:45
      Mouse, Key Event 와 Timer를 연결해서 하면 될것 같은디요....
    • [勳]후니
      2004.04.10 03:19
      좀더 자세하게 설명하면.. mouse move, down 이벤트와 key down 이벤트에 time 설정을 해줍니다. ...
    • 초보임당
      2004.04.10 01:41
      음..이러면 되지 않을까요.. select rownum as num,mcode,dcode,1 as gubun from 테이블 A union all ...
    • 김지훈
      2004.04.10 19:00
      음...쿼리문이 이해가 잘 안가는군여..님....설명점.. 쿼리을 세번 써야되는건가여 ....?? 하나에 쿼리...
    • 김만수
    • 2004.04.09 20:00
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 이중철
      2004.04.09 20:15
      동적배열의 문제 같거든요 GetBlock의 파라메터가 어떤식인지 몰라서 제가 정확히 답변을 못드리지만 v...
    • 김만수
      2004.04.09 20:30
      도움말에 나와있는 GetBlock의 함수설명입니다. 지금 보니깐 Char배열이네요..쩝.. 근데 Char로 해도 안되...
    • 이중철
      2004.04.09 20:44
      var btDatas : array of byte; begin   SetLength(btDatas,Count);   asPort.GetBl...
    • 김정은
    • 2004.04.09 19:27
    • 2 COMMENTS
    • /
    • 0 LIKES
    • ^ㅡ^
      2004.04.10 05:53
      답변이 될지 모르겠네요 전 꽁수로 이렇게 해도 될꺼같은데요 temp1 := copy(edit1.text + '&n...
    • 이중철
      2004.04.09 20:58
      위의 방법은 권장사항이 아니네요 ^^(그것도 엄청나게) temp1 을 SetLength 해서 바꾸면 temp1 := 'ABCD...
    • 정효원
    • 2004.04.09 19:05
    • 0 COMMENTS
    • /
    • 0 LIKES