Witam
Tworzę sobie podstawy pod większą aplikacyjkę. Jestem na etapie formatek bazowych (z których potem będzie wszystko dziedziczone). No i pomyślałem że fajnie będzie dodać swoje buttony zamiast standardowych (TButton, TSpeedBtn ...) więc stworzyłem sobie prostą klasę:
(pisane z pamięci)
TbButton = class(TButton)
pivate
fGlyph : TBitmap;
procedure SetGlyph(aValue : TBitmap);
published
property Glyph : TBitmap read fGlyph write SetGlyph;
public
constructor Create(aOwner : TComponent); override;
destructor Destroy; override;
end;
w konstruktorze jest
inherited Create(aOwner);
fGlyph := TBitmap.Create;
w destruktorze jest
fGlyph.Free;
inherited Destroy;
w SetGlyph jest
If Assigned(aValue) and (aValue <> fGlyph) then
fGlyph.Assign(aValue);
Generalnie na ten moment nie chce nic robić z tym buttonem, chce mieć na przyszłość furtkę żeby sobie zrobić gradientowe buttoniki, z obrazeczkami ... - wystarczy że zmienię klasę TbButton i bedzie super.
-
No ale wczoraj chciałem sobie dla testów dodać właściwość Glyph. No zrobiłem to jak napisałem wyżej. Pojawiła się ona w inspektorze obiektów, co więcej jest button do wyboru bitmapy, pojawia się okienko jak przy TSpeedButton.Glyph, tylko po wybraniu jest AccessViolation :( Wie ktoś dlaczego ? Nie chcę na razie nic malować, po prostu chcę przechowywać bitmapę, dla testów.
-
Czytałem żę właściwości w sekcji published są zawsze (prawie zawsze) strumieniowane do dfm'ek - czyli rozumiem że nie muszę się martwić o zapis tego obrazka ?
-
Przeklikałem sobie wczoraj klasy z których się wywodzi TButton, nie znalazłem w żadnej z nich pola fCanvas. Czy to znaczy że on nie ma Canvas'a ? Czy ma domyślnie jako kontrolka okienkowa, i trzeba użyć GetDC ?
Aha. Nie chcę TSpeedButton'a, ani żadnych innych komponentów, chcę sobie zrobić swój. Jak ktoś uważa że wyważam otwarte drzwi - to może ma rację, ale ja się chce tego nauczyć i już !
Z góry dzięku za wskazówki.