Listen verbinden

Für allgemeine Fragen zur Programmierung mit PureBasic.
Wolfvater Loki
Beiträge: 52
Registriert: 22.05.2022 15:37

Listen verbinden

Beitrag von Wolfvater Loki »

Hallo. Ich brauche Hilfe bei folgenden Fenstern:
Und zwar möchte ich beides eine Datenbankabfrage erstellen, mit der ich (wie dargestellt) ein Fenster öffne, wo ich nur etwas eingeben muss und durche eine Datenbankabfrage eine Liste im ListIconGadget (unter Prozedur "Datenbankfragen") erhalte.

Code: Alles auswählen

Procedure.s DatenbankerweitertfragenYGO()
  OpenWindow(6,0,0,520,480,"Liste wählen ...",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  StringGadget(5000,10,10,500,20,"")
  ListViewGadget(5001,10,35,500,400)
  ButtonGadget(5002,10,440,100,20,"Übernehmen")
  banlist = 0
  Repeat
    erweisedichalswuerdig = WaitWindowEvent()
    If erweisedichalswuerdig = #PB_Event_Gadget
      Select EventGadget()
        Case 5000
          If EventType() = #PB_EventType_Change And Len(GetGadgetText(5000)) > 2
            ClearGadgetItems(5001)
            sql$ = "SELECT DISTINCT Liste FROM ListeBanlistYGO WHERE Liste LIKE '%"+GetGadgetText(5000)+"%';"
            If DatabaseQuery(4999, sql$)
              While NextDatabaseRow(4999)
                AddGadgetItem(5001,-1,GetDatabaseString(4999,0))
              Wend
            EndIf
          EndIf
        Case 5001
          If GetGadgetState(5001) > -1 And EventType() = #PB_EventType_LeftClick
            SetGadgetText(5000,GetGadgetItemText(5001,GetGadgetState(5001)))
          EndIf
        Case 5002
          banlist = 1
          liste$ = GetGadgetText(5000)
      EndSelect
    EndIf
  Until erweisedichalswuerdig = #PB_Event_CloseWindow
  CloseWindow(6)
EndProcedure

Procedure Datenbankfragen()
  OpenWindow(5,0,0,1100,600,"Meine Listen",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  CreateMenu(5,WindowID(5))
  MenuTitle("Fenster")
  MenuItem(500,"Hauptfenster")
  MenuItem(501,"Gadgets")
  MenuTitle("Dateien")
  MenuItem(502,"Listen")
  MenuItem(503,"Datenbanken")
  MenuTitle("Letzteres")
  OpenSubMenu("Informationen")
  MenuItem(504,"Erfinder")
  MenuItem(505,"Programm selbst")
  CloseSubMenu()
  MenuItem(506,"Beenden")
  ListIconGadget(2000,5,5,1090,500,"",360,#PB_ListIcon_FullRowSelect)
  ButtonGadget(2001,10,515,20,20,"1")
  ButtonGadget(2002,30,515,20,20,"2")
  ButtonGadget(2003,50,515,20,20,"3")
  ButtonGadget(2004,70,515,20,20,"4")
  ButtonGadget(2005,90,515,20,20,"5")
  ButtonGadget(2006,110,515,20,20,"6")
  ButtonGadget(2007,130,515,20,20,"7")
  ButtonGadget(2008,150,515,20,20,"8")
  ButtonGadget(2009,170,515,20,20,"9")
  ButtonGadget(2010,190,515,20,20,"10")
  ButtonGadget(2011,210,515,20,20,"11")
  ButtonGadget(2012,230,515,20,20,"12")
  ButtonGadget(2013,250,515,20,20,"13")
  ButtonGadget(2014,270,515,20,20,"14")
  ButtonGadget(2015,290,515,20,20,"15")
  ButtonGadget(2016,310,515,20,20,"16")
  ButtonGadget(2017,330,515,20,20,"17")
  ButtonGadget(2018,350,515,20,20,"18")
  ButtonGadget(2019,370,515,20,20,"19")
  ButtonGadget(2020,390,515,20,20,"20")
  ButtonGadget(2021,410,515,20,20,"21")
  ButtonGadget(2022,430,515,20,20,"22")
  ButtonGadget(2023,450,515,20,20,"23")
  ButtonGadget(2024,470,515,20,20,"24")
  ButtonGadget(2025,490,515,20,20,"25")
  ButtonGadget(2026,510,515,20,20,"26")
  ButtonGadget(2027,530,515,20,20,"27")
  ButtonGadget(2028,550,515,20,20,"28")
  ButtonGadget(2029,570,515,20,20,"29")
  ButtonGadget(2030,590,515,20,20,"30")
  ButtonGadget(2031,610,515,20,20,"31")
  ButtonGadget(2032,630,515,20,20,"32")
  ButtonGadget(2033,650,515,20,20,"33")
  ButtonGadget(2034,670,515,20,20,"34")
  ButtonGadget(2035,690,515,20,20,"35")
  ButtonGadget(2036,710,515,20,20,"36")
  ButtonGadget(2037,730,515,20,20,"37")
  ButtonGadget(2038,750,515,20,20,"38")
  ButtonGadget(2039,770,515,20,20,"39")
  ButtonGadget(2040,790,515,20,20,"40")
  ButtonGadget(2041,810,515,20,20,"41")
  ButtonGadget(2042,830,515,20,20,"42")
  ButtonGadget(2043,850,515,20,20,"43")
  ButtonGadget(2044,870,515,20,20,"44")
  ButtonGadget(2045,890,515,20,20,"45")
  ButtonGadget(2046,910,515,20,20,"46")
  ButtonGadget(2047,930,515,20,20,"47")
  ButtonGadget(2048,950,515,20,20,"48")
  ButtonGadget(2049,970,515,20,20,"49")
  ButtonGadget(2050,990,515,20,20,"50")
  ButtonGadget(2051,1010,515,20,20,"51")
  ButtonGadget(2052,1030,515,20,20,"52")
  ButtonGadget(2053,1050,515,20,20,"53")
  ButtonGadget(2054,1070,515,20,20,"54")
  ButtonGadget(2055,10,535,20,20,"55")
  ButtonGadget(2056,30,535,20,20,"56")
  ButtonGadget(2057,50,535,20,20,"57")
  ButtonGadget(2058,70,535,20,20,"58")
  ButtonGadget(2059,90,535,20,20,"59")
  ButtonGadget(2060,110,535,20,20,"60")
  ButtonGadget(2061,130,535,20,20,"61")
  ButtonGadget(2062,150,535,20,20,"62")
  ButtonGadget(2063,170,535,20,20,"63")
  ButtonGadget(2064,190,535,20,20,"64")
  ButtonGadget(2065,210,535,20,20,"65")
  ButtonGadget(2066,230,535,20,20,"66")
  ButtonGadget(2067,250,535,20,20,"67")
  ButtonGadget(2068,270,535,20,20,"68")
  ButtonGadget(2069,290,535,20,20,"69")
  ButtonGadget(2070,310,535,20,20,"70")
  ButtonGadget(2071,330,535,20,20,"71")
  ButtonGadget(2072,350,535,20,20,"72")
  ButtonGadget(2073,370,535,20,20,"73")
  ButtonGadget(2074,390,535,20,20,"74")
  ButtonGadget(2075,410,535,20,20,"75")
  ButtonGadget(2076,430,535,20,20,"76")
  ButtonGadget(2077,450,535,20,20,"77")
  ButtonGadget(2078,470,535,20,20,"78")
  ButtonGadget(2079,490,535,20,20,"79")
  ButtonGadget(2080,510,535,20,20,"80")
  ButtonGadget(2081,530,535,20,20,"81")
  ButtonGadget(2082,550,535,20,20,"82")
  ButtonGadget(2083,570,535,20,20,"83")
  ButtonGadget(2084,590,535,20,20,"84")
  ButtonGadget(2085,610,535,20,20,"85")
  ButtonGadget(2086,630,535,20,20,"86")
  ButtonGadget(2087,650,535,20,20,"87")
  ButtonGadget(2088,670,535,20,20,"88")
  ButtonGadget(2089,690,535,20,20,"89")
  ButtonGadget(2090,710,535,20,20,"90")
  ButtonGadget(2091,730,535,20,20,"91")
  ButtonGadget(2092,750,535,20,20,"92")
  ButtonGadget(2093,770,535,20,20,"93")
  ButtonGadget(2094,790,535,20,20,"94")
  ButtonGadget(2095,810,535,20,20,"95")
  ButtonGadget(2096,830,535,20,20,"96")
  ButtonGadget(2097,850,535,20,20,"97")
  ButtonGadget(2098,870,535,20,20,"98")
  ButtonGadget(2099,890,535,20,20,"99")
  ButtonGadget(2100,910,535,30,20,"100")
  ButtonGadget(2101,940,535,30,20,"101")
  ButtonGadget(2102,970,535,30,20,"102")
  ButtonGadget(2103,1000,535,30,20,"103")
  ButtonGadget(2104,1030,535,30,20,"104")
  ButtonGadget(2105,1060,535,30,20,"105")
  ButtonGadget(2106,10,555,30,20,"106")
  ButtonGadget(2107,40,555,30,20,"107")
  ButtonGadget(2108,70,555,30,20,"108")
  ButtonGadget(2109,100,555,30,20,"109")
  ButtonGadget(2110,130,555,30,20,"110")
  ButtonGadget(2111,160,555,30,20,"111")
  ButtonGadget(2112,190,555,30,20,"112")
  ButtonGadget(2113,220,555,30,20,"113")
  ButtonGadget(2114,250,555,30,20,"114")
  ButtonGadget(2115,280,555,30,20,"115")
  ButtonGadget(2116,310,555,30,20,"116")
  ButtonGadget(2117,340,555,30,20,"117")
  ButtonGadget(2118,370,555,30,20,"118")
  ButtonGadget(2119,400,555,30,20,"119")
  ButtonGadget(2120,430,555,30,20,"120")
  ButtonGadget(2121,460,555,30,20,"121")
  ButtonGadget(2122,490,555,30,20,"122")
  ButtonGadget(2123,520,555,30,20,"123")
  ButtonGadget(2124,550,555,30,20,"124")
  ButtonGadget(2125,580,555,30,20,"125")
  ButtonGadget(2126,610,555,30,20,"126")
  ButtonGadget(2127,640,555,30,20,"127")
  ButtonGadget(2128,670,555,30,20,"128")
  ButtonGadget(2129,700,555,30,20,"129")
  ButtonGadget(2130,730,555,30,20,"130")
  ButtonGadget(2131,760,555,30,20,"131")
  ButtonGadget(2132,790,555,30,20,"132")
  ButtonGadget(2133,820,555,30,20,"133")
  ButtonGadget(2134,850,555,30,20,"134")
  ButtonGadget(2135,880,555,30,20,"135")
  ButtonGadget(2136,910,555,30,20,"136")
  ButtonGadget(2137,940,555,30,20,"137")
  ButtonGadget(2500,1070,555,20,20,"E")
  AddKeyboardShortcut(5,#PB_Shortcut_Escape,506)
  megaclosera = 0
  Repeat
    warteaufdaten = WaitWindowEvent()
    If warteaufdaten = #PB_Event_Gadget
      Select EventGadget()
        Case 2001
          ClearGadgetItems(2000)
          For i = 1 To 11
            RemoveGadgetColumn(2000,i)
          Next
          SetGadgetItemText(2000,-1, "Kartenname",0)
          AddGadgetColumn(2000,1,"Kartentyp",80)
          AddGadgetColumn(2000,2,"Kategorie",100)
          AddGadgetColumn(2000,3,"Typ",140)
          AddGadgetColumn(2000,4,"Fähigkeit",100)
          AddGadgetColumn(2000,5,"Attribut",100)
          AddGadgetColumn(2000,6,"Level/Rang/Link",100)
          AddGadgetColumn(2000,7,"ATK",60)
          AddGadgetColumn(2000,8,"DEF",60)
          AddGadgetColumn(2000,9,"Pendelskala",100)
          AddGadgetColumn(2000,10,"Erlaubt",60)
          AddGadgetColumn(2000,11,"Internetlink",275)
          sqla$ = "SELECT * FROM YGO_Kartensammlung;"
          If DatabaseQuery(4999,sqla$)
            While NextDatabaseRow(4999)
              AddGadgetItem(2000,-1,GetDatabaseString(4999,0)+Chr(10)+GetDatabaseString(4999,1)+Chr(10)+GetDatabaseString(4999,2)+Chr(10)+GetDatabaseString(4999,3)+Chr(10)+GetDatabaseString(4999,4)+Chr(10)+GetDatabaseString(4999,5)+Chr(10)+GetDatabaseString(4999,6)+Chr(10)+GetDatabaseString(4999,7)+Chr(10)+GetDatabaseString(4999,8)+Chr(10)+GetDatabaseString(4999,9)+Chr(10)+GetDatabaseString(4999,10)+Chr(10)+GetDatabaseString(4999,11))
            Wend
            FinishDatabaseQuery(4999)
          EndIf
        Case 2002
          ClearGadgetItems(2000)
          For i = 1 To 11
            RemoveGadgetColumn(2000,i)
          Next
          For i = 1 To 11
            RemoveGadgetColumn(2000,i)
          Next
          For i = 1 To 11
            RemoveGadgetColumn(2000,i)
          Next
          For i = 1 To 11
            RemoveGadgetColumn(2000,i)
          Next
          liste$ = DatenbankerweitertfragenYGO()
          sqlb$ = ""
          
        Case 2003
          ClearGadgetItems(2000)
          For i = 1 To 11
            RemoveGadgetColumn(2000,i)
          Next
          For i = 1 To 11
            RemoveGadgetColumn(2000,i)
          Next
          For i = 1 To 11
            RemoveGadgetColumn(2000,i)
          Next
          For i = 1 To 11
            RemoveGadgetColumn(2000,i)
          Next
          SetGadgetItemText(2000,-1, "Deutsch",0)
          AddGadgetColumn(2000,1,"Englisch",200)
          sqlc$ = "SELECT * FROM Vokabular_Eng;"
          If DatabaseQuery(4999,sqlc$)
            While NextDatabaseRow(4999)
              AddGadgetItem(2000,-1,GetDatabaseString(4999,0)+Chr(10)+GetDatabaseString(4999,1))
            Wend
            FinishDatabaseQuery(4999)
          EndIf
        Case 2004
          ClearGadgetItems(2000)
          For i = 1 To 11
            RemoveGadgetColumn(2000,i)
          Next
          For i = 1 To 11
            RemoveGadgetColumn(2000,i)
          Next
          For i = 1 To 11
            RemoveGadgetColumn(2000,i)
          Next
          For i = 1 To 11
            RemoveGadgetColumn(2000,i)
          Next
          SetGadgetItemText(2000,-1, "Deutsch",0)
          AddGadgetColumn(2000,1,"Französisch",200)
          sqld$ = "SELECT * FROM Vokabular_Frz;"
          If DatabaseQuery(4999,sqld$)
            While NextDatabaseRow(4999)
              AddGadgetItem(2000,-1,GetDatabaseString(4999,0)+Chr(10)+GetDatabaseString(4999,1))
            Wend
            FinishDatabaseQuery(4999)
          EndIf
        Case 2005
          ClearGadgetItems(2000)
          For i = 1 To 11
            RemoveGadgetColumn(2000,i)
          Next
          For i = 1 To 11
            RemoveGadgetColumn(2000,i)
          Next
          For i = 1 To 11
            RemoveGadgetColumn(2000,i)
          Next
          For i = 1 To 11
            RemoveGadgetColumn(2000,i)
          Next
          SetGadgetItemText(2000,-1, "Redeart",0)
          AddGadgetColumn(2000,1,"Jahr",70)
          AddGadgetColumn(2000,2,"Thema",200)
          AddGadgetColumn(2000,3,"Schreiber",200)
          AddGadgetColumn(2000,4,"Redner",200)
          AddGadgetColumn(2000,5,"Mitwirkende",200)
          AddGadgetColumn(2000,6,"Verwendung1",200)
          AddGadgetColumn(2000,7,"Verwendung2",200)
          sqle$ = "SELECT * FROM Rede_Sammlung;"
          If DatabaseQuery(4999,sqle$)
            While NextDatabaseRow(4999)
              AddGadgetItem(2000,-1,GetDatabaseString(4999,0)+Chr(10)+GetDatabaseString(4999,1)+Chr(10)+GetDatabaseString(4999,2)+Chr(10)+GetDatabaseString(4999,3)+Chr(10)+GetDatabaseString(4999,4)+Chr(10)+GetDatabaseString(4999,5)+Chr(10)+GetDatabaseString(4999,6)+Chr(10)+GetDatabaseString(4999,7))
            Wend
            FinishDatabaseQuery(4999)
          EndIf
      EndSelect
    EndIf
    If warteaufdaten = #PB_Event_Menu
      Select EventMenu()
        Case 500
          NextMegaMultipleUnderMasterFensterHaupt()
        Case 501
          NextMegaMultipleUnderMasterFensterGadgets()
        Case 502
          NextMegaMultipleUnderMasterDateienListen()
        Case 503
          NextMegaMultipleUnderMasterDateienDatenbanken()
        Case 504
          NextMegaMultipleUnderMasterLetzteresInfoErfinder()
        Case 505
          NextMegaMultipleUnderMasterLetzteresInfoProgramm()
        Case 506
          megaclosera = 1
      EndSelect
    EndIf
  Until warteaufdaten = #PB_Event_CloseWindow Or megaclosera = 1
  CloseWindow(5)
EndProcedure
Ich habe bei Datenbankabfragen noch so ein paar Probleme.


// Edit: Topic verschoben. (Kiffi)
@Wolfvater Loki: Bitte nicht immer in "Projekte, Ressourcen, Tools" posten.
Wolfvater Loki
Er wünscht euch schöne Grüße.
Wolfvater Loki
Beiträge: 52
Registriert: 22.05.2022 15:37

Re: Listen verbinden

Beitrag von Wolfvater Loki »

Wundert euch nicht über das Thema. Ich hatte kein besseres Beispiel gefunden.
Wolfvater Loki
Er wünscht euch schöne Grüße.
Axolotl
Beiträge: 146
Registriert: 31.12.2008 16:34

Re: Listen verbinden

Beitrag von Axolotl »

Hallo Wolfvater Loki,

ich wundere mich nicht, aber möchte trotzdem ein paar Tipps zum Stil geben.
Zur eigentlichen Frage kann ich nicht antworten. (ich habe sie nicht wirklich verstanden. :oops: ) Geht es um das Füllen des ListIconGadgets oder um die Datenbank-Abfrage?

Hier noch ein bisschen aus meiner Rubrik: Ich bin kein Klugscheißer, ich weiß wirklich alles richtig!
Aus meiner Sicht absolutes muss sind die Verwendung von EnableExplicit sowie Window- und Gadget-Konstanten (oder Variablen bei #PB_Any).
Hilft einfachste Fehler zu vermeiden...
Beispiel (so (ähnlich) mache ich es immer, egal wie klein der Test-Code ist)
HINT: Ich starte enums immer (meistens) mit 1, da 0 bei mir oft als Fehlerrückgabewert dient.

Code: Alles auswählen

EnableExplicit 

;---== Application GUI Constants ==--------------------------------------------
Enumeration EWindow 1  
  #WINDOW_Main  
EndEnumeration 

Enumeration EGadget 1 
 ;=== the Buttons 
  #GADGET_btnClear
  #GADGET_btnCopy 
  #GADGET_btnStop 

 ;=== the "virtual listicon". 
  #GADGET_lstOutput   
EndEnumeration 

;=== Main Menu (== 1) 
  #MENU_Main  = 1 

;=== Menu Items 
Enumeration EMenu 1 
  #MENU_Clear  
  #MENU_Copy 
  #MENU_Stop 
EndEnumeration 


Darüber hinaus wird WaitWindowEvent() als Haupt-Nachrichtenschleife von Windows in beiden Proceduren aufgerufen. Soll das wirklich so?
Mostly running PureBasic <latest stable version and current alpha/beta> (x64) on Windows 11 Home
Wolfvater Loki
Beiträge: 52
Registriert: 22.05.2022 15:37

Re: Listen verbinden

Beitrag von Wolfvater Loki »

Axolotl hat geschrieben: 03.06.2022 11:45 Hallo Wolfvater Loki,

ich wundere mich nicht, aber möchte trotzdem ein paar Tipps zum Stil geben.
Zur eigentlichen Frage kann ich nicht antworten. (ich habe sie nicht wirklich verstanden. :oops: ) Geht es um das Füllen des ListIconGadgets oder um die Datenbank-Abfrage?

Hier noch ein bisschen aus meiner Rubrik: Ich bin kein Klugscheißer, ich weiß wirklich alles richtig!
Aus meiner Sicht absolutes muss sind die Verwendung von EnableExplicit sowie Window- und Gadget-Konstanten (oder Variablen bei #PB_Any).
Hilft einfachste Fehler zu vermeiden...
Beispiel (so (ähnlich) mache ich es immer, egal wie klein der Test-Code ist)
HINT: Ich starte enums immer (meistens) mit 1, da 0 bei mir oft als Fehlerrückgabewert dient.

Code: Alles auswählen

EnableExplicit 

;---== Application GUI Constants ==--------------------------------------------
Enumeration EWindow 1  
  #WINDOW_Main  
EndEnumeration 

Enumeration EGadget 1 
 ;=== the Buttons 
  #GADGET_btnClear
  #GADGET_btnCopy 
  #GADGET_btnStop 

 ;=== the "virtual listicon". 
  #GADGET_lstOutput   
EndEnumeration 

;=== Main Menu (== 1) 
  #MENU_Main  = 1 

;=== Menu Items 
Enumeration EMenu 1 
  #MENU_Clear  
  #MENU_Copy 
  #MENU_Stop 
EndEnumeration 


Darüber hinaus wird WaitWindowEvent() als Haupt-Nachrichtenschleife von Windows in beiden Proceduren aufgerufen. Soll das wirklich so?
Danke für die Antwort. Und ich meine beides. Also eine Abfrage, die den ListIconGadget füllt. Die Prozeduren sind nur Teil eines großen Programms.
Wolfvater Loki
Er wünscht euch schöne Grüße.
Wolfvater Loki
Beiträge: 52
Registriert: 22.05.2022 15:37

Re: Listen verbinden

Beitrag von Wolfvater Loki »

Ich habe nun einen anderen Plan. Trotzdem danke an alle, die mitgeholfen haben oder mithelfen wollten.
Wolfvater Loki
Er wünscht euch schöne Grüße.
Antworten