NoxxDxMenu
NoxxDxMenu - nieaktualne!!!!
Komponęt potrzebuje zainstalowanego DelphiX! :D
Poniżesz tematy zawierają:
1.Object Inspector - pierwsze spotkanie z komponętem ;)
2.Co zrobić aby działało, czyli procedury, które muszą zostać wstawione do programu aby TNoxxDxMenu działał.
===1===
Tutaj będą tylko zagadnienia, bez których nie zrobisz menu:
==Kliknij na mój komponęt, umieść go na formie i w inspektorze obiektów....==
Pozycje:
Center - wycentrowanie itemów
Checked_imagelist - dximagelist - itemów zaznaczonych
Maxitems - maksymalna ilość itemów użytych w grze/programie
Mouse_Enabled - określa czy muszka ma zostać użyta w menu
Separate - odległość pomiędzy itemami
Start_top - odległość (od góry) pierwszego itema
Unchecked_imagelist - dximagelist - itemów odznaczonych
Noxxdxmenuconst - to jest wartość stała, której nie powinno się zmieniać (chyba, że chcesz) :]
Noxx_Cursor - Typ kursora, który zostanie użyty:
- ncNone - Nie widac go ale myszka działa
- ncWindows - Normalny kursor windows
- ncNoxx - Kursor, który znika za itemami :)
Draw_cursor - określa czy rysowac kursor myszki (cosik jak ncNoce)
===2===
W FormCreate daj:
noxxdxmenu1.account; - dzięki temu będziesz mogł za pomocą jednej procedury (bez mozolnego wpisywania powrócić do głównego menu)
W FormKeyDown daj:
if key=vk_up then
begin
noxxdxmenu1.Go_up; //...góra to idziemy w górę
end;
if key=vk_down then
begin
noxxdxmenu1.Go_down; //...dół to idzemy na dół
end;
i
bardzo ważne, ale gdy chcesz miec wywołanie akcji za pomocą Enter'a
if key=vk_return then
begin
tu kod na bindowanie (w samplu procedura process_key)
end;
tego chyba tłumaczyć nie trzeba :)
Poniższe procedury umieść w DXTimer
noxxdxmenu1.refresh; //ona wszystko rysuje (zawiera instrukcję flip)
i
noxxdxmenu1.draw_mouse(x2,y2);
Teraz w Noxxdxmenu onmousedown
NoxxDXmenu1.mouse_click(x,y);
tu kod na bindowanie (w samplu procedura process_key)
A w onmousemove
noxxdxmenu1.set_mousepos(x,y);
Teraz musisz tylko umieścić grafikę.
Teraz UWAGA bardzo ważna rzecz:
KAZDY Z DXIMAGES (PRZECIWNY SOBIE tzn. jak mam checklist to checklist2)
MUSI IEC TAKĄ SAMĄ LICZBĘ ITEMÓW (JEŻELI NIE BĘDZIE MIAŁ TO PO PROSTU NACIŚNIJ PRZYCISK DODANIA TAKICH ITEMÓW (GRAFIKI TAM NIE BĘDZIE PO PROSTU DODAJ "gołe" ITEMY DO DXIMAGELIST)
W SAMPL'U JEST TEGO PRZYKŁAD - SPRAWDŹ - BO INACZEJ BĘDZIE WYŚWIETLAŁO CI BŁĄD "list index of bounds ()"
procedura
change_menu_gui(unchecked, checked, noxx_const :
TDXimagelist; separate, max_items, start_top, sselected : integer; centered, enable_mouse,
draw_cursor : boolean; cursor_style : string);
tworzy nowe menu.
===================
Jeżeli ustawiłeś wszystko co wyżej podałem musisz jeszcze ustwaić DxDraw dla Imagelistów znajdujących się na formie.
I wtedy powinieneś ustawić wszystko żeby nie robiło kolizji (takie nowatorskie ;) rozwiązania wprowadziłem ja - musisz dokładnie przestudiować sample bo inaczej nie zrobisz sowjego Menu!
I później to wygląda tak tylko, że inaczej :)