[Delphi] Dynamiczne TListItems dla TMainMenu

0

Zaraz się poważnie wkurzę, bo i tak za dużo czasu już na to straciłem, chodzi mi o prostą rzecz - zrobienie menu głównego w stylu np "Ulubione" w IE, tj. w momencie "rozwijania" mają się uzupełnić itemy. Wszystko pięknie tylko menu z interesujących ma tylko zdarzenie onClick które chyba nie zawsze jest wywoływane :/ poza tym nie udało mi się poprawnie stworzyć subitemów, za pierwszym razem subitemy pojawiały się górnym lewym rogu ekranu zamiast na swoim miejscu :/ za drugim podejściem było ok, ale po kilku kliknięciach zaczyna wywalać pełno AV [sciana] może ktoś wspomóc ?

dodam że jeśli w TMainMenu dodam submenu i itemy będę przywiązywał do tego submenu to wszystko działa

0

W TMainMenu mam item Plik, oto jego akcja OnClick (jest wywoływana przy kliknięciu - zawsze):

var item:TMenuItem;
    subitem:TMenuItem;
begin
Plik.Clear;
item:=TMenuItem.Create(Plik);
Plik.Add(Item);
item.Caption:='Item';
subitem:=TmenuItem.Create(item);
item.Add(subitem);
subitem.Caption:='SubItem';
end;

Jak masz dalej problemy.. odezwij się na GG.

0

no to dokładnie tak robie, ten kod nie działa, znaczy działa tak, że menu się pojawia w górnym lewym rogu formy (wcześniej napisałem ekranu - pomyłka) i kreseczka pod P (jeśli dam &P żeby ustawić skrót) się rozmazuje przy kliknięciu ...

jakiego masz windowsa że ci to działa ? może to od niego zależy też

// wszystko działa b. dobrze jak menu nie jest na początku puste tylko ma chociaż jeden już item, to chyba tak zrobię jak się nie da inaczej - w sumie np w ulubionych też są inne stałe itemy oprócz linków

z tym kliknięciem to chyba nie aktualne - wtedy udało mi się tak "rozwinąć" menu że akcja z onclick się nie wykonała, teraz nie umiem powtórzyć tego wyczynu

0

Mam normalnie WinXP SP2, ale na WinME oraz Win98 też działa. Ani razu nie miałem z tym problemów - wklej jakiś przykładowy kodzik to się zobaczy.

0

File -> New -> Application
TMainMenu na TForm
DblClick TMainMenu
Caption = &Plik
Name = Plik
DblClick Plik
Wklejenie kodu chociażby tego powyżej
Run

Efekt (z lewej co jest, z prawej co powinno i chciałbym mieć):

user image

gdy kod siedzi w jakimś powiedzmy onclick buttona albo nie jest puste kiedy chce się wyświetlić to jest w porządku - jest jak to po prawej, ale jak jest w onclick pliku to niestety świruje

0

Wyłączyłem nawet style XP, by mieć standardowy wygląd.. u mnie działa prawidłowo. Dodam tylko, że mam Delphi7 Pro (build 8.1).

[Poprawka] Działa, ale Plik musi być SubItemem menu, ale nie głównym menu. W przeciwnym wypadku, kod, który jest powyżej nie działa, gdy w kodzie jest linia Plik.Clear. Menu w ogóle się nie pojawia. Nie zmienia tego fakt, że po tym itemy są dodawane.

W skrócie:

Plik -> Dodawane itemy (nie działa - nie pokazuje menu)
Plik -> Item -> Dodawane itemy (działa)

Jak z kodu usunie się pierwszą linię, działa prawidłowo.

0

jejku, no to od początku piszę że działa jak jest jako subitem ale ja chcę tak, dobra już wstawiłem stały item i se działa, EOT ale dzięki za zainteresowanie tematem

0

Sorry.. po prostu odruchowo wstawiałem subitema - bo.. zawsze tak robiłem :). Ale ważne jest to, że u mnie nie ma, takich jak u Ciebie, problemów ze sposobem pojawiania się menu czy rysowaniem opcji. U mnie tylko menu się nie pojawia właściwie (w sumie wcale się nie pojawia).

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.