Seite 1 von 2

Problem beim Schließen von 2. Fenster: "#Gadget [gelöst

Verfasst: 03.05.2008 16:52
von Lehrer
Hallo zusammen,

ich habe ein Anfängerproblem bei der Verwendung von zwei Fenstern:

Wenn ich das zweite Fenster schließe, kommt die Fehlermeldung "#Gadget Object nicht initialisiert" :(

Für jedes Fenster wurde eine Gadgetliste erstellt.

Das zweite Fenster wird über #PB_Event_CloseWindow geschlossen.

Wer weis einen Lösungsansatz über Hilfe würde ich mich freuen.

Code: Alles auswählen

fenster()

Repeat

event=WaitWindowEvent()

Select EventWindow() ; - FENSTERSTEUERUNG1
 Case #Fenster


...


 scanner_einrichten()


...


 Case #Vorschau ; Vorschaufenster - Steuerung
  Select event
   Case #PB_Event_CloseWindow
     CloseWindow(#Vorschau)
     
   EndSelect

EndSelect ; FENSTERSTEUERUNG ENDE


Until event=#PB_Event_CloseWindow And EventWindow()=#Fenster
ende()

Procedure scanner_einrichten()
  
   OpenWindow(#Vorschau,10,10,400,650,"Vorschau",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
  
  
   CreateGadgetList(WindowID(#Vorschau))
    ImageGadget(#Vorschaubild,5, 5, 390, 590, 0) 
    
       CallFunction(#scanner_dll, "ScanToFile", programm_pfad$+"\"+"setup-temp.bmp",0)
       ;Debug programm_pfad$
      If  LoadImage(#vorschaubild_anzeige,programm_pfad$+"\"+"setup-temp.bmp")
          ResizeImage(#vorschaubild_anzeige,390,590)
          SetGadgetState(#Vorschaubild,ImageID(#vorschaubild_anzeige))
       Else
          MessageRequester("Fehler", "Bild kann nicht geladen werden",#MB_ICONWARNING)
      EndIf 
      
EndProcedure

Procedure fenster(arbeitspfad$)

open_fenster()


        AddStatusBarField(50)
        AddStatusBarField(100)
        AddStatusBarField(150)
        AddStatusBarField(100)
        AddStatusBarField(100)
        AddStatusBarField(100)



 


SetGadgetState(#jpg,1)
SetGadgetState(#qualitaet,7)



If CreateMenu(#menu, WindowID(#Fenster))
      MenuTitle("Projekt")
      MenuItem(#menu_neu, "Projekt Schließen")
      MenuItem(#menu_oeffnen, "Projekt öffnen")
      MenuItem(#menu_wiederherstellen, "Projekt wiederherstellen")
      MenuBar()
      MenuItem(#menu_quit, "Quit")
      MenuTitle("Einstellungen")
      OpenSubMenu("Listen Bearbeiten")
      MenuItem(#menu_instrumente, "Instrumente")
      MenuItem(#menu_gespielt_in, "Gespielt In")
      MenuItem(#menu_stimme, "Stimme")
      MenuItem(#menu_stimme_zusatz, "Stimme Zusatz")
      MenuItem(#menu_notenschluessel, "Notenschlüssel")
      MenuItem(#menu_besetzung, "Besetzung")
      CloseSubMenu()
      MenuBar()
      MenuItem(#menu_scanner_waehlen, "Scanner wählen")
      MenuItem(#menu_scanner_einrichten,"Scanner einrichten")
      MenuItem(#menu_arbeitspfad, "Arbeitspfad")
EndIf


;- dekaktivieren von Buttons und menues


DisableGadget(#erstelle_projekt, 1)
DisableGadget(#scannen , 1)
DisableGadget(#batch, 1)

DisableMenuItem(#menu, 1,1)

;- Pfad setzten
SetGadgetText(#arbeitspfad,arbeitspfad$)


projekt=0

;- listen fuellen
liste_fuellen(#instrument, "instrumente.dat")
liste_fuellen(#key, "key.dat")
liste_fuellen(#besetzung, "besetzung.dat")
liste_fuellen(#stimme, "stimme.dat")
liste_fuellen(#stimme_zusatz, "stimme2.dat")
liste_fuellen(#gespielt_in, "notation.dat")

bereits_gescannt(projekt_pfad$)
seiten=1
SetGadgetText(#seiten,Str(seiten))

If GetGadgetState(#deaktiviere_scanndialog)=1
    StatusBarText(#StatusBar_0, 3, "Scandialog: aus")
Else
    StatusBarText(#StatusBar_0, 3, "Scandialog: ein")
EndIf
scandialog_alt=GetGadgetState(#deaktiviere_scanndialog)

If GetGadgetState(#zweiA5)=1
    StatusBarText(#StatusBar_0, 4, "Zwei A5 scannen")
Else
    StatusBarText(#StatusBar_0, 4, "Ein A4 scannen")
EndIf
zweiA5_alt=GetGadgetState(#zweiA5)
EndProcedure


Procedure scanner_einrichten()
   ;CloseWindow(#Fenster)
   OpenWindow(#Vorschau,10,10,400,650,"Vorschau",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
  ; SetActiveWindow(#Vorschau)
  
   CreateGadgetList(WindowID(#Vorschau))
    ImageGadget(#Vorschaubild,5, 5, 390, 590, 0) 
    
       CallFunction(#scanner_dll, "ScanToFile", programm_pfad$+"\"+"setup-temp.bmp",0)
       ;Debug programm_pfad$
      If  LoadImage(#vorschaubild_anzeige,programm_pfad$+"\"+"setup-temp.bmp")
          ResizeImage(#vorschaubild_anzeige,390,590)
          SetGadgetState(#Vorschaubild,ImageID(#vorschaubild_anzeige))
       Else
          MessageRequester("Fehler", "Bild kann nicht geladen werden",#MB_ICONWARNING)
      EndIf 
      
EndProcedure

;*********************************************************************
;*********************************************************************
;
; PureBasic Visual Designer v3.95 build 1485 (PB4Code)


;- Window Constants
;
Enumeration
  #Fenster
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Text_0
  #Text_1
  #Text_2
  #Frame3D_0
  #Scandialog
  #A5_scannen
  #Anzeige_Pfad
  #scanner_einrichten
  #Text_5
  #Verlag
  #stimme
  #stimme_zusatz
  #in
  #key
  #besetzung
  #instrument
  #scannen
  #batch
  #scanne_das
  #batch_das
  #ExplorerList_5
  #titel
  #komponist
  #arrangeur
  #Text_11
  #Text_12
  #Text_13
  #Frame3D_2
  #deaktiviere_scanndialog
  #zweiA5
  #arbeitspfad_anzeige

  #Text_15





  #arbeitspfad
  #Panel
  #erstelle_projekt
  #gespielt_in




  #bmp
  #jpg
  #Qualitaet
  #anzeige_qualitaet
  #bereits_gescannt
  #Text_23
  #Frame3D_4
  #Frame3D_6
  #minus
  #plus
  #seiten
  #Text_25
  #scanner_waehlen
  #liste_instrumente
  #liste_gespielt_in
  #liste_stimme
  #liste_stimme_zusatz
  #liste_notenschluessel
  #liste_besetzung
  #Frame3D_8
  #Frame3D_9
  #oeffne_projekt
EndEnumeration

;- StatusBar Constants
;
Enumeration
  #StatusBar_0
EndEnumeration


;- Fonts
Global FontID1
FontID1 = LoadFont(1, "Arial", 10)
Global FontID2
FontID2 = LoadFont(2, "Arial", 8)

Procedure BalloonTip(WindowID, Gadget, Text$ , Title$, Icon)
  
  ToolTip=CreateWindowEx_(0,"ToolTips_Class32","",#WS_POPUP | #TTS_NOPREFIX | #TTS_BALLOON,0,0,0,0,WindowID,0,GetModuleHandle_(0),0)
  SendMessage_(ToolTip,#TTM_SETTIPTEXTCOLOR,GetSysColor_(#COLOR_INFOTEXT),0)
  SendMessage_(ToolTip,#TTM_SETTIPBKCOLOR,GetSysColor_(#COLOR_INFOBK),0)
  SendMessage_(ToolTip,#TTM_SETMAXTIPWIDTH,0,180)
  Balloon.TOOLINFO\cbSize=SizeOf(TOOLINFO)
  Balloon\uFlags=#TTF_IDISHWND | #TTF_SUBCLASS
  Balloon\hWnd=GadgetID(Gadget)
  Balloon\uId=GadgetID(Gadget)
  Balloon\lpszText=@Text$
  SendMessage_(ToolTip, #TTM_ADDTOOL, 0, Balloon)
  If Title$ > ""
    SendMessage_(ToolTip, #TTM_SETTITLE, Icon, @Title$)
  EndIf
  
EndProcedure

Procedure Open_Fenster()
  If OpenWindow(#Fenster, 22, 22, 940, 500, "Noten Commander Scanner",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered )
    If CreateStatusBar(#StatusBar_0, WindowID(#Fenster))
      EndIf

      If CreateGadgetList(WindowID(#Fenster))
        Frame3DGadget(#Frame3D_2, 15, 15, 355, 435, "Projekt")
        TextGadget(#arbeitspfad_anzeige, 25, 410, 300, 30, "Arbeitspfad:")
        ButtonGadget(#scannen, 610, 325, 150, 40, "Scannen!")
        ButtonGadget(#batch, 790, 215, 70, 20, "Batch")
        StringGadget(#scanne_das, 610, 245, 210, 35, "", #PB_String_ReadOnly)
        SetGadgetFont(#scanne_das, FontID1)
        StringGadget(#batch_das, 610, 205, 170, 30, "", #PB_String_ReadOnly)
        SetGadgetFont(#batch_das, FontID2)
        
        ;-
        ListIconGadget(#gespielt_in, 380, 25, 64, 130, "in", 60, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
        
        ;-
        ListIconGadget(#instrument, 460, 25, 130, 425, "Instrument", 125, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
        
        ;-
        ListIconGadget(#Stimme, 600, 25, 64, 130, "Stimme", 60, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
        
        ;-
        ListIconGadget(#stimme_zusatz, 670, 25, 64, 130, "Stimme+", 60, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
        
        ;-
        ListIconGadget(#key, 740, 25, 64, 130, "Noten-S.", 60, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
        
        ;-
        ListIconGadget(#besetzung, 810, 25, 104, 130, "Besetzung", 100, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
        ButtonGadget(#minus, 830, 260, 25, 20, "-")
        ButtonGadget(#plus, 880, 260, 25, 20, "+")
        StringGadget(#seiten, 855, 260, 25, 20, "", #PB_String_ReadOnly)
        TextGadget(#Text_25, 830, 245, 75, 15, "Seite(n):", #PB_Text_Center)
        
        ;- Panel
        PanelGadget(#Panel, 25, 35, 335, 360)
        AddGadgetItem(#Panel, -1, "Beschreibung")
        StringGadget(#titel, 88, 23, 150, 20, "")
        StringGadget(#komponist, 88, 53, 150, 20, "")
        StringGadget(#arrangeur, 88, 83, 150, 20, "")
        TextGadget(#Text_11, 18, 23, 60, 20, "Titel", #PB_Text_Right)
        TextGadget(#Text_12, 18, 53, 60, 20, "Komponist", #PB_Text_Right)
        TextGadget(#Text_13, 18, 83, 60, 20, "Arrangeur", #PB_Text_Right)
        TextGadget(#Text_15, 18, 113, 60, 20, "Verlag", #PB_Text_Right)
        StringGadget(#verlag, 88, 113, 150, 20, "")
        ButtonGadget(#erstelle_projekt, 148, 148, 90, 20, "Erstelle Projekt")
        Frame3DGadget(#Frame3D_9, 8, 8, 240, 170, "Neues Projekt")
        ButtonGadget(#oeffne_projekt, 13, 188, 90, 20, "Projekt öffnen")
        AddGadgetItem(#Panel, -1, "Pfad")
        ExplorerListGadget(#arbeitspfad, 3, 8, 320, 320, "")
        AddGadgetItem(#Panel, -1, "Einstellungen")
        CheckBoxGadget(#deaktiviere_scanndialog, 8, 23, 140, 20, "deaktiviere Scandialog")
        CheckBoxGadget(#zweiA5, 8, 43, 140, 25, "aktiviere Batch (2 X A5)")
        ButtonGadget(#scanner_einrichten, 8, 73, 105, 25, "Scanner einrichten")
        OptionGadget(#bmp, 183, 18, 120, 20, "Speichere als BMP")
        OptionGadget(#jpg, 183, 38, 110, 20, "Speichere als JPG")
        TrackBarGadget(#Qualitaet, 188, 73, 130, 30, 0, 10, #PB_TrackBar_Ticks)
        BalloonTip(GadgetID(#Qualitaet), #Qualitaet, "JPEG Qualität: 0=Schlechteste Qualität 10=Beste Qualität", "", #TOOLTIP_NO_ICON)
        TextGadget(#anzeige_qualitaet, 188, 58, 90, 20, "Qualität")
        Frame3DGadget(#Frame3D_4, 168, 3, 155, 135, "Ausgabe...")
        Frame3DGadget(#Frame3D_6, 3, 3, 160, 135, "Scannen...")
        ButtonGadget(#scanner_waehlen, 8, 103, 105, 25, "Scanner wählen")
        ButtonGadget(#liste_instrumente, 13, 243, 85, 20, "Instrumente")
        ButtonGadget(#liste_gespielt_in, 13, 268, 85, 20, "gespielt in")
        ButtonGadget(#liste_stimme, 13, 293, 85, 20, "Stimme")
        ButtonGadget(#liste_stimme_zusatz, 108, 293, 85, 20, "Stimme zusatz")
        ButtonGadget(#liste_notenschluessel, 108, 243, 85, 20, "Notenschlüssel")
        ButtonGadget(#liste_besetzung, 108, 268, 85, 20, "Besetzung")
        Frame3DGadget(#Frame3D_8, 8, 228, 195, 100, "Listen bearbeiten")
        AddGadgetItem(#Panel, -1, "Übersicht")
        ListViewGadget(#bereits_gescannt, 138, 28, 175, 300)
        TextGadget(#Text_23, 138, 8, 175, 15, "Bereits gescannt:")
        CloseGadgetList()
        
      EndIf
    EndIf
EndProcedure

Verfasst: 03.05.2008 16:57
von STARGÅTE
gleich wird wieder die Glaskugel gepostet ^^

Quellcode, Bitte!

Verfasst: 03.05.2008 17:05
von ts-soft
>> Wer weis einen Lösungsansatz über Hilfe würde ich mich freuen.
Im Eventloop als erstes das Fenster überprüfen, und dann, je nach Fenster
nur dessen Gadget usw. bearbeiten. Außerdem sollte eine Abfrage auf
Existens des Gadgets das ganze Kugelsicher machen, also ein If IsGadget(bla)
Ansonsten wäre ein Snippet wirklich hilfreich :wink:

Verfasst: 03.05.2008 17:40
von kswb73
Wenn du ein Fenster schließt, so werden alle Gadgets in diesem Fenster gelöscht. Alle PureBasic Fenster teilen sich die Gadgets also kannst du jederzeit jedes Gadgets auslesen. Schließt du jezt aber ein Fenster, so werden alle im Fenster vorhandenen Gadgets gelöscht.
Überprüfe deshalb vor dem Auslesen der Gadgets lieber ob sie noch existieren.

Ich hoff das war dein Problem. (Hab den Quellcode noch nicht gelesen)

Verfasst: 03.05.2008 17:58
von Lehrer
Wenn du ein Fenster schließt, so werden alle Gadgets in diesem Fenster gelöscht. Alle PureBasic Fenster teilen sich die Gadgets also kannst du jederzeit jedes Gadgets auslesen. Schließt du jezt aber ein Fenster, so werden alle im Fenster vorhandenen Gadgets gelöscht.
Überprüfe deshalb vor dem Auslesen der Gadgets lieber ob sie noch existieren
Ja ich weiß...

In dem zweiten Fenster "Vorschau" befindet sich nur ein Gadget.
Auf dieses greife ich dann auch nicht mehr zu.
Der Fehler kommt von den Gadgets im ersten Fenster.
Vermutlich habe ich sie irgentwie zerstört....

Verfasst: 03.05.2008 18:06
von ts-soft
Die Reihenfolge scheint da irgendwie merkwürdig in deinem Snippet.
1. Konstanten werden am Anfang deklariert.
2. Dynamische Fenster, also welche erstellt und auch geschlossen werden,
sollten auch dynamisch erstellt werden: #PB_Any
3. Immer prüfen ob das Gadget auch existiert, IsGadget, IsWindow usw.,
wurde jetzt aber bereits mehrmals gesagt.

Das Codeschnippsel ist leider nicht ausführbar und mir meine Zeit zu schade
am Wochenende da was ausführbares draus zu machen, die Zeit solltest Du
Dir als Fragesteller doch bitte nehmen :wink:

Gruß
Thomas

Verfasst: 03.05.2008 18:30
von Lehrer
Danke schon mal für die schnellen Tipps.

Und sorry, das ist das erste Mal, dass ich in einem Forum was frage. :oops:

Habe die ganzen Tips alle gelesen - aber leider komme ich so nicht weiter :(

Also hier der kompette Code...
Hoffentlich nicht zu viel Flickschusterei... :)
Fehlt noch die twscann.dll kann ich aber mailen, wenn erwünscht.

Das zweite fenster öffnet sich dann über den Menüeintrag Einstellungen->Scanner einrichten

Dann wird eine Testseite eingescannt und angezeigt - das soll dann alles sein.



scanner.pb:

Code: Alles auswählen

IncludeFile("fenster.pb")
UseJPEGImageEncoder()

Declare liste_fuellen(liste, datei$)
Declare scannen(projekt_pfad$,blatt1$,blatt2$)
Declare bereits_gescannt(projekt_pfad$)
Declare ende()
Declare projekt_oeffnen(arbeitspfad$, projekt)
Declare projekt_wiederherstellen(arbeitspfad$, projekt)
Declare neu()
Declare.s Zerlege_String(String$, Trenner$)
Declare scanner_einrichten()
Declare fenster(arbeitspfad$)


Global Dim Ausgabe$(500)
Global programm_pfad$
Global fensterchen

programm_pfad$=GetCurrentDirectory()


Enumeration

#menu
#menu_neu
#menu_oeffnen
#menu_wiederherstellen
#menu_quit
#menu_instrumente
#menu_gespielt_in
#menu_stimme
#menu_stimme_zusatz
#menu_notenschluessel
#menu_besetzung
#menu_scanner_waehlen
#menu_scanner_einrichten
#menu_arbeitspfad

#datei_liste
#scanner_dll

#projektverzeichnis
#verzeichnis

#bild
#bild1
#bild2

#projekt_oeffnen

#Vorschau
#Vorschaubild
#vorschaubild_anzeige

EndEnumeration

OpenLibrary(#scanner_dll, "twscann.dll")
ergebnis =  CallFunction(#scanner_dll, "IsTwain")

If ergebnis=0 
  MessageRequester("Fehler","Kein gültiger Twain-Treiber!")
  
  End
EndIf
;- Einstellungen


arbeitspfad$="M:\MV\"

;- Fenster öffnen

fenster(arbeitspfad$)



Repeat

event=WaitWindowEvent()

Select EventWindow() ; - FENSTERSTEUERUNG1
Case #Fenster
;- Projektsteuerung
  projekt_pfad$=arbeitspfad$+GetGadgetText(#titel)+"_"+GetGadgetText(#komponist)+"_"+GetGadgetText(#arrangeur)

If projekt<>projekt_alt
  projekt_alt=projekt
  bereits_gescannt(projekt_pfad$)
EndIf

If Len(projekt_pfad$)-Len(arbeitspfad$)>=6 And projekt=0
  DisableGadget(#erstelle_projekt, 0)
  
EndIf

If projekt=1
     DisableGadget(#erstelle_projekt, 1)
EndIf

;- Arbeitspfad

arbeitspfad$=GetGadgetText(#arbeitspfad)
If arbeitspfad$<>arbeitspfad_alt$
  SetGadgetText(#arbeitspfad_anzeige, "Verzeichnis: "+arbeitspfad$)
  arbeitspfad_alt$=arbeitspfad$
EndIf


;- Button
Select EventType()
  
 Case #PB_EventType_LeftClick
  Select EventGadget()
    ;- buttons abfragen
   Case #erstelle_projekt
           
     DisableGadget(#titel, 1)
     DisableGadget(#komponist, 1)
     DisableGadget(#arrangeur, 1)    
     DisableGadget(#verlag, 1)
     projekt=1
     bereits_gescannt(projekt_pfad$)
     DisableMenuItem(#menu,1,0)
     If ExamineDirectory(#projektverzeichnis, projekt_pfad$, "*.*")=0
      If CreateDirectory(projekt_pfad$)
        MessageRequester("Hinweis","Projekt erstellt",#MB_ICONINFORMATION)
      Else
         MessageRequester("Fehler!","Projektpfad '"+projekt_pfad$+"' konnte nicht erstellt werden!"+Chr(13)+"Prüfen Sie Schreib/Lese-Rechte auf dem entspr. Laufwerk"+Chr(13)+"Entfernen Sie ungültige Zeichen aus den Projektdaten",#MB_ICONWARNING)
         projekt=0
      EndIf
    Else
      ergebnis=MessageRequester("Projekt","Achtung, Projekt existiert schon."+Chr(13)+"Soll damit weiter gearbeitet werden?",#PB_MessageRequester_YesNo)
        Select ergebnis
          Case #PB_MessageRequester_Yes
            projekt=1
            bereits_gescannt(projekt_pfad$)
            SetGadgetState(#panel,3)
          Case#PB_MessageRequester_No       
            projekt=0
            DisableGadget(#titel, 0)
            DisableGadget(#komponist, 0)
            DisableGadget(#arrangeur, 0)    
            DisableGadget(#verlag, 0)
        EndSelect
    EndIf 
    If OpenFile(#projekt_oeffnen,projekt_pfad$+"\projekt.nc")
        WriteStringN(#projekt_oeffnen,GetGadgetText(#titel))
        WriteStringN(#projekt_oeffnen,GetGadgetText(#komponist))
        WriteStringN(#projekt_oeffnen,GetGadgetText(#arrangeur))
        WriteString(#projekt_oeffnen,GetGadgetText(#verlag))
        CloseFile(#projekt_oeffnen)
       Else
        MessageRequester("Fehler","Projektdatei konnte nicht erstellt werden!"+Chr(13)+"Prüfen Sie Schreib/Lese-Rechte auf dem entspr. Laufwerk"+Chr(13)+"Entfernen Sie ungültige Zeichen aus den Projektdaten",#MB_ICONWARNING)
        projekt=0
        DisableGadget(#titel, 0)
        DisableGadget(#komponist, 0)
        DisableGadget(#arrangeur, 0)    
        DisableGadget(#verlag, 0)
    EndIf
    
    
   Case #batch
    SetGadgetText(#batch_das, GetGadgetText(#scanne_das))
   
   Case #scannen
     scannen(projekt_pfad$,blattname$,blatt2$)
    
   Case #minus
    seiten-1
    If seiten<1
      seiten=1
    EndIf
    SetGadgetText(#seiten,Str(seiten))
   Case #plus
    seiten+1
    If seiten>99  
      seiten=99
    EndIf    
    SetGadgetText(#seiten,Str(seiten))
   
   Case #oeffne_projekt
    projekt=projekt_oeffnen(arbeitspfad$,projekt)
    If Len(GetGadgetText(#titel))>0
       DisableMenuItem(#menu,2,1)
       DisableMenuItem(#menu,3,1)
       DisableGadget(#oeffne_projekt,1)
    EndIf

    
  EndSelect ;EventGadget


  
EndSelect ; leftklick
 
Select event
  Case #PB_Event_Menu  ;- menu abfragen
  
   Select EventMenu() 
   
       Case #menu_neu
         projekt=neu()
         If projekt=0
           DisableMenuItem(#menu,2,0)
           DisableMenuItem(#menu,3,0)
           DisableGadget(#oeffne_projekt,0)
         EndIf
       Case #menu_scanner_waehlen
         CallFunction(#scanner_dll, "SelectSource")
       Case #menu_scanner_einrichten
         scanner_einrichten()
       Case #menu_quit
         ende()  
       Case #menu_oeffnen
         
         projekt=projekt_oeffnen(arbeitspfad$,projekt) 
          If Len(GetGadgetText(#titel))>0
            DisableMenuItem(#menu,2,1)
            DisableMenuItem(#menu,3,1)
            DisableGadget(#oeffne_projekt,1)
          EndIf
          
       Case #menu_wiederherstellen
        projekt=projekt_wiederherstellen(arbeitspfad$, projekt)
        DisableMenuItem(#menu,2,1)
        DisableMenuItem(#menu,3,1)
        DisableGadget(#oeffne_projekt,1)      
       
       EndSelect ; menu abfragen


EndSelect ; event

If GetGadgetText(#stimme_zusatz)>""
  stimme2$="-"+GetGadgetText(#stimme_zusatz)
Else
  stimme2$=""
EndIf
If GetGadgetText(#besetzung)>""
  besetzung$="_"+GetGadgetText(#besetzung)
Else
  besetzung$=""
EndIf

blattname$=GetGadgetText(#instrument)+"_"+GetGadgetText(#stimme)+stimme2$+"_in_"+GetGadgetText(#gespielt_in)+"_"+GetGadgetText(#key)+besetzung$
blatt2$=GetGadgetText(#batch_das)

If blattname$<>blattname_alt$ And Len(blattname$)>7
  SetGadgetText(#scanne_das, blattname$)
  blattname_alt$=blattname$
EndIf

If Len(blattname$)>7 And projekt=1
  DisableGadget(#scannen, 0)
Else
  DisableGadget(#scannen, 1)
EndIf

If GetGadgetState(#zweiA5)=1
  DisableGadget(#batch,0)
  
Else
  DisableGadget(#batch, 1)

EndIf

;- bildeinstellungen
If GetGadgetState(#jpg)<>jpg_alt
  If GetGadgetState(#jpg)=0
   DisableGadget(#qualitaet,1)
   StatusBarText(#StatusBar_0, 2, "Speichere als BMP")
  Else
    DisableGadget(#qualitaet,0)
    StatusBarText(#StatusBar_0, 2, "Speichere als JPG ("+Str(GetGadgetState(#qualitaet))+")")
  EndIf
  jpg_alt=GetGadgetState(#jpg)
EndIf
;- Anzeige Qualität
If qualitaet_alt<>GetGadgetState(#qualitaet)
  SetGadgetText(#anzeige_qualitaet,"Qualität: "+Str(GetGadgetState(#qualitaet)))
   StatusBarText(#StatusBar_0, 2, "Speichere als JPG ("+Str(GetGadgetState(#qualitaet))+")")
  qualitaet_alt=GetGadgetState(#qualitaet)
EndIf

If scandialog_alt<>GetGadgetState(#deaktiviere_scanndialog)
  If GetGadgetState(#deaktiviere_scanndialog)=1
    StatusBarText(#StatusBar_0, 3, "Scandialog: aus")
  Else
    StatusBarText(#StatusBar_0, 3, "Scandialog: ein")
  EndIf
  scandialog_alt=GetGadgetState(#deaktiviere_scanndialog)
EndIf

If GetGadgetState(#zweiA5)<>zweiA5_alt
  If GetGadgetState(#zweiA5)=1
      StatusBarText(#StatusBar_0, 4, "Zwei A5 scannen")
  Else
     StatusBarText(#StatusBar_0, 4, "Ein A4 scannen")
  EndIf
  zweiA5_alt=GetGadgetState(#zweiA5)
EndIf

Case fensterchen ; Vorschaufenster - Steuerung
  Select event
   Case #PB_Event_CloseWindow
     CloseWindow(fensterchen)
     
   EndSelect

EndSelect ; FENSTERSTEUERUNG ENDE


Until event=#PB_Event_CloseWindow And EventWindow()=#Fenster
ende()

Procedure fenster(arbeitspfad$)

open_fenster()


        AddStatusBarField(50)
        AddStatusBarField(100)
        AddStatusBarField(150)
        AddStatusBarField(100)
        AddStatusBarField(100)
        AddStatusBarField(100)



 


SetGadgetState(#jpg,1)
SetGadgetState(#qualitaet,7)

If CreateMenu(#menu, WindowID(#Fenster))
      MenuTitle("Projekt")
      MenuItem(#menu_neu, "Projekt Schließen")
      MenuItem(#menu_oeffnen, "Projekt öffnen")
      MenuItem(#menu_wiederherstellen, "Projekt wiederherstellen")
      MenuBar()
      MenuItem(#menu_quit, "Quit")
      MenuTitle("Einstellungen")
      OpenSubMenu("Listen Bearbeiten")
      MenuItem(#menu_instrumente, "Instrumente")
      MenuItem(#menu_gespielt_in, "Gespielt In")
      MenuItem(#menu_stimme, "Stimme")
      MenuItem(#menu_stimme_zusatz, "Stimme Zusatz")
      MenuItem(#menu_notenschluessel, "Notenschlüssel")
      MenuItem(#menu_besetzung, "Besetzung")
      CloseSubMenu()
      MenuBar()
      MenuItem(#menu_scanner_waehlen, "Scanner wählen")
      MenuItem(#menu_scanner_einrichten,"Scanner einrichten")
      MenuItem(#menu_arbeitspfad, "Arbeitspfad")
EndIf


;- dekaktivieren von Buttons und menues


DisableGadget(#erstelle_projekt, 1)
DisableGadget(#scannen , 1)
DisableGadget(#batch, 1)

DisableMenuItem(#menu, 1,1)

;- Pfad setzten
SetGadgetText(#arbeitspfad,arbeitspfad$)


projekt=0

;- listen fuellen
liste_fuellen(#instrument, "instrumente.dat")
liste_fuellen(#key, "key.dat")
liste_fuellen(#besetzung, "besetzung.dat")
liste_fuellen(#stimme, "stimme.dat")
liste_fuellen(#stimme_zusatz, "stimme2.dat")
liste_fuellen(#gespielt_in, "notation.dat")

bereits_gescannt(projekt_pfad$)
seiten=1
SetGadgetText(#seiten,Str(seiten))

If GetGadgetState(#deaktiviere_scanndialog)=1
    StatusBarText(#StatusBar_0, 3, "Scandialog: aus")
Else
    StatusBarText(#StatusBar_0, 3, "Scandialog: ein")
EndIf
scandialog_alt=GetGadgetState(#deaktiviere_scanndialog)

If GetGadgetState(#zweiA5)=1
    StatusBarText(#StatusBar_0, 4, "Zwei A5 scannen")
Else
    StatusBarText(#StatusBar_0, 4, "Ein A4 scannen")
EndIf
zweiA5_alt=GetGadgetState(#zweiA5)
EndProcedure


Procedure scanner_einrichten()
   ;CloseWindow(#Fenster)
   fensterchen=OpenWindow(#PB_Any,10,10,400,650,"Vorschau",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
  ; SetActiveWindow(#Vorschau)
  
   CreateGadgetList(WindowID(fensterchen))
    ImageGadget(#Vorschaubild,5, 5, 390, 590, 0) 
    
       CallFunction(#scanner_dll, "ScanToFile", programm_pfad$+"\"+"setup-temp.bmp",0)
       ;Debug programm_pfad$
      If  LoadImage(#vorschaubild_anzeige,programm_pfad$+"\"+"setup-temp.bmp")
          ResizeImage(#vorschaubild_anzeige,390,590)
          SetGadgetState(#Vorschaubild,ImageID(#vorschaubild_anzeige))
       Else
          MessageRequester("Fehler", "Bild kann nicht geladen werden",#MB_ICONWARNING)
      EndIf 
      
EndProcedure


Procedure neu()
  ergebnis=MessageRequester("Projekt schließen...","Projekt wird geschlossen."+Chr(13)+"Sind Sie sicher?",#MB_ICONQUESTION | #PB_MessageRequester_YesNo)
  Select ergebnis
    Case  #PB_MessageRequester_Yes       
         SetGadgetText(#titel,"")
         SetGadgetText(#komponist,"")
         SetGadgetText(#arrangeur,"")
         SetGadgetText(#verlag, "")
         DisableGadget(#titel, 0)
         DisableGadget(#komponist, 0)
         DisableGadget(#arrangeur, 0)    
         DisableGadget(#verlag, 0)         
         projekt=0
         DisableMenuItem(#menu,1,1)
         
    Case  #PB_MessageRequester_No
          projekt=1
    ; Funktionen?
    
  EndSelect     
  ProcedureReturn projekt 
EndProcedure


Procedure projekt_oeffnen(arbeitspfad$,projekt)
If projekt=2
  
  datei$=arbeitspfad$+"projekt.nc"
  Debug datei$
Else
  datei$=OpenFileRequester("Projekt öffnen",arbeitspfad$,"Projektdateien |*.nc",0)
EndIf
If datei$
 If ReadFile(#projekt_oeffnen,datei$)
  SetGadgetText(#titel,ReadString(#projekt_oeffnen))
  SetGadgetText(#komponist,ReadString(#projekt_oeffnen))
  SetGadgetText(#arrangeur,ReadString(#projekt_oeffnen))
  If Eof(#projekt_oeffnen)=0
    SetGadgetText(#verlag,ReadString(#projekt_oeffnen))
  EndIf
  DisableGadget(#erstelle_projekt, 1)
  DisableGadget(#titel, 1)
  DisableGadget(#komponist, 1)
  DisableGadget(#arrangeur, 1)
  DisableGadget(#verlag, 1)
  DisableMenuItem(0,1,0)
  projekt=1
  CloseFile(#projekt_oeffnen)
  
  
 Else
  MessageRequester("Fehler","Datei konnte nicht geöffnet werden!")
  projekt=0
 EndIf
Else
 projekt=projekt ; Funktion abgebrochen
 
EndIf ; if datei$
;MessageRequester("Achtung","Funktion nicht verfügbar")

ProcedureReturn projekt
EndProcedure

Procedure projekt_wiederherstellen(arbeitspfad$, projekt)

pfad$=PathRequester("Projekt Wiederherstellen."+Chr(13)+"Wählen Sie das entsprechende Verzeichnis aus."+Chr(13)+"Bsp.: d:\noten\Titel_Komponist_Arrangeur\ ",arbeitspfad$)
datei_vorh=0
If pfad$
  Ausgabe$=Zerlege_string(pfad$,"\")
  Ausgabe$=Zerlege_String(ausgabe$(Val(ausgabe$(0))-1),"_")
  If Val(ausgabe$(0))>=2
    SetGadgetText(#Titel, Ausgabe$(1))
    SetGadgetText(#Arrangeur, Ausgabe$(3))
    SetGadgetText(#Komponist, Ausgabe$(2))
    
    If ReadFile(#projekt_oeffnen,pfad$+"projekt.nc")
      Debug pfad$+"projekt.nc   if readfile"
      CloseFile(#projekt_oeffnen)
      datei_vorh=1
    EndIf
    
    If datei_vorh=1
      Select MessageRequester("Achtung!","Projektdatei existiert schon!"+Chr(13)+"Soll sie überschrieben werden?",#MB_ICONWARNING | #PB_MessageRequester_YesNo)
       Case #PB_MessageRequester_Yes
         datei_vorh=0
       Case #PB_MessageRequester_No
         ProcedureReturn projekt
       EndSelect
     EndIf
    
       If datei_vorh=0 
         Debug "Wiederhergestellte Datei"
         Debug pfad$+"projekt.nc"
           If OpenFile(#projekt_oeffnen,pfad$+"projekt.nc")
             WriteStringN(#projekt_oeffnen,Ausgabe$(1))
              WriteStringN(#projekt_oeffnen,Ausgabe$(2))
              WriteStringN(#projekt_oeffnen,Ausgabe$(3))
              Input$ = InputRequester("Verlag eingeben...", "Bitte geben Sie den Musikverlag ein:", "unbekannt")
              WriteStringN(#projekt_oeffnen,Input$)
             CloseFile(#projekt_oeffnen)
            Else
              MessageRequester("Fehler","Projekt konnte nicht wiederhergestellt werden!",#MB_ICONWARNING)
           EndIf
        EndIf  
    EndIf
    projekt=2
    projekt=projekt_oeffnen(pfad$,projekt)
    
  Else
    MessageRequester("Fehler","Dies scheint kein Noten Commander Projekt zu sein...",#MB_ICONWARNING)
  EndIf  


ProcedureReturn projekt
EndProcedure

Procedure scannen(projekt_pfad$,blatt1$,blatt2$)

If GetGadgetState(#bmp)=1
  modus=#PB_ImagePlugin_BMP  ; Speichert das Bild als BMP.
  erweiterung$=".bmp"
Else
  modus=#PB_ImagePlugin_JPEG ; Speichert das Bild als JPEG
  erweiterung$=".jpg"
EndIf
seiten=Val(GetGadgetText(#seiten))

For seite=1 To seiten
 seite$="_S"+Str(seite)+"v"+Str(seiten)
 If GetGadgetState(#zweiA5)=0 ;- A4 Scannen
 
   
    CallFunction(#scanner_dll, "ScanToFile", projekt_pfad$+"\temp.bmp",GetGadgetState(#deaktiviere_scanndialog))
    If LoadImage(#bild,projekt_pfad$+"\"+"temp.bmp")
      x=ImageWidth(#bild)
      y=ImageHeight(#bild)
      CreateImage(#bild1,x, y)   
      CopyImage(#bild, #bild1)
      SaveImage(#bild1, projekt_pfad$+"\"+blatt1$+seite$+erweiterung$, modus,GetGadgetState(#qualitaet))
      DeleteFile(projekt_pfad$+"\temp.bmp")
    EndIf
 Else
    
    CallFunction(#scanner_dll, "ScanToFile", projekt_pfad$+"\"+"temp.bmp",GetGadgetState(#deaktiviere_scanndialog))
    If LoadImage(#bild,projekt_pfad$+"\"+"temp.bmp")
      x=ImageWidth(#bild)
      y=ImageHeight(#bild)
      CreateImage(#bild1,x, y/2)
      CreateImage(#bild2,x, y/2)
      GrabImage(#bild, #bild2, 0, 0, x, y/2)
      GrabImage(#bild, #bild1, 0, y/2,x,y/2)
      SaveImage(#bild1, projekt_pfad$+"\"+blatt1$+seite$+erweiterung$, modus,GetGadgetState(#qualitaet))
      SaveImage(#bild2, projekt_pfad$+"\"+blatt2$+seite$+erweiterung$, modus,GetGadgetState(#qualitaet))
      DeleteFile(projekt_pfad$+"\temp.bmp")
    EndIf    
 EndIf
 If seite<seiten
  MessageRequester("Intervention","Bitte Legen Sie Seite "+Str(seite+1)+" ein.")
 EndIf
Next
 bereits_gescannt(projekt_pfad$)
EndProcedure

Procedure liste_fuellen(liste, datei$)


If ReadFile(#datei_liste, datei$)
 ; MessageRequester("" , "")
  Repeat
    eintrag$=ReadString(#datei_liste)  
    AddGadgetItem(liste, -1, eintrag$,0)
    
  Until Eof(#datei_liste)
  CloseFile(#datei_liste)
EndIf


EndProcedure

Procedure bereits_gescannt(projekt_pfad$)
  ClearGadgetItemList(#bereits_gescannt)
  If ExamineDirectory(#verzeichnis, projekt_pfad$, "")  
    While NextDirectoryEntry(#verzeichnis)
      If DirectoryEntryType(#verzeichnis) = #PB_DirectoryEntry_File
        name$=DirectoryEntryName(#verzeichnis)
        name$=Left(name$,Len(name$)-Len(GetExtensionPart(name$))-1)
        If CountString(name$,"_")>=2
          ausgabe$=Zerlege_String(name$, "_")
          ;
          
          s$=ausgabe$(Val(ausgabe$(0)))
          s$=Right(s$,Len(s$)-1)
          ist=Val(Left(s$,2))
         ; gesamt=Val(Right(s$,2))
          ;Debug "Seite "+Str(ist)+" von "+Str(gesamt)
          name$=ReplaceString(name$,"_"," ")
          If ist=1
            AddGadgetItem(#bereits_gescannt,-1,Left(name$,Len(name$)-Len(s$)-2))
          EndIf
        EndIf
      EndIf
      
     ; Debug DirectoryEntryName(#verzeichnis) + Type$ + "- Größe in Bytes: " + Str(DirectoryEntrySize(0))
    Wend
    FinishDirectory(#verzeichnis)
  EndIf


EndProcedure

Procedure.s Zerlege_String(String$, Trenner$)
For i=1 To Val(Ausgabe$(0))
  Ausgabe$(i)=""
Next
Ausgabe$(0)=""
;Debug string$
j=1

For i=1 To Len(String$)
  Lese$= Mid(String$,i,1)
  If Lese$<>Trenner$
    Ausgabe$(j)=Ausgabe$(j)+Lese$
  EndIf
  If Lese$=Trenner$
   j=j+1
  EndIf
Next
;Debug ausgabe$(1)+" "+ausgabe$(2)+" "+ausgabe$(4)
Ausgabe$(0)=Str(j)

ProcedureReturn Ausgabe$
EndProcedure

Procedure ende()

CloseLibrary(#scanner_dll)
End
EndProcedure
Fenster.pb:

Code: Alles auswählen

;
; PureBasic Visual Designer v3.95 build 1485 (PB4Code)


;- Window Constants
;
Enumeration
  #Fenster
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Text_0
  #Text_1
  #Text_2
  #Frame3D_0
  #Scandialog
  #A5_scannen
  #Anzeige_Pfad
  #scanner_einrichten
  #Text_5
  #Verlag
  #stimme
  #stimme_zusatz
  #in
  #key
  #besetzung
  #instrument
  #scannen
  #batch
  #scanne_das
  #batch_das
  #ExplorerList_5
  #titel
  #komponist
  #arrangeur
  #Text_11
  #Text_12
  #Text_13
  #Frame3D_2
  #deaktiviere_scanndialog
  #zweiA5
  #arbeitspfad_anzeige
  #Text_15
  #arbeitspfad
  #Panel
  #erstelle_projekt
  #gespielt_in
  #bmp
  #jpg
  #Qualitaet
  #anzeige_qualitaet
  #bereits_gescannt
  #Text_23
  #Frame3D_4
  #Frame3D_6
  #minus
  #plus
  #seiten
  #Text_25
  #scanner_waehlen
  #liste_instrumente
  #liste_gespielt_in
  #liste_stimme
  #liste_stimme_zusatz
  #liste_notenschluessel
  #liste_besetzung
  #Frame3D_8
  #Frame3D_9
  #oeffne_projekt
EndEnumeration

;- StatusBar Constants
;
Enumeration
  #StatusBar_0
EndEnumeration


;- Fonts
Global FontID1
FontID1 = LoadFont(1, "Arial", 10)
Global FontID2
FontID2 = LoadFont(2, "Arial", 8)

Procedure BalloonTip(WindowID, Gadget, Text$ , Title$, Icon)
  
  ToolTip=CreateWindowEx_(0,"ToolTips_Class32","",#WS_POPUP | #TTS_NOPREFIX | #TTS_BALLOON,0,0,0,0,WindowID,0,GetModuleHandle_(0),0)
  SendMessage_(ToolTip,#TTM_SETTIPTEXTCOLOR,GetSysColor_(#COLOR_INFOTEXT),0)
  SendMessage_(ToolTip,#TTM_SETTIPBKCOLOR,GetSysColor_(#COLOR_INFOBK),0)
  SendMessage_(ToolTip,#TTM_SETMAXTIPWIDTH,0,180)
  Balloon.TOOLINFO\cbSize=SizeOf(TOOLINFO)
  Balloon\uFlags=#TTF_IDISHWND | #TTF_SUBCLASS
  Balloon\hWnd=GadgetID(Gadget)
  Balloon\uId=GadgetID(Gadget)
  Balloon\lpszText=@Text$
  SendMessage_(ToolTip, #TTM_ADDTOOL, 0, Balloon)
  If Title$ > ""
    SendMessage_(ToolTip, #TTM_SETTITLE, Icon, @Title$)
  EndIf
  
EndProcedure

Procedure Open_Fenster()
  If OpenWindow(#Fenster, 22, 22, 940, 500, "Noten Commander Scanner",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered )
    If CreateStatusBar(#StatusBar_0, WindowID(#Fenster))
      EndIf

      If CreateGadgetList(WindowID(#Fenster))
        Frame3DGadget(#Frame3D_2, 15, 15, 355, 435, "Projekt")
        TextGadget(#arbeitspfad_anzeige, 25, 410, 300, 30, "Arbeitspfad:")
        ButtonGadget(#scannen, 610, 325, 150, 40, "Scannen!")
        ButtonGadget(#batch, 790, 215, 70, 20, "Batch")
        StringGadget(#scanne_das, 610, 245, 210, 35, "", #PB_String_ReadOnly)
        SetGadgetFont(#scanne_das, FontID1)
        StringGadget(#batch_das, 610, 205, 170, 30, "", #PB_String_ReadOnly)
        SetGadgetFont(#batch_das, FontID2)
        
        ;-
        ListIconGadget(#gespielt_in, 380, 25, 64, 130, "in", 60, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
        
        ;-
        ListIconGadget(#instrument, 460, 25, 130, 425, "Instrument", 125, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
        
        ;-
        ListIconGadget(#Stimme, 600, 25, 64, 130, "Stimme", 60, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
        
        ;-
        ListIconGadget(#stimme_zusatz, 670, 25, 64, 130, "Stimme+", 60, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
        
        ;-
        ListIconGadget(#key, 740, 25, 64, 130, "Noten-S.", 60, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
        
        ;-
        ListIconGadget(#besetzung, 810, 25, 104, 130, "Besetzung", 100, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
        ButtonGadget(#minus, 830, 260, 25, 20, "-")
        ButtonGadget(#plus, 880, 260, 25, 20, "+")
        StringGadget(#seiten, 855, 260, 25, 20, "", #PB_String_ReadOnly)
        TextGadget(#Text_25, 830, 245, 75, 15, "Seite(n):", #PB_Text_Center)
        
        ;- Panel
        PanelGadget(#Panel, 25, 35, 335, 360)
        AddGadgetItem(#Panel, -1, "Beschreibung")
        StringGadget(#titel, 88, 23, 150, 20, "")
        StringGadget(#komponist, 88, 53, 150, 20, "")
        StringGadget(#arrangeur, 88, 83, 150, 20, "")
        TextGadget(#Text_11, 18, 23, 60, 20, "Titel", #PB_Text_Right)
        TextGadget(#Text_12, 18, 53, 60, 20, "Komponist", #PB_Text_Right)
        TextGadget(#Text_13, 18, 83, 60, 20, "Arrangeur", #PB_Text_Right)
        TextGadget(#Text_15, 18, 113, 60, 20, "Verlag", #PB_Text_Right)
        StringGadget(#verlag, 88, 113, 150, 20, "")
        ButtonGadget(#erstelle_projekt, 148, 148, 90, 20, "Erstelle Projekt")
        Frame3DGadget(#Frame3D_9, 8, 8, 240, 170, "Neues Projekt")
        ButtonGadget(#oeffne_projekt, 13, 188, 90, 20, "Projekt öffnen")
        AddGadgetItem(#Panel, -1, "Pfad")
        ExplorerListGadget(#arbeitspfad, 3, 8, 320, 320, "")
        AddGadgetItem(#Panel, -1, "Einstellungen")
        CheckBoxGadget(#deaktiviere_scanndialog, 8, 23, 140, 20, "deaktiviere Scandialog")
        CheckBoxGadget(#zweiA5, 8, 43, 140, 25, "aktiviere Batch (2 X A5)")
        ButtonGadget(#scanner_einrichten, 8, 73, 105, 25, "Scanner einrichten")
        OptionGadget(#bmp, 183, 18, 120, 20, "Speichere als BMP")
        OptionGadget(#jpg, 183, 38, 110, 20, "Speichere als JPG")
        TrackBarGadget(#Qualitaet, 188, 73, 130, 30, 0, 10, #PB_TrackBar_Ticks)
        BalloonTip(GadgetID(#Qualitaet), #Qualitaet, "JPEG Qualität: 0=Schlechteste Qualität 10=Beste Qualität", "", #TOOLTIP_NO_ICON)
        TextGadget(#anzeige_qualitaet, 188, 58, 90, 20, "Qualität")
        Frame3DGadget(#Frame3D_4, 168, 3, 155, 135, "Ausgabe...")
        Frame3DGadget(#Frame3D_6, 3, 3, 160, 135, "Scannen...")
        ButtonGadget(#scanner_waehlen, 8, 103, 105, 25, "Scanner wählen")
        ButtonGadget(#liste_instrumente, 13, 243, 85, 20, "Instrumente")
        ButtonGadget(#liste_gespielt_in, 13, 268, 85, 20, "gespielt in")
        ButtonGadget(#liste_stimme, 13, 293, 85, 20, "Stimme")
        ButtonGadget(#liste_stimme_zusatz, 108, 293, 85, 20, "Stimme zusatz")
        ButtonGadget(#liste_notenschluessel, 108, 243, 85, 20, "Notenschlüssel")
        ButtonGadget(#liste_besetzung, 108, 268, 85, 20, "Besetzung")
        Frame3DGadget(#Frame3D_8, 8, 228, 195, 100, "Listen bearbeiten")
        AddGadgetItem(#Panel, -1, "Übersicht")
        ListViewGadget(#bereits_gescannt, 138, 28, 175, 300)
        TextGadget(#Text_23, 138, 8, 175, 15, "Bereits gescannt:")
        CloseGadgetList()
        
      EndIf
    EndIf
EndProcedure
Datendateien:
"instrumente.dat"

Code: Alles auswählen

Testeintrag
Test
Test
"key.dat"

Code: Alles auswählen

Testeintrag
Test
Test
"besetzung.dat"

Code: Alles auswählen

Testeintrag
Test
Test
"stimme.dat",

Code: Alles auswählen

Testeintrag
Test
Test
"stimme2.dat"

Code: Alles auswählen

Testeintrag
Test
Test
"notation.dat")

Code: Alles auswählen

Testeintrag
Test
Test

Verfasst: 03.05.2008 18:47
von ts-soft
Wenn Du jetzt den Code soweit kürzen würdest, das Dein Fehler auftritt,
also alles unnötige, was damit nichts zu tun hat, z.B. das laden der DLL usw.
dann wäre es noch einfacher, bzw. dann findeste den Fehler vielleicht auch
von allein.

Im moment habe ich nur Linux zur Verfügung, so das Dein Schnippsel für
mich leider nicht testbar ist (Ballontips, Pfade usw.), kann Dir also nur Tipps
geben. Ich denke mal, das das schliessen des zweiten Fensters unnötig ist,
ein verstecken und anzeigen sollte doch genügen?

Ansonsten erstell doch einfach ein Hauptfenster (möglichst ohne Designer)
mit einem Button, um das zweite Fenster zu öffnen, dann kommste doch
Deinem Fehler schon nahe.

Gruß
Thomas

Verfasst: 03.05.2008 19:04
von tobe
das problem ist das #Vorschaubild und #arrangeur den gleichen wert haben,
so wird beim öffnen des fensters ein gadget vom anderen fenster gekillt und schon knallt es wenn das alte fenster wieder auf das gadget zugreift.
ich hab mal radikal alle konstanten vom scanner.pb ins fenster.pb umverlegt und jetzt klappt es wie es soll.

mfG
tobe

Verfasst: 03.05.2008 19:29
von ts-soft
tobe hat geschrieben:das problem ist das #Vorschaubild und #arrangeur den gleichen wert haben,
so wird beim öffnen des fensters ein gadget vom anderen fenster gekillt und schon knallt es wenn das alte fenster wieder auf das gadget zugreift.
ich hab mal radikal alle konstanten vom scanner.pb ins fenster.pb umverlegt und jetzt klappt es wie es soll.

mfG
tobe
Dann hätte das hören auf meinen Tipp2:
ts-soft hat geschrieben:2. Dynamische Fenster, also welche erstellt und auch geschlossen werden,
sollten auch dynamisch erstellt werden: #PB_Any
doch geholfen :mrgreen: