드롭 다운 메뉴 옵션을 추가하기 위해 TCornerButton에서 상속 한 새 구성 요소를 만들었습니다.TCornerButton 캔버스에 드로잉 위치가 잘못되었습니다
첫 번째 질문 ...
이유는이 문서에 설명 된대로 오히려 다음 "그림판"방법을 "AfterPaint"메서드를 재정의해야합니까. "페인트"를 재정의해도 그림이 나타나지 않았습니다.
두 번째 질문 ...
내가 화살표 가리키는 약간을 그립니다 "AfterPaint"방법을 사용 하는가하면 그 버튼에 포커스 때까지 권리에 대한 5 픽셀 오프셋. 버튼 위로 마우스를 가져 가면 문제가 해결되지 않습니다 (다시 칠하기를 기대할 수 있음). 나는이 코드를 "ScalePoint"의 유무와 상관없이 매번 묶었습니다. 디자인 타임에 잘못된 위치에도 표시됩니다. 런타임에 버튼이 포커스를 얻 자마자 화살표가 예상 위치로 이동합니다. 포커스가 풀리면 잘못된 위치로 다시 이동합니다. FYI. "너비"는 변함이 없습니다 - 나는 그것을 테스트했습니다.
procedure TLFButton.AfterPaint;
var
down_arrow: TPolygon;
x, y: Extended;
begin
inherited;
if FDropDownButton then
begin
Canvas.Fill := TText(FindStyleResource('text')).Fill;
x := Width - 12;
y := (Height/2) - 3;
SetLength(down_arrow, 3);
down_arrow[0] := ScalePoint(PointF(x, y), Scale.X, Scale.Y);
down_arrow[1] := ScalePoint(PointF(x+8,y), Scale.X, Scale.Y);
down_arrow[2] := ScalePoint(PointF(x+4,y+6), Scale.X, Scale.Y);
Canvas.FillPolygon(down_arrow, 255);
end;
end;
나는 이것이 어떻게 이루어져야 하는지를 알 수 있습니다. 그러나 이것은 내가 제품과 함께 배포 할 모든 스타일을 수정하는 것을 의미 할 것입니까? 스타일을 유지하려고하면 지저분 해 보입니다. Embarcadero가 표준 스타일의 변경 사항으로 업데이트를 릴리즈 할 때 무엇을해야합니까? – Martin
자신의 스타일을 기본 스타일로 병합합니다. 기본 스타일을 수정하는 것은 지저분합니다. 다음은 스타일을 병합하는 예제입니다. http://stackoverflow.com/questions/7788440/correct-way-to-create-styles-for-custom-components/7811201#7811201 –
이 문제에 대한 Embarcarero의 답변을 얻지 못했습니다. 하나지만 스타일 방법은 확실히 이것을하는 방법입니다. – Martin