Seite 3 von 3

Verfasst: 10.02.2008 15:21
von #NULL
du musst den macro-parameter von der pb-funktion unterscheiden, damit im macro nicht beides ersetzt wird:

Code: Alles auswählen

Macro Name(Typ, Window_ID)
openwindow(#Constand,X,Y,X,Y,"Text"+Typ,WindowID(Window_ID)

Verfasst: 11.02.2008 18:50
von Tsuki-Namida
Kiffi hat geschrieben:Ist Dir schon mal aufgefallen, warum die Gadgets in Main-Fenster nicht
gezeichnet werden, solange Du Dein NeuProjekt-Fenster geöffnet hast? Das
ist unter anderem eine negative Auswirkung, wenn man so vorgeht, wie Du
es getan hast.
ich habe mein code jetzt totel um gewürfelt und habe jetzt nur noch eine eventschleife...
dennoch habe ich dieses problem -.-

hier noch mal der code (der neue)

Code: Alles auswählen

Enumeration
  #Main_Fenster
  #Neu_Projekt
  #StringEditor
EndEnumeration

Enumeration
  #Editor
  #Menue
  #Panel
  #AddOn
  #Projct
  #NeuPro_ProName
  #NeuPro_OrdnerName
  #NeuPro_ProVerzeichnis
  #NeuPro_ButtonVerzeichnis
  #NeuPro_ButtonOK
  #NeuPro_ButtonAbbruch
  #StringEditorListView
  #StringEditorStringNeu
  #StringEditorButtonNeu
  #StringEditorButtonOK
  #StringEditorButtonAbbruch
EndEnumeration

Global NewList Strings.s()
Global NewList Variabeln.s()
Global Ergebnis$
Global Image0

Image0 = CatchImage(0, ?Image0)

DataSection
Image0:
  IncludeBinary "IMG\dll.ico"
EndDataSection

Procedure.s GetExePath()
  Prg.s = Space(#MAX_PATH)
  GetModuleFileName_(GetModuleHandle_(0), @Prg, #MAX_PATH)
  Prg = GetPathPart(Prg)
  If (FindString(prg,"\PureBasic\Compilers", 1))
    Prg.s = Space(#MAX_PATH)
    GetCurrentDirectory_(#MAX_PATH,@Prg)
  EndIf
If Right(Prg, 1) <> "" : Prg + "" : EndIf
If #PB_Compiler_Debugger = 1
  ProcedureReturn "E:\Eigene Dateien\Programmieren\QuellentextPB40\Programm Maker\Editor"
Else
  ProcedureReturn Prg
EndIf
  teste$ = Prg.s
EndProcedure

Procedure.s Setting(Lesen$)
  If ReadFile(0,"Setting.inf")
    While Eof(0) = 0
      T$ = ReadString(0)
      If FindString(T$,Lesen$+": ",1)
        A$ = RemoveString(T$,Lesen$+": ")
        If FindString(A$,":",1)
          CloseFile(0)
          ProcedureReturn A$
        Else
          CloseFile(0)
          ProcedureReturn GetExePath()+A$
        EndIf
      EndIf
    Wend
  Else
    MessageRequester("ERROR","Die Datei 'Setting.inf' konnte leider nicht gefunden Werden! Eine neu Installation könnte das Problem beheben.")
    End
  EndIf
EndProcedure

;{ Fenster
;- ---->>Fenster<<----

Procedure Main()
  If OpenWindow(#Main_Fenster,0,0,900,600,"Dll Maker",#PB_Window_ScreenCentered|#PB_Window_MinimizeGadget|#PB_Window_SystemMenu)
    If CreateMenu(#Menue, WindowID(#Main_Fenster))
      MenuTitle("&Datei")
        MenuItem(1,"&Neues Projekt")
        MenuItem(2,"Ö&ffnen")
        MenuItem(3,"&Speichern")
        MenuBar()
        OpenSubMenu("&Exportieren")
          MenuItem(4,"Text &Editor")
          MenuItem(5,"Text &Datei")
        CloseSubMenu()
        OpenSubMenu("&Inportieren")
          MenuItem(6,"Text &Datei")
        CloseSubMenu()
        MenuBar()
        MenuItem(7,"&Beenden")
      MenuTitle("Bearbeiten")
        MenuItem(8,"&Neuer Befehl")
        MenuItem(9,"&Befehl Bearbeiten")
        MenuItem(10,"Befehl &Löschen")
        MenuItem(11,"Befehl &Kopieren")
        MenuItem(12,"Befehl &Einfürgen")
        MenuBar()
        MenuItem(13,"&Add On verwnden")
        MenuItem(14,"Add On &Configurieren")
      MenuTitle("&Projekt")
        MenuItem(15,"&Testen")
        MenuItem(16,"Test &Abbrechen")
        MenuBar()
        MenuItem(17,"Win. &Rechner")
        MenuItem(18,"Win. &Editor")
      MenuTitle("&Hilfe")
        MenuItem(19,"&Hilfe")
        MenuItem(20,"Ü&ber")
    EndIf
    If CreateGadgetList(WindowID(#Main_Fenster))
      ListViewGadget(#Editor,2,2,896,400)
      AddGadgetItem(#Editor,-1,"[]")
      PanelGadget(#Panel,2,404,896,174)
        AddGadgetItem(#Panel, -1, "Add On")
          ListIconGadget(#AddOn,2,2,892,170,"",892,#PB_ListIcon_GridLines)
          ChangeListIconGadgetDisplay(#AddOn, 0)
          AddGadgetItem(#AddOn,-1,"Leer",Image0)
        AddGadgetItem(#Panel, -1, "Projekt")
          ListIconGadget(#Projct,2,2,892,170,"",892,#PB_ListIcon_GridLines)
          ChangeListIconGadgetDisplay(#Projct, 0)
          AddGadgetItem(#Projct,-1,"Leer",Image0)
    EndIf
  EndIf
EndProcedure

Procedure Window_NeuProjekt(Window)
  If OpenWindow(#Neu_Projekt,0,0,350,100,"Neues Projekt",#PB_Window_WindowCentered,WindowID(Window)) And CreateGadgetList(WindowID(#Neu_Projekt))
    TextGadget(1,2,2,100,20,"Projekt Name:")
    StringGadget(#NeuPro_ProName,2,16,167,20,"Projekt")
    TextGadget(2,177,2,100,20,"Ordner Name:")
    StringGadget(#NeuPro_OrdnerName,179,16,167,20,"Projekt")
    TextGadget(0,2,39,100,20,"Projekt Verzeichnis:")
    StringGadget(#NeuPro_ProVerzeichnis,2,53,324,20,Setting("Projekt Verzeichnis"))
    ButtonGadget(#NeuPro_ButtonVerzeichnis,328,53,20,20,"...")
    ButtonGadget(#NeuPro_ButtonOK,278,78,70,20,"OK",#PB_Button_Default)
    ButtonGadget(#NeuPro_ButtonAbbruch,200,78,70,20,"Abbrechen")
  EndIf
EndProcedure

Procedure Window_String_Editor(Typ$,Window)
  If OpenWindow(#StringEditor,0,0,200,300,"String/Variabel ("+Typ$+") Editor",#PB_Window_WindowCentered,WindowID(Window)) And CreateGadgetList(WindowID(#StringEditor))
    ListViewGadget(#StringEditorListView,2,2,196,240)
    TextGadget(#PB_Any,2,242,196,20,"Neu Anlegen:")
    StringGadget(#StringEditorStringNeu,2,256,166,20,"")
    ButtonGadget(#StringEditorButtonNeu,170,256,25,20,"Neu")
    ButtonGadget(#StringEditorButtonOK,99,278,97,20,"OK",#PB_Button_Default)
    ButtonGadget(#StringEditorButtonAbbruch,2,278,97,20,"Abbruch")
  EndIf
  If Typ$ = "!"
    ForEach Strings()
      AddGadgetItem(#StringEditorListView,-1,Strings())
    Next
  ElseIf Typ$ = "&"
    ForEach Variabeln()
      AddGadgetItem(#StringEditorListView,-1,Variabeln())
    Next
  EndIf
EndProcedure

;- ---->>Fenster Ende<<----
;}

;{ Syntax Generator
;- ---->>Syntax Generator<<----
Macro NeuProjekt()
  ElseIf GadgetID = #NeuPro_ProVerzeichnis
    
  ElseIf GadgetID = #NeuPro_ButtonOK
    
  ElseIf GadgetID = #NeuPro_ButtonAbbruch
    CloseWindow(#Neu_Projekt)
EndMacro


Macro String_Editor()
  ElseIf GadgetID = #StringEditorButtonNeu
    T$ = GetGadgetText(#StringEditorStringNeu)
    If Typ$ = "!"
      a = CountString(T$,"!")
      b = FindString(T$,"!",1)
      c = Len(T$)
      If FindString(T$,"!",1)
        If a = 1 And b = 1 And c > 1 And c <> 0
        ForEach Strings()
          If Strings() = T$:d=1:Break:EndIf
        Next
        If d = 1
          MessageRequester("'ERROR'","Der String kann nur einmal in der liste vorhanden sein!"):d = 0
        Else
          AddElement(Strings())
          Strings() = T$
          ClearGadgetItemList(#StringEditorListView)
        ForEach Strings()
          AddGadgetItem(#StringEditorListView,-1,Strings())
        Next
        EndIf
      Else
          MessageRequester("'Syntax ERROR'","Der Angegebene !String kann in dieser form nicht verwendet werden!")
      EndIf
      ElseIf c <> 0
        T$ = "!"+T$
        ForEach Strings()
          If Strings() = T$:d=1:Break:EndIf
        Next
        If d = 1
          MessageRequester("'ERROR'","Der String kann nur einmal in der liste vorhanden sein!"):d = 0
        Else
          AddElement(Strings())
          Strings() = T$
          ClearGadgetItemList(#StringEditorListView)
          ForEach Strings()
            AddGadgetItem(#StringEditorListView,-1,Strings())
          Next
          EndIf
        EndIf
      ElseIf Typ$ = "&"
        a = CountString(T$,"&")
        b = FindString(T$,"&",1)
        c = Len(T$)
        If FindString(T$,"&",1)
          If a = 1 And b = 1 And c > 1 And C <> 0
            ForEach Variabeln()
              If Variabeln() = T$:d=1:Break:EndIf
            Next
            If d = 1
              MessageRequester("'ERROR'","Die Variabel kann nur einmal in der liste vorhanden sein!"):d = 0
            Else
              AddElement(Variabeln())
              Variabeln() = T$
              ClearGadgetItemList(#StringEditorListView)
              ForEach Variabeln()
                AddGadgetItem(#StringEditorListView,-1,Variabeln())
              Next
            EndIf
          Else
            MessageRequester("'Syntax ERROR'","Die Angegebene &Variabel kann in dieser form nicht verwendet werden!")
          EndIf
        ElseIf c <> 0
          T$ = "&"+T$
          ForEach Variabeln()
            If Variabeln() = T$:d=1:Break:EndIf
          Next
          If d = 1
            MessageRequester("'ERROR'","Die Variabel kann nur einmal in der liste vorhanden sein!"):d = 0
          Else
            AddElement(Variabeln())
            Variabeln() = T$
            ClearGadgetItemList(#StringEditorListView)
            ForEach Variabeln()
              AddGadgetItem(#StringEditorListView,-1,Variabeln())
            Next
          EndIf
        EndIf
      EndIf
    ElseIf GadgetID = #StringEditorButtonOK
      A$ = GetGadgetText(#StringEditorListView)
      If A$ <> ""
        CloseWindow(#StringEditor)
;        ProcedureReturn A$
      Else
        If Typ$ = "!"
          MessageRequester("Fehler","Sie müssen vorerst einen !String aus der liste wählen.")
        ElseIf Typ$ = "&"
          MessageRequester("Fehler","Sie müssen vorerst eine &Variabel aus der liste wählen.")
        EndIf
      EndIf
    ElseIf GadgetID = #StringEditorButtonAbbruch
      CloseWindow(#StringEditor)
EndMacro

;- ---->>Syntax Generator Ende<<----
;}



Main()
Window_NeuProjekt(#Main_Fenster)
;Window_String_Editor("!",#Main_Fenster)
Typ$ = "!"
Repeat
  Event = WaitWindowEvent()
  WindowID = EventWindow()
  GadgetID = EventGadget()
  EventType = EventType()
  If Event = #PB_Event_Gadget
    If GadgetID = #Editor
    String_Editor()
    NeuProjekt()
    EndIf
  EndIf
Until Exit = 1