Kleine Button-Frage

Anfängerfragen zum Programmieren mit PureBasic.
AlbertH
Beiträge: 9
Registriert: 26.03.2007 21:20

Kleine Button-Frage

Beitrag von AlbertH »

Hallo liebe PureBasic-Kenner

ich bin in der tat ein deftiger anfänger und blicke auch nicht richtig durch aber ich brauche unbedingt eure hilfe:

wie vergebe ich den ButtonImageGadget eine funktion wie z.b. Includefile

kennt da einer ein tutorial oder hat jemand ein beispiel mit buttons die irgendwas ausführen

wäre echt super danke im voraus!!! :allright:
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> wie vergebe ich den ButtonImageGadget eine funktion wie z.b. Includefile

gar nicht!

IncludeFile ist eine Compilezeit-funktion.
d.h. damit wird zur erstellungszeit ein File in die DataSection einer EXE integriert.

auf ein button wird mittels eines Eventloops reagiert, schau mal in der Help unter WaitWindowEvent, da ist ein Beispiel.


falls du meinst, wie du ein Image mit IncludeFile einbindest und auf einen Button bringst:

Code: Alles auswählen

CatchImage(#Icon,?Icon)
;...
ButtonImageGadget(#ImageButton,0,0,26,24,ImageID(#Icon))
;...
DataSection
Icon:
IncludeBinary "Grafik.ico" ; oder .bmp
EndDataSection
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Kleine Button-Frage

Beitrag von Kiffi »

AlbertH hat geschrieben:wie vergebe ich den ButtonImageGadget eine funktion wie z.b. Includefile
IncludeFile würde ich jetzt nicht gerade als Beispiel nehmen, weil dieser
Befehl (in Abhängigkeit von evtl. vorhandenen Compilerdirektiven) zur
Kompilierungszeit immer durch die in IncludeFile angegebene Datei ersetzt
wird, egal, ob der Button gedrückt wurde oder nicht.
AlbertH hat geschrieben:kennt da einer ein tutorial oder hat jemand ein beispiel mit buttons die irgendwas ausführen
können wir Dir gerne erklären, wenn Du uns verrätst, welche PB-Version Du
verwendest.

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Includefile ist keine RunTime-Funktion, kann also nicht einem Button
zugeordnet werde, desweiteren ist in der Hilfe zu PB, zu fast jedem Gadget
ein Beispiel vorhanden, dann haste einen Einstieg! Tutorials auf PureArea.net
sowie Robsite.de, links befinden sich oben Rechts.

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
AlbertH
Beiträge: 9
Registriert: 26.03.2007 21:20

Beitrag von AlbertH »

Ich nutzen Pure Basic 4.00

ich hatte davor das problem auf diese art gelöst 1.pb war einfach ein runprogram-programm

Code: Alles auswählen

  If OpenWindow(0, 0, 0, 120, 130, "Beispiel1", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
   TextGadget(1, 10,  100, 100, 110, "  bespieltext  ", #PB_Text_Center)
    
       ButtonImageGadget(0, 10, 10, 100, 83, ImageID(ID))
       GadgetToolTip(0, "Beispieltext2")
       SetActiveGadget(0)
       Repeat
       Event = WaitWindowEvent()
          
    If Event = #PB_Event_Gadget
    
    IncludeFile("1.pb") 

TextGadget(1, 10,  100, 100, 110, "Programm gestartet.", #PB_Text_Center)
 EndIf
    Until Event = #PB_Event_CloseWindow
  EndIf
doch wenn cih versuche 2 buttons einzubaun, funktioniert es nicht, ist auch klar aber ... irgendwie auch schade ^^
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Du soltest die Zeile: IncludeFile("1.pb") an den Anfang des Codes setzen,
wird sowieso während des Compilierens eingebunden, nicht zur Laufzeit!!!
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

AlbertH hat geschrieben:

Code: Alles auswählen

If Event = #PB_Event_Gadget
Das alleine wird nicht reichen, wenn Du 2 Buttons haben willst. Zusätzlich
musst Du dann noch mit EventGadget() ermitteln, welcher Button gedrückt
wurde.

Grüße ... Kiffi
a²+b²=mc²
AlbertH
Beiträge: 9
Registriert: 26.03.2007 21:20

Beitrag von AlbertH »

ts-soft hat geschrieben:Du soltest die Zeile: IncludeFile("1.pb") an den Anfang des Codes setzen,
wird sowieso während des Compilierens eingebunden, nicht zur Laufzeit!!!
meinst du es so Oo

IncludeFile("1.pb")
If OpenWindow(0, 0, 0, 120, 130, "Beispiel1", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
TextGadget(1, 10, 100, 100, 110, " bespieltext ", #PB_Text_Center)

ButtonImageGadget(0, 10, 10, 100, 83, ImageID(ID))
GadgetToolTip(0, "Beispieltext2")
SetActiveGadget(0)
Repeat
Event = WaitWindowEvent()

If Event = #PB_Event_Gadget



TextGadget(1, 10, 100, 100, 110, "Programm gestartet.", #PB_Text_Center)
EndIf
Until Event = #PB_Event_CloseWindow
EndIf
Das alleine wird nicht reichen, wenn Du 2 Buttons haben willst. Zusätzlich
musst Du dann noch mit EventGadget() ermitteln, welcher Button gedrückt
wurde.
ehm wie geht es nochmal so?? EventGadget()=#ButtonImage_0 dann sagt er aber syntax error!
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

#ButtonImage_0 wäre eine konstante.
wenn du die verwenden willst, solltest du sie auch beim einrichten des buttons verwenden.
und natürlich vorher definieren.

EventGadget() ist eine Abfragefunktion. also kannst du ihr nichts zuweisen, sondern nur ihren rückgabewert vergleichen.

Code: Alles auswählen

If EventGadget()=#ButtonImage_0
würde also funktionieren.

wie ich bereits sagte, schau mal in die Help für WaitWindowEvent, da ist ein Beispiel.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Code: Alles auswählen

XIncludeFile("1.pb")

If OpenWindow(0, 0, 0, 120, 130, "Beispiel1", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
  TextGadget(1, 10,  100, 100, 110, "  bespieltext  ", #PB_Text_Center)

  ButtonImageGadget(0, 10, 10, 100, 83, ImageID(ID))
  GadgetToolTip(0, "Beispieltext2")
  SetActiveGadget(0)

  Repeat
    Event = WaitWindowEvent()

    If Event = #PB_Event_Gadget
      Gadget = EventGadget()
      If Gadget = 1
        TextGadget(1, 10,  100, 100, 110, "Programm gestartet.", #PB_Text_Center)
      EndIf
    EndIf
  Until Event = #PB_Event_CloseWindow
EndIf
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten