안녕하세요?
다들 주말 잘 보내셨어요?
제가 여기 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가 정의되어 있지 않다는 에러가 납니다.
제가 아직 초보라 외부함수나 프로시저 생성과 끌어쓰기에 익숙치 못해서
이런 질문 드립니다.
선처 바랄께요.
> 안녕하세요?
> 다들 주말 잘 보내셨어요?
> 제가 여기 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;