자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Delphi 마우스 오버 문제...........?
2020.11.06 12:40
본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 다른 분들도 참고할 수 있도록 결과 댓글 필수(또는 감사 댓글)
(결과 댓글을 달지 않는 경우 다음 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)
-----------------------------------------------------------------------------------------------
예를 들어서 이미지 컴포넌트에서 마우스 오버시 이미지를 새로운걸로 변경하고 마우스가 빠져나가면 원래 이미지로 교체하는 게 있다면
MouseOver 이벤트에 새롱운 이미지를 교체하는 루틴을 만들고 Leave이벤트에는 원래 이미지로 교체해주는 루틴을 만들엇다면
이런 이미지 컴포넌트가 약 20개 정도 잇다면
사용자가 이미지 위에 마우스를 올려놓으면 이미지 교체해주는 루틴이 반복적으로 실행이 됥텐데 이게 좀 위험하지 않나요?
대형프로그램에서 이런 이미지 버튼들이 많다면 .... 프로그램이 죽을수도 잇지 않을까요?
제가 어떻게 하면 이미지 교체해주는 루틴을 한번만 실행시킬수가잇을까요?
마우스오버 이벤트를 대체할수잇는 다른건 없을까요?
Delphi 마우스 오버 문제...........?
2020.11.06 12:40
본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 다른 분들도 참고할 수 있도록 결과 댓글 필수(또는 감사 댓글)
(결과 댓글을 달지 않는 경우 다음 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)
-----------------------------------------------------------------------------------------------
예를 들어서 이미지 컴포넌트에서 마우스 오버시 이미지를 새로운걸로 변경하고 마우스가 빠져나가면 원래 이미지로 교체하는 게 있다면
MouseOver 이벤트에 새롱운 이미지를 교체하는 루틴을 만들고 Leave이벤트에는 원래 이미지로 교체해주는 루틴을 만들엇다면
이런 이미지 컴포넌트가 약 20개 정도 잇다면
사용자가 이미지 위에 마우스를 올려놓으면 이미지 교체해주는 루틴이 반복적으로 실행이 됥텐데 이게 좀 위험하지 않나요?
대형프로그램에서 이런 이미지 버튼들이 많다면 .... 프로그램이 죽을수도 잇지 않을까요?
제가 어떻게 하면 이미지 교체해주는 루틴을 한번만 실행시킬수가잇을까요?
마우스오버 이벤트를 대체할수잇는 다른건 없을까요?
마우스 오버등의 반복적으로 이미지를 로드한다면,
최초 1회 파일등에서 이미지를 로드해 메모리상에 올려 둔다면 그 이후 반복적인 이미지 표시를 메모리에서 하므로 큰 문제는 없을 것으로 생각됩니다.
TBitBtn, TSpeedButton과 같은 기본 컴포넌트에서는 버튼에 이미지를 표시하고, MouseEnter, MouseLeave, Disabled 등의 이미지를 각기 다르게 표현하고 있으니 해당 소스코드를 참고해보시면 궁금하신 부분에 대한 참고자료가 될것으로 생각됩니다.
소스코드는 10.4 시드니 기준으로 다음 경로에 위치합니다.
C:\Program Files (x86)\Embarcadero\Studio\21.0\source\vcl\Vcl.Buttons.pas
이미지 로드 시 필요한 해상도로 변환해 메모리에 올리며 더욱 효과적일 것 같습니다.
——————
답변에 대한 결과를 남겨주시면, 다른 분들이 같은(비슷한) 문제 해결에 큰 도움이 됩니다.
(미리 답변 결과 등록 감사합니다.^^)