Wozu ist der Befehl MenuHight()

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Wozu ist der Befehl MenuHight()

Beitrag von Xaby »

Jetzt mal ganz ehrlich ...

#M=19 hätte es auch getan.

Denn es kommt nichtmal ne Fehlermeldung:
Wenn mein Programm nur so lautet:

Code: Alles auswählen

Debug MenuHeight()
Ich nutze PB 4.1

Vielleicht liegt es ja daran. Wieso lautet der MenuBefehl nicht:
MenuHight(#Meu)
wie auch bei StatusBarHeight(#Statusbar) und ToolBarHeight(#Toolbar)

Sollte MenuHeight() nicht 0 zurückgeben, wenn man keins in dem angesprochenen Window benutzt? Und woher weiß MenuHeight, wenn man nicht das passende Menu erstmal mit angeben muss?

Also der MenuHeight() - Befehl ist ein Befehl, der so wie er ist, kein Befehl ist.

Und wie kann man mehrere Menüs unter einander machen?
Oder ist das nicht gedacht? Lieber eine Toolbar, die auch Text enthält?

Wie kann ich ohne fette If-Abfragen meine richtige Menübar-Höhe ermitteln? Ist sie wirklich immer 19? Was ist, wenn jemand ganz große Schrift eingestellt hat?

>>
CreateMenu(#Menu,WindowID(#MainWin))
MenuTitle("")
HideMenu(#Menu,1)
<<

Code: Alles auswählen

Procedure MenuHeightF(Menu.l)
  If IsMenu(Menu)
    ProcedureReturn MenuHeight()
  Else
    ProcedureReturn 0
EndIf    
EndProcedure
Aber wenn mein Menu versteckt ist oder keinen Titel hat ... liefert mir meine Funktion natürlich auch 19.
GetMenuTitle gibt es nicht. ...

Und das Verstecken ändert nichts an der Menu-Höhe. Zu mindest nicht an MenuHeight()

.... :?
Kinder an die Macht http://scratch.mit.edu/
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

>> #M=19 hätte es auch getan.
Nein, bei mir ist es 20 und noch anderen ganz was anderes. Zur Berechnung
der Gadgetpostion nach einem Resizing ist dieser Wert wichtig.
Da die Höhe auf jedem Fenster (nicht auf jedem OS oder gar Skin) gleich ist,
ist eine Nummernangabe überflüssig. Auf all diese Dinge wärste vielleicht von
alleine gekommen, wenn Du nicht soviel Zeit in Babyöl investieren würdest :twisted:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Beitrag von Xaby »

ich freue mich, dass du meinen Beitrag gelesen hast, auch wenn er ausversehen im Mülleimer gelandet ist.

Und ganz ehrlich, ich habe versucht, mein Fenster mit Gadgets so zu gestalten, dass die Menü-Höhe mitberücksichtigt wird.

Doch bei einem Resize muss ich ja irgendwie herausfinden, ob ein Menü überhaupt sichtbar ist oder nicht.
Das macht bei mir 19 und bei dir 20 Pixel Unterschied.

wie mache ich das nun also am klügsten?

Würde die Funktion einfach 0 wiedergeben, wie die anderen beiden, dann wäre es für mich viel einfacher und auch sinnvoller.

Es war nur ein Hinweis und eine Frage. Ich finde, die Befehle sollten sich den Nutzern anpassen und nicht umgekehrt.

:allright:

[p.s.: übrigens BabyÖl war vorgestern, liest ja keiner mehr mit, wenn es nicht auffindbar ist. MenüBefehl ist mir heute erst aufgefallen. Zeitlich also nicht gleich. GetTopicBeschäftigungsDate(#Topic)

#Baby=1
#Menu=2
Debug GetTopicBeschäftigungsDate(#Baby)
>> ergibt Wert: Vorgestern
Debug GetTopicBeschäftigungsDate(#Menu)
>> ergibt Wert: Heute

Ist eigentlich genauso wie StatusBarheight()
Hätte ich mich mit der Sache gar nicht beschäftigt
Debug GetTopicBeschäftigungsDate(#Menu)
>> ergibt Wert: 0

Nüjschah? :mrgreen:
Kinder an die Macht http://scratch.mit.edu/
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

>> ob ein Menü überhaupt sichtbar ist oder nicht.
Das Bedarf keiner KI, sondern als Programmierer solltest Du es Wissen.
Sollte der Benutzer eine Möglichkeit haben das Menü zu verstecken, so wirste
es auch Wissen, da der Benutzer ein Ereignis auslösen muß, um es zu
verstecken (das verstecken des Menüs ist sowieso unüblich, bzw. nur selten
Sinnvoll)

>> ich freue mich, dass du meinen Beitrag gelesen hast
Lediglich zwangsweise überflogen, lesen werde ich den Quatsch mit
Sicherheit nicht, sehe auch keine Sesamstrasse mehr.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Beitrag von Xaby »

Deine Antwort habe ich erwartet.

Es gibt also keinen IsMenuVisible(#Menu) Befehl.

Du hast schon Recht, mit dem, was du schreibst. Aber dann muss man ja wieder für jedes Menu eine extra Variable einführen.
Ich finde alles, was man setzen kann, sollte man auch lesen können.

Werde natürlich auch ohne diesen Befehl auskommen.

[OT]
>> Was ist an Sesamstraße falsch? Ich schau sie mir gern an.
>> Grafzahn, Erni und Berd

Genauso Hallo Spencer oder die Muppets. Oder die Fraggles.
Die Dinos ...
[/OT]
Zuletzt geändert von Xaby am 12.06.2007 14:22, insgesamt 1-mal geändert.
Kinder an die Macht http://scratch.mit.edu/
Benutzeravatar
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag von Tafkadasom2k5 »

<OT@TS-Soft>
Xabys "geisitge Ergüsse" hin oder her: Bitte zügle mal deinen Sarkasmus und deine Negativbemerkungen. Wie es aussieht hat Xabys Text ein paar Leute erreicht, und somit auch erreicht, was er wollte. Nur weil es DIR nicht gefällt, ist es nicht gleich Müll. Also bitte sei mal ein bisschen netter okay? Bist doch sonst auch nicht so :wink: :allright: </OT@TS-Soft>
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
Antworten