MenuBar() kann nur hidden gelöscht werden?

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
DelUser01

MenuBar() kann nur hidden gelöscht werden?

Beitrag 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) 2829 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)
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

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

Beitrag 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.
gruss by OHR
Jimmy
DelUser01

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

Beitrag 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.
DelUser01

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

Beitrag 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.
Antworten