[ Pobierz całość w formacie PDF ]
.Top,// ARect.Right,// ARect.Bottom// ),// ASelected// );//// ALBO://// 2.Wypisz tekst w sposób bezpoœredni, nie odwo³uj¹c siê do klasy// bazowej//// ACanvas->TextRect(// Rect(// vRight,// ARect.Top,// ARect.Right,// ARect.Bottom// ),// vRight+1,// ARect.Top+1,// Value// );}}Rzeczywisty kod czyni¹cy zadoœæ powy¿szemu schematowi przedstawiamy na wydruku10.14.Prezentowany tekst odpowiedzialny jest za kompletne narysowanie ka¿dej zpozycji listy — tekstowej nazwie kszta³tu towarzyszy jego graficznyodpowiednik, co widzieliœmy ju¿ na rysunku 10.4.Wydruk 10.13 Implementacja przedefiniowanej metody ListDrawValue()void __fastcall TShapeTypePropertyEditor::ListDrawValue(const AnsiString Value,Graphics::TCanvas* ACanvas,const Windows::TRect& ARect,bool ASelected){// Zadeklaruj zmienn¹ vRight typu int wskazuj¹c¹ praw¹ krawêdŸ obrazkaint vRight = ARect.Bottom - ARect.Top + ARect.Left;try{//Krok 1 – Zachowaj wartoœæ tych w³aœciwoœci p³Ã³tna, które bêd¹// zmieniane:TColor vOldPenColor = ACanvas->Pen->Color;TColor vOldBrushColor = ACanvas->Brush->Color;//Krok 2 – Wyczyœæ obramowanie obszaru podlegaj¹cego modyfikacji.ACanvas->Pen->Color = ACanvas->Brush->Color;ACanvas->Rectangle(ARect.Left, ARect.Top, vRight, ARect.Bottom);//Krok 3 Wykonaj czynnoœci wstêpneif(ASelected) // wybierz kolor pióra{ // stosownie do stanuACanvas->Pen->Color = clYellow; // wybrania pozycji} //else{ACanvas->Pen->Color = clBtnFace;}ACanvas->Brush->Color = clBtnFace; // ustaw kolor t³a// na identyczny z kolorem t³a// Inspektora ObiektówACanvas->Rectangle( ARect.Left + 1, // wype³nij obszar kolorem t³a:ARect.Top + 1, // kolory pióra i pêdzlavRight - 1, // s¹ identyczneARect.Bottom - 1 ); ////Krok 4 Okreœl wartoœæ podlegaj¹c¹ wyœwietleniu; jest ona dostêpna// pod odziedziczon¹ metod¹ GetEnumValue()TShapeType ShapeType = TShapeType(GetEnumValue(GetPropType(), Value));//Krok 5 Narysuj ¿¹dany obrazek na p³Ã³tnieACanvas->Pen->Color = clBlack;ACanvas->Brush->Color = clWhite;switch(ShapeType){case stRectangle : ACanvas->Rectangle(ARect.Left+2,ARect.Top+4,vRight-2,ARect.Bottom-4);break;case stSquare : ACanvas->Rectangle(ARect.Left+2,ARect.Top+2,vRight-2,ARect.Bottom-2);break;case stRoundRect : ACanvas->RoundRect(ARect.Left+2,ARect.Top+4,vRight-2,ARect.Bottom-4,(ARect.Bottom-ARect.Top-6)/2,(ARect.Bottom-ARect.Top-6)/2);break;case stRoundSquare : ACanvas->RoundRect(ARect.Left+2,ARect.Top+2,vRight-2,ARect.Bottom-2,(ARect.Bottom-ARect.Top)/3,(ARect.Bottom-ARect.Top)/3);break;case stEllipse : ACanvas->Ellipse(ARect.Left+1,ARect.Top+2,vRight-1,ARect.Bottom-2);break;case stCircle : ACanvas->Ellipse(ARect.Left+1,ARect.Top+1,vRight-1,ARect.Bottom-1);break;default : break;}//Krok 6 Przywróæ wartoœci pocz¹tkowe zmodyfikowanym w³aœciwoœciom// p³Ã³tnaACanvas->Pen->Color = vOldPenColor;ACanvas->Brush->Color = vOldBrushColor;}__finally{// Wybierz jeden ze sposobów wyœwietlenia tekstu wartoœci://// 1.Odwo³anie do odziedziczonej metody ListDrawValue():inherited::ListDrawValue(Value,ACanvas,Rect(vRight,ARect.Top,ARect
[ Pobierz całość w formacie PDF ]