Seite 1 von 4

Überlappende Gadgets

Verfasst: 02.02.2007 18:08
von Georg
Folgendes Problem:

es überlappen sich zwei Gadgets.
Wenn ich nun mit der Maus in dem sich überlappenden Bereich komme,
bekommt das darunter liegende Gadget den Focus obwohl ich mit der
Maus noch über den Oberen Gadget bin.
Ist das bei Euch auch so?

Code: Alles auswählen

EnableExplicit
Global idWndMain , hWndMain
Global Btn1, Btn2 
Global Event

idWndMain = OpenWindow(#PB_Any, 0, 0, 500, 500, "Überlappende Gadgets",  #PB_Window_SystemMenu  |#PB_Window_ScreenCentered |#PB_Window_Invisible)
  hWndMain = WindowID(idWndMain)
    CreateGadgetList(hWndMain)
        Btn1 = ButtonGadget(#PB_Any,150,150,200,100,"Btn 1")
        Btn2 = ButtonGadget(#PB_Any,200,200,200,100,"Btn 2")

HideWindow(idWndMain,0)   
    
Repeat
  Event = WaitWindowEvent()
        Select Event 
            Case #PB_Event_CloseWindow
               If EventWindow() = idWndMain  
                     End
                  EndIf  
        EndSelect 
ForEver
End

PureBasic 4.02

Georg

Verfasst: 02.02.2007 18:14
von ts-soft
>> Ist das bei Euch auch so?
Ja

Frage: Wofür ist sowas gut :freak:

Verfasst: 02.02.2007 18:28
von Kaeru Gaman
> Frage: Wofür ist sowas gut

schätze mal du meinst, wozu es gut sein soll, dass sich gadgets überhaupt überlappen?

Verfasst: 02.02.2007 18:40
von Georg
Ja, in normalen Oberflächen ist das sicher kein Problem, da die
Gadgets dort sich normalerweise nicht überlappen.
Wenn man aber dem User die Möglichkeit bietet die Gadgets auf der
Oberfläche zu verschieben, dann schon.
Da gibt es sicher ein Problem mit der ZOrder von PB.
Könnte das jemand bitte mal mit besseren Englisch Kenntnissen weiter melden?
Danke.
Übrigen haben VB2005, C++ diesen Effekt nicht.

Georg
VB 4.02

Verfasst: 02.02.2007 18:46
von Kaeru Gaman
du meinst bestimmt das C++ aus dem VS2005?

die MS produkte haben in der hinsicht eine zusätzliche feature.
die Z-Order wird auch bei denen nur emuliert, wenn ich mich recht entsinne.
die Z-Order ist eigentlich keine eigentschaft, die im grundkonzept vorhanden ist.
soweit ich mich erinnere, gab es bei den x eigentschaften-feldern der objekte keines,
das die Z-Order angibt.
man musste sogar zur erstellungszeit im Visual-Designer die Z-order durch
hin- und her-schalten in ordnung bringen, um sie später korrekt funktionell zu haben.

also, bei einem PB-Programm mit verschiebbaren gadgets solltest du dann vielleicht eine LinkedList erstellen,
die auf überlappungen mit einem eigenen refresh-loop reagiert.

auf jeden fall ist es keine Bugmeldung für PB, das OS stellt so etwas einfach nicht zur verfügung.

Verfasst: 02.02.2007 18:49
von ts-soft
Problem hängt mit XP-Style zusammen, ohne gehts wie es soll. Aber ob das
ein Bug ist? Mein englisch ist sowieso zu schlecht :mrgreen:

Verfasst: 02.02.2007 19:04
von Georg
ts-soft
ich habe es unter Win98 getestet, gleicher Effekt. Nur das es hier keinen
Hover Effekt gibt. Beim Mausklick im überlappenden Bereich bekommt
das untere Gadget den Focus.

Kaeru Gaman
habe ich schon alles probiert. Bloß habe ich ja darauf keinen Einfluss.
Es kann ja nicht sein, daß das darunter liegene Gadget den Focus bekommt, wenn ich mit der Maus noch auf dem Oberen bin.
Ich meine schon daß das ein Bug ist.

Georg

Verfasst: 02.02.2007 19:24
von ts-soft
Ich sehe es so:
Gerade die Einfachheit und Geschwindigkeit zeichnen PB aus. Wenn solche
Ausnahmefälle in jedem Fall behandelt werden, gibts auch Einschränkungen
im eigenem Callback, in der Dateigrösse usw. Dann hätte man auch Delphi
oder ähnlich nehmen können, wo alle Controls in einer riesen Klasse
gekapselt sind, dafür die kleinste Anwendung entsprechend groß.

"Fehlverhalten" im Callback selber abfangen, aber als Bug würde ich es nicht
unbedingt sehen.

Aber darüber kann man natürlich unterschiedlicher Meinung sein. Ich melde
es nicht als Bug, weil ich es nicht als Bug sehe.

Verfasst: 02.02.2007 19:47
von Georg
Wenn man sich mit der Maus über einem Gadget befindet und das Gadget darunter den Focus erhält, ... kein Bug?
Man könnte das zwar mit einem großen Programmieraufwand abfangen,
aber das ist wohl nicht im Sinne des Erfinders, wie man so sagt.
Ich müsste alle Gadgets des Fenster enumerieren und immer prüfen ob ein Gadget überlappt und den Focus auf das obere Gadget setzen.

Wahnsinn

Georg

Verfasst: 02.02.2007 19:53
von ts-soft
>> Wenn man sich mit der Maus über einem Gadget befindet und das Gadget darunter den Focus erhält, ... kein Bug?
Der Bug ist die Positionierung der Gadgets. Überlappend ist kein mir
bekanntes Windows-Feature, auch wenns Programmiersprachen gibt, die so
etwas unterstützen.
In keinen der Richtlinien zur Gestaltung von Windows-Oberflächen steht was
von überlappenden Controls.