Q&A

  • 별도의 함수나 프로시저 생성시 파라메터 형?
안녕하세요?

다들 주말 잘 보내셨어요?

제가 여기 Q&A를 보니까 EDIT의 text를 한꺼번에 클리어 하는 아래의 코딩을

썼습니다.



procedure TFmDepA.EditClear(Sender: TObject);

var

i : integer;

begin

for i := 0 to FmDepA.ComponentCount-1 do

if Self.Components[i].ClassName = 'TDBEdit' then

TDBEdit(Components[i]).Text := '';

end;



TFmDepA는 제 폼 이름이구요.

만약 이 프로시저를 별도의 유닛에 정의하고 불러쓰려면,

인자를 어떻게 해줘야 하나요?

(fm : variant)로 썼더니 TDBEdit(Components[i]).Text := '';부분에서

TDBEDIT가 정의되어 있지 않다는 에러가 납니다.

제가 아직 초보라 외부함수나 프로시저 생성과 끌어쓰기에 익숙치 못해서

이런 질문 드립니다.

선처 바랄께요.

2  COMMENTS
  • Profile
    김하늘 2000.08.29 00:37
    최혜정 wrote:

    > 안녕하세요?

    > 다들 주말 잘 보내셨어요?

    > 제가 여기 Q&A를 보니까 EDIT의 text를 한꺼번에 클리어 하는 아래의 코딩을

    > 썼습니다.

    >

    > procedure TFmDepA.EditClear(Sender: TObject);

    > var

    > i : integer;

    > begin

    > for i := 0 to FmDepA.ComponentCount-1 do

    > if Self.Components[i].ClassName = 'TDBEdit' then

    > TDBEdit(Components[i]).Text := '';

    > end;

    >

    > TFmDepA는 제 폼 이름이구요.

    > 만약 이 프로시저를 별도의 유닛에 정의하고 불러쓰려면,

    > 인자를 어떻게 해줘야 하나요?

    > (fm : variant)로 썼더니 TDBEdit(Components[i]).Text := '';부분에서

    > TDBEDIT가 정의되어 있지 않다는 에러가 납니다.

    > 제가 아직 초보라 외부함수나 프로시저 생성과 끌어쓰기에 익숙치 못해서

    > 이런 질문 드립니다.

    > 선처 바랄께요.



    procedure EditClear(agu: TForm);

    var

    i : integer;

    begin

    for i := 0 to agu.ComponentCount-1 do

    if agu.Components[i] is TDBEdit then

    agu.Components[i] as TDBEdit).Clear; // 1

    TDBEdit(agu.Components[i]).Clear; // 2

    // 1 또는 2 아무거나 관계없으요

    // 단 TBDEdit 컴포넌트는 Db 또는 DbTables unit을 필요로 합니다.

    // uses 절에 추가하셔야 겠지요

    // is는 객체 타입을 비교할때 사용하며

    // as는 타입형변환을 뜻합니다...

    // 객체타입이 상속관계에 의하지 않는다면 형변환시

    // 에러를 유발합니다....

    // 델파이 도움말을 참고하시어 평션이나 프로시저를 만들때

    // 그안에 사용되는 객체가 있다면 그 객체가 정의된

    // unit을 항상 uses절에 포함하십시요

    end;





  • Profile
    dba 2000.08.29 00:22
    최혜정 wrote:

    > 안녕하세요?

    > 다들 주말 잘 보내셨어요?

    > 제가 여기 Q&A를 보니까 EDIT의 text를 한꺼번에 클리어 하는 아래의 코딩을

    > 썼습니다.

    >

    > procedure TFmDepA.EditClear(Sender: TObject);

    > var

    > i : integer;

    > begin

    > for i := 0 to FmDepA.ComponentCount-1 do

    > if Self.Components[i].ClassName = 'TDBEdit' then

    > TDBEdit(Components[i]).Text := '';

    > end;

    >

    > TFmDepA는 제 폼 이름이구요.

    > 만약 이 프로시저를 별도의 유닛에 정의하고 불러쓰려면,

    > 인자를 어떻게 해줘야 하나요?

    > (fm : variant)로 썼더니 TDBEdit(Components[i]).Text := '';부분에서

    > TDBEDIT가 정의되어 있지 않다는 에러가 납니다.

    > 제가 아직 초보라 외부함수나 프로시저 생성과 끌어쓰기에 익숙치 못해서

    > 이런 질문 드립니다.

    > 선처 바랄께요.





    procedure TFmDepA.EditClear(AForm: TForm);

    > var

    > i : integer;

    > begin

    > for i := 0 to AForm.ComponentCount-1 do

    > if AForm.Components[i].ClassName = 'TDBEdit' then

    > TDBEdit(Components[i]).Text := '';



    global unit을 하나 만들구...



    uses 에 쓰심 될거구여... 다른 폼에서 부를시에...



    TDBEdit부분은 global Unit의 맨위에다가... DB, DBTables를 선언 해주셔야 할겁니다...





    호출시 editclear(FmDepA)하시면 되지 않을까여...



    그럼 그폼안에 TDBEdit는 모두 초기화가 되겠지여...



    만약에 초기화 되면 않되는 TDBEdit가 있으며...



    위에 Component[i].Tag <> 0 를 넣어주시구...

    최기화 되면 않되는 컴포넌트에다가 Tag 를 0이 아닌 걸루 넣구여...



    별팁두 아니었나...

    답이 않