|
한꼬맹이 님이 쓰신 글 :
: 최성규 님이 쓰신 글 :
: : 일단, 팁하나: TImage object의 이미지 내용을 없애고, 안보이게 하기
: : TImage * Image1;
: : ...
: : Image1->Visible = false; // 이건 아니고, (단지 안보일 뿐임)
: :
: : Image1->Picture = NULL; // 이렇게 하면 메모리에서 해제하는 것 같음(VCL 소스 뒤져본 결과)
: :
: : 다음은 질문__________입니다.
: : TImage object가 현재 이미지를 가지고 있는지 아닌지를 알아내는 확실하고
: : 합리적인 방법은 무엇일까요?
: :
: : 긴 에필로그_____입니다.
: : 아쉬운대로 방법 1)
: : 위 팁에서 힌트를 얻어 Image1->Picture == NULL 로 판단하기:
: : 하지만, 프로그램이 막 시작한 시점에는 Image1 에 이미지를 넣지 않았더라도
: : Image1->Picture != NULL 이더군요. FormCreate() 따위에서 NULL 초기화를
: : 직접 하게끔 코딩을 하고, 또 프로그램 진행중에 Unload하는 상황에서는
: : 반드시 Image1->Picture = NULL; assign을 해 준다면 방법 1)을 쓰는 데
: : 큰 문제는 없는 것 같습니다.
: :
: : 아쉰운대로 방법 2)
: : Image1->Picture->Width == 0 || Image1->Picture->Height == 0 으로 판단하기:
: : 몇 번 해 보는데 그림이 없으면 당연히 폭과 높이가 0 이겠지요?
: : 단, 행여 Image1->Width와 Image1->Height로 판단하려 해서는 안됨.
: :
: : 저는 현재는 '아쉬운 대로' 방법 2)를 쓰고 있습니다. 무리는 없을까요?
: : 그럼
: :
: : 최성규
: :
: :
:
: 안녕하세요
:
: 한꼬맹이 입니다.
:
: 다음과 같이 해보세요
:
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
: if(Image1->Picture->Graphic == NULL)
: ShowMessage("그림 없다.");
: else
: ShowMessage("그림 있다.");
: }
:
: 그럼 참고하시길....
하하! 그렇군요.
전 Image1->Picture->Graphic->Empty property로 확인 시도해 보았었는데,
초기에 EAccessViolation 이 발생해서, "..->Graphic 까지 볼 건 없겠군, 이라고
생각했는데.... 조금만 더 생각했으면 ...
여튼 감사합니다.
최성규
|