Seite 1 von 1

MenuBar() kann nur hidden gelöscht werden?

Verfasst: Sa, 31. Mär 2018 15:32
von DelUser01
Hallo

es geht darum, ein Menü welches mit oXbpCrt:MenuBar() erstellt wurde wieder zu löschen und neu zu erstellen.

Rufe ich zuerst
oXbpCrt:Hide()
auf und lösche dann das Menü scheint das immer zu funktionieren.

lasse ich das Hide() weg kommt es unregelmäßig zu einem Fehler:
MenuError.jpg
MenuError.jpg (21.24 KiB) 2896 mal betrachtet

Code: Alles auswählen

ERROR LOG of "C:\gs\gsG1.EXE" Date: 31.03.2018 12:05:29

Xbase++ version     : Xbase++ (R) Version 2.00.918
Operating system    : Windows 10 1709 Build 16299
------------------------------------------------------------------------------
oError:args         :
          -> VALTYPE: O CLASS: XbpMenuBar
          -> VALTYPE: N VALUE: 5
oError:canDefault   : N
oError:canRetry     : N
oError:canSubstitute: Y
oError:cargo        : NIL
oError:description  : Error in array index
oError:filename     : 
oError:genCode      :          4
oError:operation    : :getItem
oError:osCode       :          0
oError:severity     :          2
oError:subCode      :       1012
oError:subSystem    : BASE
oError:thread       :          2
oError:tries        :          0
------------------------------------------------------------------------------
CALLSTACK:
------------------------------------------------------------------------------
(EVM Event Dispatcher)
Called from MENU5DRAWMENUBARITEM(602)
Called from (B)MENU4MEASUREDOIT(2083)
(In dem Thread ID2 wird anscheinend der Standard Errorblock verwendet)

Re: MenuBar() kann nur hidden gelöscht werden?

Verfasst: Sa, 31. Mär 2018 18:42
von AUGE_OHR
DelUser01 hat geschrieben: Sa, 31. Mär 2018 15:32 es geht darum, ein Menü welches mit oXbpCrt:MenuBar() erstellt wurde wieder zu löschen und neu zu erstellen.
das Object von der Method o:MenuBar() sollte man IMHO nicht löschen sondern nur alle Items.
bedenke das die Menuleiste Teil des Fenster ist d.h. Grösse wird reduziert d.h. alle Berechnungen hängen daran

es spricht aber nichts dagegen XbpMenuBar() zu verwenden.
der Unterschied von XbpMenuBar() / o:MenuBar() ist vergleichbar mit XbpPresSpace() / o:presSpace()

---

ich verwenden rechte-Maustaste Pop-Up Menu "in" einem Fenster. eine Menu gibt es bei mir nur in "Main" was für alle gilt.

Re: MenuBar() kann nur hidden gelöscht werden?

Verfasst: Mo, 02. Apr 2018 15:18
von DelUser01
AUGE_OHR hat geschrieben: Sa, 31. Mär 2018 18:42es spricht aber nichts dagegen XbpMenuBar() zu verwenden.
Mit XbpMenuBar() habe ich das inzwischen auch getestet. Da muss eben das CRT manuell angepasst werden.
Dass scheint dann wie :MenuBar() zu funktionieren, es bibt aber andere Probleme.
Z.B. reagiert der Refresh manchmal anders (oder zu langsam?). Ich nehme an, dass das möglicher Weise asynchronen Verarbeitung der Threads liegt.

Re: MenuBar() kann nur hidden gelöscht werden?

Verfasst: Mo, 02. Apr 2018 15:22
von DelUser01
Habe jetzt die Abläufe bei der Erstellung/Änderung des XbpCrt und der :MenuBar() (OwnerDraw) neu gemacht.
Der Programmstart ist jetzt OK und bei Änderungen (Move, Menüanpassung) blinkt das Fenster eben ein oder zwei Mal. Damit kann ich leben.