Seite 1 von 3

PanelGadget geht nicht ?

Verfasst: 25.01.2009 14:08
von TheSaint
Hallo Zusammen,

ich habe folgenden Code, aber es wird das PanelGadget nicht angezeigt.
Nun weis ich nicht warum. Hab mir verschiedene Hilfen angesehen, doch
weis ich nicht was ich falsch mache.
Könnte jemand mal schauen warum? Wäre toll.

Code: Alles auswählen

;************************************************************************************************
;- Window Constants
;************************************************************************************************

Enumeration
  #Window_0
EndEnumeration

;************************************************************************************************
;-Statusbar Constants
;************************************************************************************************

Enumeration
  #StatusBar_0
  #Panel0
EndEnumeration

;************************************************************************************************
;- Gadget Constants
;************************************************************************************************

Enumeration
  #BruttoWert
  #Buchtxt
  #OpNr
  #ObjektNr
  #KtoNr  
  #Text_0
  #Text_1
  #Text_2
  #Text_3
  #Text_4
  #Listview_0
  #SuchButton0
EndEnumeration

 Macro AlleStringGadgetInhaltloeschen()
 
  Select GetGadgetType(Gadget) 
    Case "Edit"
      SetGadgetText(g_counter, " ") 
 
 EndMacro
 
;**** Kompletten Text im StringGadet markieren
Macro StringMark(gadget,x1=0,x2=-1)
    Select GetGadgetType(Gadget) 
    Case "Edit"  
      SendMessage_(GadgetID(gadget),#EM_SETSEL,x1,x2)
      ;SendMessage_(GadgetID(gadget), #EM_LIMITTEXT, 5, 0) Eingabelänge begrenzen auf 5 Zeichen
;     Case "ComboBox" 
;       SendMessage_(GadgetID(Gadget),#CB_LIMITTEXT,MaxLen,0) 
  EndSelect 
EndMacro 

Procedure Open_Window_0()

  If OpenWindow(#Window_0, 236, 168, 700, 432, "Start ( 0 )",  #PB_Window_Invisible | #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered )
    SetWindowPos_(WindowID(0),0,0,0,0,0,#SWP_NOMOVE|#SWP_NOSIZE|#SWP_NOZORDER|#SWP_FRAMECHANGED)
    DeleteMenu_(GetSystemMenu_(WindowID(0),#False),1,#MF_BYPOSITION) ;Window verschieben deaktivieren
     
    If CreateStatusBar(#StatusBar_0, WindowID(#Window_0))
        AddStatusBarField(#PB_Ignore);(100)
        AddStatusBarField(#PB_Ignore) ;(810)
;       StatusBarText(#StatusBar_0, 1, " Status: Programm geladen")
    EndIf
    
    ;SetTimer_(WindowID(0), 0, 1000, @ShowTime()) ; und dann nur noch jede Sekunde
    
    If UseGadgetList(WindowID(#Window_0))
    
            PanelGadget(#Panel0, 240, 175, 695, 425)
              AddGadgetItem (#Panel0, -1, "Info Suche")
                StringGadget(#BruttoWert, 90, 20, 170, 20, "")
                StringGadget(#Buchtxt, 90, 40, 170, 20, "")
                StringGadget(#OpNr, 90, 60, 170, 20, "")
                StringGadget(#ObjektNr, 90, 80, 170, 20, "")
                StringGadget(#KtoNr,90,100,170,20,"")
                TextGadget(#Text_0, 10, 20, 70, 20, "Brutto-Wert:", #PB_Text_Right)
                TextGadget(#Text_1, 10, 40, 70, 20, "Buchungstext:", #PB_Text_Right)
                TextGadget(#Text_2, 10, 60, 70, 20, "OpNr:", #PB_Text_Right)
                TextGadget(#Text_3, 10, 80, 70, 20, "Objekt-Nr.:", #PB_Text_Right)
                TextGadget(#Text_4, 10, 100,70,20, "KontoNr:", #PB_Text_Right)
                ListIconGadget(#Listview_0, 250, 180, 550, 170," ",80)
;                 ListIconGadget(#Listview_0, 10, 190, 678, 120, "", 80,#PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect|#PB_ListIcon_MultiSelect|#PB_ListIcon_HeaderDragDrop)
;                 SendMessage_(GadgetID(#Listview_0), #LVM_SETEXTENDEDLISTVIEWSTYLE, 0, #LVS_EX_LABELTIP)
                ButtonGadget(#SuchButton0, 90, 160, 120, 20, "Suche starten")
            CloseGadgetList()

     EndIf
    
     If UseGadgetList(WindowID(#Window_0))
      ListIconGadget(#Listview_0, 10, 190, 678, 120, "", 80,#PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect|#PB_ListIcon_MultiSelect|#PB_ListIcon_HeaderDragDrop)
      SendMessage_(GadgetID(#Listview_0), #LVM_SETEXTENDEDLISTVIEWSTYLE, 0, #LVS_EX_LABELTIP) 
    EndIf
    
  EndIf
EndProcedure

;Hier wird das Enter Drücken im StringGadget verarbeitet
Procedure SendKey(Option.l)
  ; Author : Oliv
  keybd_event_(Option,0,0,0) ; Simulate Keypress
  keybd_event_(Option,0,#KEYEVENTF_KEYUP,0) ; Simulate release key
  Delay(60)
EndProcedure

Open_Window_0()
AddKeyboardShortcut(0, #PB_Shortcut_Return, 1);Hier wird das Enter Drücken im StringGadget verarbeitet
exit = 0

StatusBarText(0, 1, Vers.s, #PB_StatusBar_Right |#PB_StatusBar_BorderLess)

HideWindow(#Window_0, #False) ;Fenster wird erst angezeigt, wenn alles geladen ist !!!!
Repeat ; Start of the event loop

  Event = WaitWindowEvent() ; This line waits until an event is received from Windows
  WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures
  GadgetID = EventGadget() ; Is it a gadget event?
  EventType = EventType() ; The event type
  
    Select Event
      
      Case #PB_Event_Gadget

        ;**** Kompletten Text im StringGadet markieren
        If EventType() = #PB_EventType_Focus 
          ; StringMark(GadgetID) 
        EndIf 
        ;****
  

        Case #PB_Event_Menu     ;Hier wird das Enter Drücken im    StringGadget verarbeitet
            Select EventMenu()
                Case 1 : SendKey(#VK_TAB)
            EndSelect
               
        Case #PB_Event_CloseWindow
            exit = 1
    
    EndSelect
Until Event = #PB_Event_CloseWindow ; End of the event loop

End
Vielen Dank für Eure Hilfe.

Verfasst: 25.01.2009 14:16
von edel
PanelGadget ! Deine Konstante "#Panel0" sitzt also in der falschen "Enumeration"

Verfasst: 25.01.2009 14:22
von TheSaint
Hallo edel,
edel hat geschrieben:PanelGadget ! Deine Konstante "#Panel0" sitzt also in der falschen "Enumeration"
Wow, jetzt klappt es. Ich habe gesucht und dachte ich hätte doch alles gemacht.

Hm, also ist es so, das bei Enumerationen ein Block gebildet wird und nur die enthaltenen Konstanten verbunden sind.
Tja, wieder was dazu gelernt.

Nochmals vielen Dank und einen schönen Tag noch.

Verfasst: 25.01.2009 14:37
von ts-soft
In Deiner Enumaration erhält #Panel0 den Wert 1, #Buchtxt erhält ebenfalls
diesen Wert. Wenn ein neues Gadget mit bereits verwendeter GadgetID
erstellt wird, wird das alte gelöscht :wink:

Verfasst: 25.01.2009 14:49
von TheSaint
Hallo ts-soft,

vielen Dank für die Erläuterung. Jetzt verstehe ich es auch. :D

Leider hab ich noch eine andere Frage:

Ich baue im moment verschiedene Panel Gadget auf, und zwar so:

Code: Alles auswählen

    If UseGadgetList(WindowID(#Window_0))
        PanelGadget(#Panel10, 5, 5, 685,400)
            AddGadgetItem(#Panel10,-1,"Informationen")
                PanelGadget(#Panel11, 5, 5, 675, 350)
                  AddGadgetItem (#Panel11, -1, "Info Suche")
                    StringGadget(#BruttoWert, 90, 50, 170, 20, "")
                    StringGadget(#Buchtxt, 90, 70, 170, 20, "")
                    StringGadget(#OpNr, 90, 90, 170, 20, "")
                    StringGadget(#ObjektNr, 90, 110, 170, 20, "")
                    StringGadget(#KtoNr,90,130,170,20,"")
                    TextGadget(#Text_0, 10, 50, 70, 20, "Brutto-Wert:", #PB_Text_Right)
                    TextGadget(#Text_1, 10, 70, 70, 20, "Buchungstext:", #PB_Text_Right)
                    TextGadget(#Text_2, 10, 90, 70, 20, "OpNr:", #PB_Text_Right)
                    TextGadget(#Text_3, 10, 110, 70, 20, "Objekt-Nr.:", #PB_Text_Right)
                    TextGadget(#Text_4, 10, 130,70,20, "KontoNr:", #PB_Text_Right)
                    ListIconGadget(#Listview_0, 250, 190, 550, 170," ",80)
                    ListIconGadget(#Listview_0, 10, 200, 650, 120, "", 80,#PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect|#PB_ListIcon_MultiSelect|#PB_ListIcon_HeaderDragDrop)
                    SendMessage_(GadgetID(#Listview_0), #LVM_SETEXTENDEDLISTVIEWSTYLE, 0, #LVS_EX_LABELTIP)
                    ButtonGadget(#SuchButton0, 90, 170, 120, 20, "Suche starten")
                CloseGadgetList()
            CloseGadgetList()
     EndIf
Das funktioniert auch. Ich finde für mich, dass es irgendwie unübersichtlich wird, wenn ich jetzt noch mehrere "Register Reiter" hinzufügen würde und in denen wiederum Buttons, StringGadget ...

Gibt es einen Trick, oder wie programmiert man es damit es übersichtlicher wird. Sorry für die Frage, hab nur noch nicht so oft so etwas gemacht.

Nochmals vielen Dank für Eure Hilfe

Verfasst: 25.01.2009 14:55
von ts-soft
Naja, Du nimmst eine Procedure zum erstellen eines Reiters. Desweiteren
verwendeste Arrays für die ID. In einer Schleife rufst Du dann die
Procedure auf um die Reiter zu erstellen.

Beispiel gibts von mir keines, erarbeite Dir das bitte selbst.

Gruß
Thomas

Verfasst: 25.01.2009 15:07
von hjbremer
ein Blick in die Hilfe hilft

Code: Alles auswählen

Beispiel: Verknüpfte Enumerations

  Enumeration
    #GadgetInfo ; wird 0 sein
    #GadgetText ; wird 1 sein
    #GadgetOK   ; wird 2 sein
  EndEnumeration
  
  Enumeration #PB_Compiler_EnumerationValue
    #GadgetCancel ; wird 3 sein
    #GadgetImage  ; wird 4 sein
    #GadgetSound  ; wird 5 sein
  EndEnumeration


Verfasst: 25.01.2009 15:08
von TheSaint
Hallo ts-soft,
ts-soft hat geschrieben:Naja, Du nimmst eine Procedure zum erstellen eines Reiters. Desweiteren
verwendeste Arrays für die ID. In einer Schleife rufst Du dann die
Procedure auf um die Reiter zu erstellen.
Vielen Dank für die Info. Ok, wenn man das so machen kann,
werde ich das mal probieren.

Verfasst: 25.01.2009 15:11
von TheSaint
Hallo hibremer,

Vielen Dank für das Beispiel.
Bin halt noch Anfänger :(
Werde das gleich mal versuchen umzusetzen.
hjbremer hat geschrieben:ein Blick in die Hilfe hilft

Code: Alles auswählen

Beispiel: Verknüpfte Enumerations

  Enumeration
    #GadgetInfo ; wird 0 sein
    #GadgetText ; wird 1 sein
    #GadgetOK   ; wird 2 sein
  EndEnumeration
  
  Enumeration #PB_Compiler_EnumerationValue
    #GadgetCancel ; wird 3 sein
    #GadgetImage  ; wird 4 sein
    #GadgetSound  ; wird 5 sein
  EndEnumeration


Verfasst: 25.01.2009 15:12
von edel
@hjbremer

Was bringt ihm das denn?