Ostatnio zająłem się rozgrzebywaniem źródła TSpinEdit żeby wyciągnąć ten podwójny przycisk góra-dół. Wszystko byłoby ładnie, gdyby nie to, że przy wszystkich operacjach na bitmapach wywala mi błąd "[Error] SpinButton.pas(266): Incompatible types: 'tagBITMAP' and 'TBitmap'". Nie wiem o co chodzi, ani nawet co to jest to "tagBITMAP" i czemu nie jest traktowane jak bitmapa. Z tego co mi się zdaje, to się wzięło z TSpeedButton, którego źródła oczywiście nie są dostępne. Czy ktoś mógłby mi pomóc?
Chcesz ten podwójny przyciszk góra dół ? Zaraz obok spin edit jest spinbutton po co się męczyć ?
Ale ja chcę go przerobić i jest mi potrzebny jego kod w osobnym pliku.
A co chcesz uzyskać przerabiając go? Może już jest taki kopmponent tylko o nim nie wiesz :-P :-D :-P
Tu jest taki mały haczyk. TBitmap to obiekt (klasa) a tagBitmap to rekord:
tagBITMAP = packed record
bmType: Longint;
bmWidth: Longint;
bmHeight: Longint;
bmWidthBytes: Longint;
bmPlanes: Word;
bmBitsPixel: Word;
bmBits: Pointer;
end;
Nie da się tych dwóch elementów przyporządkować sobie.
Więc jak to robi moduł Spin?
Więc jak to robi moduł Spin?
Ładuje bitmapę wykorzystując funkcje WinAPI zamiast obiektu TBitmap.
Ale tam jak byk stoi przypisanie (w jednej z funkcji): Result:=UpButton.Glyph czy jakoś tak. UpButton dziedziczy po SpeedButton który ma wartość Glyph typu TBitmap, a funkcja w której jest to przypisanie ma result typu TBitmap. po prostu nie kapuję, gdzie jest zadeklarowane to tagBITMAP i czemu to przypisanie działa w module Spin, skoro po wyciągnięciu z niego nie chce działać.