Position des aktiven Gadgets innerhalb ScrollAreaGadget

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Position des aktiven Gadgets innerhalb ScrollAreaGadget

Beitrag von RSBasic »

Code: Alles auswählen

ContainerNum.i = GetProp_(GetParent_(Gadget), "PB_ID")
  ScrollAreaNum.i = GetProp_(GetParent_(GetParent_(GadgetID(ContainerNum.i))), "PB_ID")
             
  Debug "ScrollAreaNum=" + Str(ScrollAreaNum.i) + ", ContainerNum=" + Str(ContainerNum.i)
(Sry, hab meine Antwort zurückgenommen, da ich dachte, ich hätte was vergessen, aber es war doch nicht so. Ich habs getestet, bei mir funktioniert es.)
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Daffy0815
Beiträge: 390
Registriert: 15.06.2005 00:44
Wohnort: 65719 Hofheim
Kontaktdaten:

Re: Position des aktiven Gadgets innerhalb ScrollAreaGadget

Beitrag von Daffy0815 »

@RSBasic

So funktioniert es nicht!

Die erste Zeile muss lauten:

Code: Alles auswählen

ContainerNum.i = GetProp_(GetParent_(GadgetId(Gadget.i)), "PB_ID")
Dann funktioniert es!

Danke

Gruß

Daffy
Wir sind LINUX
Widerstand ist zwecklos - Sie werden emuliert
Benutzeravatar
Daffy0815
Beiträge: 390
Registriert: 15.06.2005 00:44
Wohnort: 65719 Hofheim
Kontaktdaten:

Re: Position des aktiven Gadgets innerhalb ScrollAreaGadget

Beitrag von Daffy0815 »

Habe mal Zwischendurch die Lösung mit SetGadgetData getestet und bin bei "Scrollerei" gleich auf die nächste "Merkwürdigkeit" gestoßen:

Die Routine zum scrollen sieht dann so aus:

Code: Alles auswählen

Procedure Scroll(NumScrollArea.i, NumGadget.i)
    ;
    Select EventType()
        Case #PB_EventType_Focus    
            SetGadgetAttribute(NumScrollArea.i, #PB_ScrollArea_Y, GetGadgetData(NumGadget.i) - GetGadgetData(NumScrollArea.i) / 2)
        Case #PB_EventType_Change    
        Case #PB_EventType_LostFocus   
    EndSelect
    ;
EndProcedure
Data von NumGadget.i enthält die absolute Position des Eingabegadgets innerhalb des Scrollareas
Data von NumScrollArea.i enthält die Höhe des Scrollareas

Das funktioniert mit StringGadget´s und ButtonImageGadget´s einwandfrei.
Mit Comboboxen funktioniert es jedoch nicht.
Bei diesen wird der EventTyp Focus nicht erzeugt !!!

Nimmt man die Abhängigkeit vom Eventtyp aus der Funktion heraus dann funktioniert das scrollen auch mit Comboboxen aber
das hat dann bei ButtonImageGadgets den hässlichen Efekt das diese beim Berühren des Touchscreens bzw. Anklicken mit der Maus
erst einmal "wegspringen".

Gruß

Daffy
Wir sind LINUX
Widerstand ist zwecklos - Sie werden emuliert
Antworten