Cześć
A więc zachciało mi się zrobić extra graficzny buttonik zmieniający obrazek zależnie od sytuacji.
Chciałem iść prostą drogą więc ten mój komponencik oparłem na bazie TImage
czyli:
Type
TdzButton = class(TImage)
W założeniach ma reagować (zmieniać obrazki)
- na najechanie na niego myszką
- kliknięcie
- puszczenie
- zjechanie z jego obszaru przy wciśniętym klawiszu myszy (ma być wklęśnięty)
aż puszcze klawisz... itd
znaczy łeb w łeb jak to robią świrdołsy ;)
Wszystko pięknie opisałem - komunikaty itd..itd
ALE ort! na takim problemie:
Mam przykładowo pare buttonów i wciskam pierwszy no i zaznacza mi się jako
domyślny ( pogrubienie ramki) czyli prawidłowo.
Następnie jade myszką wcisnąć drugi to ten drugi staje się domyślnym.
No i tu sęk ;(
Ten pierwszy musi w momenie naciśnięcia drugiego buttona stać się buttonem niedomyślnym czyli bez ramki zaznaczenia.
I jak to zrobić ? by zmienił obrazek ?
Przecież na niego nie klikam więc nie wygeneruje żadnego zdażenia
Jedynie mogę przechwycić nazwę klikniętego buttona jako "Button1"
Znaczy robię to tak:
klikam na button pierwszy - on sie robie aktywny (domyślny)
pobieram jego nazwe do zmiennej globalnej "Name"
Teraz jade kliknąc drugi button i tam na początku wyciagam nazwę tego pierwszego buttona no i coś powinienem zrobić np. Button1 ma zmienić obrazek na obrazek niedomyślnego buttona bo właśnie kliknołem na drugi który staje się domyślny.
Powiem tak : ładuje obrazki w ten sposób:
PROCEDURE TMojButton.Wyglad(Opcja:Byte);
Begin
//opcje: 0 - normany , 1 - podświetlony , 2 - naciśnięty, 3 - wyłączony
//pobranie obrazka...
if opcja = 0 then Picture.Bitmap.LoadFromResourceName(hInstance, 'button0');
if opcja = 1 then Picture.Bitmap.LoadFromResourceName(hInstance, 'button1');
if opcja = 2 then Picture.Bitmap.LoadFromResourceName(hInstance, 'button2');
if opcja = 2 then Picture.Bitmap.LoadFromResourceName(hInstance, 'button2');
//itd.
Wszystko wykonuje w procedorach pomiędzy
TMojButton...
coś tam...
end;
Zdażenia też np:
PROCEDURE TMojButton.MyszDBLCLK(var Message:Tmessage);
I teraz problem tkwi w tym że z wnętrza takiej procedury nie mogę załadować
obrazka do innego buttona pisząc: Button1.Wyglad(0);
Ten kod jest kodem komponentu - który ma być wstawiony na forme i tyle
A z poziomu programu przecież nikt nie bedzie śledził buttonów jak który ma i kiedy wyglądać <płacz>
Cienki Bolek jestem i prosze o pomoc może jest coś takiego żebym z wnętrza
takich procedur mógł posiadając nazwe np Button1 - coś z tym zrobić
jakiś send albo coś ?
Proszę pilnie o pomoc bo trzecią nocke siedze i strasznie oczy mam podsinione
no i chyba wage zrzuciłem :-/