Leeres Gadget

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Frabbing
Beiträge: 160
Registriert: 15.02.2007 21:31
Kontaktdaten:

Leeres Gadget

Beitrag von Frabbing »

Hi,

kennt jemand eine Möglichkeit (ohne API!) ein Gadget so zu erstellen oder zu verändern, dass es keinerlei Inhalt anzeigt? Natürlich, ohne HideGadget... oder den hidden-Style. Der scheidet aus verschiedenen Gründen aus.
Keinerlei Inhalt bedeutet hier: Kein Pixel wird gesetzt, also komplett transparent.
Gruß, Frank
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Leeres Gadget

Beitrag von RSBasic »

Du kannst einen ContainerGadget mit der Größe "0,0" erstellen. Da dieses Gadget ohne Flag borderless ist, ist es nicht sichtbar, egal was sich im ContainerGadget befindet. Reicht dir das?
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7039
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Leeres Gadget

Beitrag von STARGÅTE »

Code: Alles auswählen

Enumeration
	#Window
	#Gadget
EndEnumeration


OpenWindow(#Window, 0, 0, 800, 600, "WindowTitle", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
	StringGadget(#Gadget, 0, -100, 400, 20, "Hallo Welt!")

Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
Einfach aus dem Anzeigebereich schieben.

Aber ich würde das nicht zu sehende Gadget erst garnicht erstellen, das wäre wohl die einfachste Variante.
Wenn du also nicht HideGadget verwenden willst (warum auch immer) wozu erstellst du überhaupt das Gadget?

Um Inhalte zu speichern kannst du Variablen oder Speicherblöcke nutzen /:->
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Frabbing
Beiträge: 160
Registriert: 15.02.2007 21:31
Kontaktdaten:

Re: Leeres Gadget

Beitrag von Frabbing »

Nein leider nicht. Ich vergaß, die Größe sollte real sein, sagen wir mal z.B. 160x120 Pixel.

Das ganze soll eine Art übergeordnetes Gadget für weitere normale (Child-)Gadgets sein, darf aber nicht sichtbar und auch nicht hidden sein. Es muss auch ein richtiges Gadget sein, das mit PB erstellt wurde, ohne API also.
Hab selber bislang leider keine Möglichkeit gefunden.
Gruß, Frank
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Leeres Gadget

Beitrag von RSBasic »

Soll das vielleicht ein Overlay-Gadget sein? Also ein Gadget, welches auf ein anderes Gadget positioniert werden soll?
Vielleicht sagst du uns, was du vor hast. :D
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7039
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Leeres Gadget

Beitrag von STARGÅTE »

Wenn du ein ContainerGadget brauchst, warum nimmst du dann nicht das ContainerGadget mit 160x120 ?
Das ist nicht sichtbar und ist dafür auch gedacht.

Wenn du nicht so um den heißen Brei reden würdest, könnte dir man vielleicht besser helfen.

Es ergibt für mich keinen Sinn, zB ein ListViewGadget zu erstellen, welches aber nicht sichbar ist :?
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Frabbing
Beiträge: 160
Registriert: 15.02.2007 21:31
Kontaktdaten:

Re: Leeres Gadget

Beitrag von Frabbing »

Ich bin nur an dieser speziellen Lösung interessiert, die ich oben genau beschrieben habe. Etwas Alternatives, Selbstgemaltes oder Controls auf Basis einer eigenen Class (damit wäre es sehr einfach) scheiden aber leider aus mehreren unterschiedlichen Gründen aus, damit erübricht sich eine weitere Erklärung, bzw. scheiden Alternativen - die ich ansonsten immer gerne entgegen nehme, an dieser Stelle aber nicht funktionieren werden - von vornherein aus.
Wenn du ein ContainerGadget brauchst, warum nimmst du dann nicht das ContainerGadget mit 160x120 ?
Das ist nicht sichtbar und ist dafür auch gedacht.
Natürlich ist eine farbige Fläche sichtbar, spätestens, wenn der Hintergrund bunt ist; und das ist er.
Ich brauche nicht zwinged ein Containergadget, irgendein Gadget reicht mir, bei dem man z.B. per Subclassing alle Ausgaben unterdrückt. :-)
Es ergibt für mich keinen Sinn, zB ein ListViewGadget zu erstellen, welches aber nicht sichbar ist
Für mich aber schon. Kennst du dazu eine Möglichkeit?
Gruß, Frank
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Leeres Gadget

Beitrag von RSBasic »

Die von PB bereitgestellten Gadgets sind alle nicht transparent, daher wird es ohne API schwierig.
Mit API kannst du beispielsweise dafür sorgen, dass ein TextGadget transparent ist, aber ohne API ist das so nicht möglich.

\\Edit:
Kannst du mir erklären, warum du kein HideGadget() nutzen möchtest?

\\Edit2:
Und was ist, wenn du dein "Overlay"-Gadget hinter deinem Gadget erstellst, damit es überdeckt wird, aber dennoch in dieser Position vorhanden ist?
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Frabbing
Beiträge: 160
Registriert: 15.02.2007 21:31
Kontaktdaten:

Re: Leeres Gadget

Beitrag von Frabbing »

RSBasic hat geschrieben:Die von PB bereitgestellten Gadgets sind alle nicht transparent, daher wird es ohne API schwierig.
Mit API kannst du beispielsweise dafür sorgen, dass ein TextGadget transparent ist, aber ohne API ist das so nicht möglich.

\\Edit:
Kannst du mir erklären, warum du kein HideGadget() nutzen möchtest?

\\Edit2:
Und was ist, wenn du dein "Overlay"-Gadget hinter deinem Gadget erstellst, damit es überdeckt wird, aber dennoch in dieser Position vorhanden ist?
API geht nur nicht bei der reinen Gadget-Erstellung. Ist es erzeugt, kann ich durchaus auf API zurückgreifen.
Eine tolle Möglichkeit ist die API LockWindowUpdate(), die unterdrückt ein Neuzeichnen. Leider aber nicht, wenn das ganze Fenster manuell neugezeichnet wird, was manchmal der Fall ist.

Zu 1.: Ja, aktuell hidden-Gadgets bedeuten in der Anwendung schon ein Nicht-Vorhandensein. Die Anwendung (ein visueller Designer übrigens) ignoriert diese in manchen Situationen.

Zu 2.: Das geht nicht, weil das unsichtbare Gadget mehrere Gadget binden soll. D.H., verschiebe ich das Unsichtbare, sollen alle seine Childs mitwandern, wie bei normalen Parents üblich.
Gruß, Frank
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Leeres Gadget

Beitrag von RSBasic »

Ah ein VD, ich habs geahnt. Für PB oder für eine andere Programmiersprache? Ich hoffe, für eine andere Sprache. <)

Und was ist, wenn du jedes Gadget, welches erstellt werden soll, automatisch in einem ContainerGadget (+2px Größe) unterbringst? Dann hättest du einen unsichtbaren Rahmen, den du anfassen kannst.

Oder die Gadgets, die du in Gruppen verschieben möchtest, in einem ContainerGadget plazierst.

Ansonsten hätte ich eigentlich gesagt, dass du einfach ein transparentes Overlay-Gadget/-Fenster bei MouseHover drauflegst, damit du das unterliegende Gadget verschieben oder in der Größe ändern kannst.

Btw: Es gibt auch einfach die Möglichkeit, das Gadget unter der Maus zu ermitteln.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Antworten