[ Pobierz całość w formacie PDF ]
.Okno podpowiedzi ma byæ otoczone czarn¹ ramk¹ o gruboœci czterech pikseli,wewn¹trz której, na tle w kolorze wyœwietlacza, wypisany zostanie tekstpodpowiedzi.Aby uzyskaæ taki efekt, wype³niamy najpierw ca³e okienko czarnymkolorem:TRect Rect = ClientRect;Canvas->Brush->Color = clBlack;Canvas->FillRect(Rect);Potem centrycznie wpisujemy w nie prostok¹t w kolorze wyœwietlacza, mniejszy zka¿dej strony o cztery piksele; prostok¹t ten jest jednak uprzednio otaczanyjednopikselow¹ ramk¹ symuluj¹c¹ efekt trójwymiarowy – kreœleniem ramek nap³Ã³tnie kontrolki zajmuje siê funkcja Frame3D z biblioteki VCL:Rect.Left += 4;Rect.Top += 4;Rect.Right -= 4;Rect.Bottom -= 4;Frame3D(Canvas, Rect, clBtnShadow, clBtnHighlight, 1);Canvas->Brush->Color = TColor(0xB4CDBB);Canvas->FillRect(Rect);Aby unikn¹æ nadmiernego zbli¿enia wyœwietlanego tekstu do obramowania, nale¿ydodatkowo zmniejszyæ obszar wyœwietlania – o 5 pikseli u góry okna (dziêkiczemu wyœwietlana liczba plasowaæ siê bêdzie wyraŸnie przy dolnej krawêdzi, jakna wyœwietlaczu) i po jednym pikselu na pozosta³ych krawêdziach:Rect.Left += 1;Rect.Top += 5;Rect.Right -= 1;Rect.Bottom -= 1;W tak przygotowany obszar mo¿na wreszcie wpisaæ tekst podpowiedzi, wyrównany(jak na wyœwietlaczu) prawostronnie:DrawText( Canvas->Handle,Caption.c_str(),-1,&Rect,DT_RIGHT|DT_NOPREFIX|DT_WORDBREAK|DrawTextBiDiModeFlagsReadingOnly() );Szczegó³ow¹ anatomiê okna TCalculatorHintWindow, wyœwietlaj¹cego wartoœæ 22/7jako stosowane niekiedy przybli¿enie liczby p, przedstawia rysunek 3.3.Surowy rysunek, bez opisów znajduje siê w pliku Orig-5-3.bmp.Proszê owykonanie poszczególnych napisów i wymiarowañ, z zamian¹ angielskiego „pixels”na polskie „piksele” w odpowiednim przypadku, a wiêc32 piksele1 piksel5 pikseli9 pikseli16 pikseli32 piksele109 pikseli129 pikseliRysunek 3.3.Anatomia okna TCalculatorHintWindowWykorzystanie zdarzenia OnHint klasy TApplicationManipulowanie zdarzeniami klasy TApplication staje siê ³atwiejsze, gdywykorzystaæ do niego komponent TApplicationEvents znajduj¹cy siê na stronieAdditional palety komponentów.Przypomnijmy – w momencie gdy generowane jest zdarzenie OnHint obiektuApplication, w³aœciwoœæ Hint tego¿ obiektu zawiera d³ug¹ czêœæ podpowiedzi;je¿eli tekst podpowiedzi nie zawiera znaku (|) (a wiêc je¿eli nie podzielono gojawnie na czêœæ d³ug¹ i krótk¹), zostaje on w ca³oœci u¿yty w obydwu tychrolach.Nieco wczeœniej pokazaliœmy, jak w takiej sytuacji wyœwietliæw³aœciwoœæ Application–>Hint na pasku statusowym formularza, obecnie posuniemysiê nieco dalej, bowiem w naszym kalkulatorze d³uga czêœæ podpowiedzirozdzielona bêdzie pomiêdzy dwa panele: œrodkowy, powielaj¹cy (z nielicznymiwyj¹tkami) mnemoniczne oznaczenie klawisza i prawy, zawieraj¹cy informacjênieco bardziej opisow¹.Stajemy wiêc przed zadaniem takiego rozdzieleniad³ugiej czêœci podpowiedzi, by rozdzielenie to widoczne by³o ju¿ w treœciw³aœciwoœci Hint odnoœnej kontrolki.Nie pisaliœmy o tym wczeœniej, ale tylko pierwszy znak „|” wystêpuj¹cy w treœcipodpowiedzi traktowany jest jako separator oddzielaj¹cy czêœæ d³ug¹ i krótk¹;wyodrêbnienie obydwu czêœci jest zadaniem funkcji biblioteki VCL o nazwachGetShortHint() i GetLongHint(), których treœæ (w jêzyku Object Pascal)prezentuje siê nastêpuj¹co:function GetShortHint(const Hint: string): string;varI: Integer;beginI := AnsiPos('|', Hint);if I = 0 thenResult := HintelseResult := Copy(Hint, 1, I - 1);end;function GetLongHint(const Hint: string): string;varI: Integer;beginI := AnsiPos('|', Hint);if I = 0 thenResult := HintelseResult := Copy(Hint, I + 1, Maxint);end;Nastêpuj¹ce ich deklaracje znajduj¹ siê w pliku nag³Ã³wkowymInclude\Vcl\controls [ Pobierz caÅ‚ość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • listy-do-eda.opx.pl