Seite 1 von 2

Icons in der Statusbar und im Imagemenue verschwinden

Verfasst: 02.11.2008 21:13
von Broncbuster
Hallo,
folgendes Problem:(4.20)
Ich lade jedes Bild eines Ordners in ein dynamisch erzeugtes ButtonImageGadget. Dies funktioniert. Nebeneffekt jedesmal ab dem 21 Bild
verschwinden die Icons in der Statusbar und im Imagemenue. Lade ich weniger als 21 Bilder bleibt alles. Hat jemand da eine Idee oder handelt es sich um einen Bug.

Verfasst: 02.11.2008 21:17
von NicTheQuick
Code?

Verfasst: 03.11.2008 00:31
von hardfalcon
Eieiei, das hört sich verdächtig danach an, als würden der Blackjack- und der Crystal-Ball-Bug zusammen auftreten. Das ist so ausgesprochen selten, du solltest anfangen, Lotto zu spielen... :o

Verfasst: 03.11.2008 00:54
von Kaeru Gaman
NicTheQuick hat geschrieben:Code?
ja, bitte einen code, der nachvollziehbar den Fehler reproduziert.

das heißt, der code muss auch im Editor einfach zu starten sein,
und nicht noch tausende ressourcen brauchen, die man zusätzlich reinpacken muss.

Verfasst: 03.11.2008 14:54
von Broncbuster
Wollte paar Codeschnipsel zusammenstellen, dabei habe ich festgestellt, das die Icons da bleiben, wenn ich die ButtonImageGadgets nur in das Formular lade und nicht in das ScrollAreaGadget. Fehler scheint mit dem ScrollAreaGadget zusammen zu hängen. Werde heute abend noch etwas rumprobieren. Code folgt dann.

Verfasst: 03.11.2008 23:12
von Broncbuster

Code: Alles auswählen

;Hallo, hier mal ein Beispielcode
;Von Broncbuster
;also habe die betreffenden Procedures aus meinem Hauptprogi herausgenommen und dieses Beispiel eingefügt
;Im Gegensatz zum Hauptprogi bekomme ich hier das ScrollAreaGadget nicht sichtbar
;die Icons im Menue und Statusbar verschwinden trotzdem
;egal wie ich es drehe, jedesmal passiert was anderes
;liegt hier vielleicht ein grober Fehler meinerseits vor, den ich jedoch nicht sehe?



UseJPEGImageDecoder()
UseTGAImageDecoder()
UsePNGImageDecoder()
UseTIFFImageDecoder()
UseJPEGImageEncoder()
UsePNGImageEncoder()

Enumeration
#Photoalbum
#Neu
#Ende
#ScrollArea_Bilder
#ImM1
#Stat0
#Image_Thumb0
#Loadpro
EndEnumeration
Global Imagegadget
Global a
Global c
Global e
Global lang
Global breit
Global A$
Global Dim datei$(array)
Declare NeuesBild()
Imagegadget = #Image_Thumb0
Procedure Open_Photoalbum()
ExamineDesktops()
If OpenWindow(#Photoalbum, 0, 0, DesktopWidth(0) - 20, 200, "Bug-Test",  #PB_Window_SystemMenu |#PB_Window_SizeGadget| #PB_Window_TitleBar )
 LoadImage(#Ende,"Gfx\rotieren0.ico") 
 LoadImage(#Neu,"Gfx\viewer5.ico")
   If CreateImageMenu(#ImM1, WindowID(#Photoalbum))   
      MenuTitle("Ordner")                 
      MenuItem(1, "Öffnen", ImageID(#Neu)) ; Album einladen
   EndIf
   If CreateStatusBar(0, WindowID(#Photoalbum))
      AddStatusBarField(600) ; Meldung
      AddStatusBarField(150) ; Bildanzahl
   EndIf
StatusBarIcon(#Photoalbum, 1, ImageID(#Ende))
EndIf
EndProcedure
Procedure Albumeinladen()
;DisableWindow(#Photoalbum, 1)
If CreateGadgetList(WindowID(#Photoalbum))
    ;ScrollAreaGadget(#ScrollArea_Bilder, 5, 30, WindowWidth(#Photoalbum) - 10, 150, 780, 120, 0)
    ;bekomme das ScrollAreaGadget nicht sichtbar, lasse es weg und packe die ButtonImagegadgets auf das Formular
    ;CloseGadgetList()
EndIf
a = 2
Imagegadget = 1
InitialPath$ = "C:\"  
ImagePath$ = PathRequester("Bitte wählen Sie einen Pfad aus", InitialPath$)

SetWindowTitle(#Photoalbum, "UseIT-Photo " + Album$)
Global NewList Files.s() 
For b = 1 To 5
  Select b
    Case 1
      A$ = "BMP"
    Case 2
      A$ = "JPG"
    Case 3
      A$ = "JPEG" 
    Case 4
      A$ = "PNG" 
    Case 5
      A$ = "TGA"
  EndSelect
  ExamineDirectory(1,ImagePath$,"*."+A$)
  Repeat 
    NextFile = NextDirectoryEntry(1) 
    If NextFile = 1 
      AddElement(Files()) 
      Files() = DirectoryEntryName(1) 
      CountFiles + 1 
    EndIf 
  Until NextFile = 0 
Next b
;
If CountList(Files()) 
  d = CountList(Files()) 
ForEach Files() 
    A$ = ImagePath$+Files()
    If LoadImage(Imagegadget,A$)
    StatusBarText(0, 0, "Lade Bild aus "+A$)
    StatusBarText(0, 1, "Bild: " + Str(a-1) + " von " + Str(d))
    NeuesBild()
    EndIf
    Imagegadget = Imagegadget + 1 
    a = a + 1
  Next 
EndIf
StatusBarText(0, 0, "")
StatusBarText(0, 1, "Bildanzahl: " + Str(d))
If IsGadget(#ScrollArea_Bilder) <> 0
MessageRequester("Hallo", "ScrollAreaGadget sollte da sein")
Else
MessageRequester("Hallo", "ScrollAreaGadget ungültig")
EndIf
EndProcedure

Procedure NeuesBild()
;OpenGadgetList(#ScrollArea_Bilder,a)
;Bei gesetzter ScrollAreaGadget sollte das ButtonImageGadget hinzugefügt werden
ResizeImage(Imagegadget, 100, 70)
ButtonImageGadget(Imagegadget, c, 5, lang, breit,ImageID(Imagegadget))
;CloseGadgetList() 
;Wenn OpenGadgetList...aktiviert ist kommt immer Fehlermeldung CloseGadgetList without OpenGadgetList
c = c + 115
EndProcedure
a = 2
Imagegadget = 2
lang = 110
breit = 110
Open_Photoalbum()
Repeat
  EventID = WaitWindowEvent()
    Select EventID 
      Case #PB_Event_Menu
         Select EventMenu()
            Case 1 ; Album einladen
                    c = 0
                   lang = 110
                   breit = 110
                   Albumeinladen() 
         EndSelect 
       Case #PB_Event_CloseWindow
          Quit = 1 
    EndSelect
 Until Quit = 1
End [code]
[/code]

oberes Doppler-Posting gelöscht - Kaeru fecit

Langsam wache ich auf!!!(1.Teil)

Verfasst: 04.11.2008 09:54
von Broncbuster
Okay hätte mich wohl im Anfängerforum melden sollen.
Wenn ich die Icons als ImageID(0) und ImageID(1) bezeichne und die Zeile Imagegadget = 1 lösche, bleiben die Icons erhalten. Habe die Icons ja praktisch überschrieben.
Aber das mit dem ScrollAreaGadget kriege ich nicht gebacken.

Code: Alles auswählen

Procedure Open_Photoalbum()
ExamineDesktops()
If OpenWindow(#Photoalbum, 0, 0, DesktopWidth(0) - 20, 200, "Bug-Test",  #PB_Window_SystemMenu |#PB_Window_SizeGadget| #PB_Window_TitleBar )
 LoadImage(0,"Gfx\rotieren0.ico") 
 LoadImage(1,"Gfx\viewer5.ico")
   If CreateImageMenu(#ImM1, WindowID(#Photoalbum))   
      MenuTitle("Ordner")                 
      MenuItem(1, "Öffnen", ImageID(1)) ; Album einladen
   EndIf
   If CreateStatusBar(0, WindowID(#Photoalbum))
      AddStatusBarField(600) ; Meldung
      AddStatusBarField(150) ; Bildanzahl
   EndIf
StatusBarIcon(#Photoalbum, 1, ImageID(0))
EndIf
EndProcedure

Re: Langsam wache ich auf!!!(1.Teil)

Verfasst: 04.11.2008 10:03
von Kiffi
Broncbuster hat geschrieben:Aber das mit dem ScrollAreaGadget kriege ich nicht gebacken.
wäre gut, wenn Du das noch mal gesondert erklären kannst, weil ich das
aus den oben stehenden Postings nicht herauslesen kann.

Wo liegt jetzt Dein genaues Problem mit der ScrollAreaGadget?
(Kleiner, lauffähiger Code, der das Problem zeigt, wäre von Vorteil)

Grüße ... Kiffi

ScrollAreaGadget wird nicht angzeigt

Verfasst: 04.11.2008 11:32
von Broncbuster
Hallo,
also im ersten Code verschwinden die Icons. Mein Fehler: überschreibe diese beim erstellen der dynamischen ButtonImageGadgets. Mal sind sie da, mal nicht. Habe die Procedure OpenPhotoalbum geändert. Jetzt werden sie immer angezeigt, da eine eindeutige ID vergeben.
Wenn jetzt im 1. Codebeispiel die Bilder in das Scrollareagadget eingefügt werden sollen, bekomme ich die Scrollarea nicht angezeigt.
Der ausgeklammerte Scrollareacode muß jedoch aktiviert werden. Probier mal. Laut Meldung in der Statusbar werden alle Bilder eingeladen.

Re: ScrollAreaGadget wird nicht angzeigt

Verfasst: 04.11.2008 12:08
von Kiffi
Broncbuster hat geschrieben:Probier mal.
#ScrollArea_Bilder hat lt. Deiner Enumeration den Wert 3

Dann gibt es eine Variable 'Imagegadget', die Du pro Bild hochzählst.

Mit ButtonImageGadget(Imagegadget) überschreibst Du das
ScrollAreaGadget, wenn Imagegadget ebenfalls den Wert 3 erreicht.

Grüße ... Kiffi