|
void __fastcall TForm1::Button1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
Shape1->Brush->Color = clRed;
Timer1->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
if(Shape1->Brush->Color == clRed) Shape1->Brush->Color = clWhite;
else Shape1->Brush->Color = clRed ;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1MouseUp(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
Timer1->Enabled = false;
}
Skyz 님이 쓰신 글 :
: Shape
: 1. OnMouseDown(시작), OnMouseUp(끝) 의 Interva과 Color를 저장
: 2. Timer에 Interval Setting
: 3. Timer안에서 Interval안에서 색상 변경 코딩
: Button
: 1. Button OnMouseDown Event Handler 에서 Timer 구동
: 2. Timer 동작 제한을 변수 설정 후 Set, Reset 반복 하시거나,
: 3. Right Button 눌렸을 경우 Timer Off하시면 될것 같습니다.
:
: 정리 하자면, Shape에서 마우스 다운, 업 은 Setting만 하시면되고
: 버튼 OnMouseDown Event Handler에서 Timer 동작 On, Off 시키시면
: 될듯 합니다. 누르고 있는 동안 실행이니, MouseDown 에서 Timer Enable 시키시고
: Mouse Up시 Timer Disable 시키시면되죠.
:
: builder초짜 님이 쓰신 글 :
: : builder 막 시작한 초짜 입니다!
: :
: : 정말 정말 초짜라서 기본 부터 시작 해야 하지만.. 당장 해야 하는 프로젝트가
: :
: : 있어서요.. 이렇게 질문 드립니다.
: :
: : button 과 shape 생성 해서
: :
: : OnMouseDown 이벤트 생성 하고 눌렀을때 버튼 눌렀을때 shape 의 color이 바뀌도록 해줄려는 건데요
: :
: : 단순히 눌렀을때 바뀌고 땠을때는 원래 색으로 돌아가게는 하겠는데요
: :
: : 근데 이 OnMouseDown 이벤트는 눌렀을때 한번만 발생하는 거자나요?
: :
: : 제가 하고 싶은건 한번 누르고 그 상태를 유지했을때 색깔이 반복해서 바뀔수 있도록
: :
: : 예를 들어 원래 shape color이 흰색이고 OnMouseDown 이벤트가 발생 했을때 shape 색깔이 빨간색으로
: :
: : 바뀌게 되는거라고 한다면 마우스 버튼을 계속 누르고 있으면 일정 주기로 흰색 빨간색 와따 가따 바뀔수
: :
: : 있도록 하고 싶습니다.
: :
: : 초짜라서 설명이 제대로 된건지 모르겠습니다 . timer도 해보고 while 문도 시도해 봤지만 잘 안되네요
: :
: : 조언좀 부탁 드립니다..
|