Zähler einbauen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

nurmal so als Demo, mehr oder weniger mit dem VD erstellt und etwas
angepasst. Guck Dir den Code mal genauer an.

Code: Alles auswählen

; PureBasic Visual Designer v3.95 build 1485 (PB4Code)
;statt der IncludeDatei habe ich es in den Hauptcode reinkopiert
;- Window Constants
;
Enumeration
  #Window_0
EndEnumeration
;- Gadget Constants
;
Enumeration
  #Button_0
  #Button_1
  #Button_2
EndEnumeration

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 216, 0, 332, 122, "Mein Fenster",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
    If CreateGadgetList(WindowID(#Window_0))
      ButtonGadget(#Button_0, 20, 20, 60, 30, "OK")
      ButtonGadget(#Button_1, 100, 20, 60, 30, "Oho")
      ButtonGadget(#Button_2, 170, 20, 80, 30, "Ende")
      
    EndIf
  EndIf
EndProcedure

Open_Window_0()  ;hier wird das Fenster geöffnet

Repeat ; Start of the event loop ; Ereignisbehandlungsroutinen
  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
  ;You can place code here, and use the result as parameters for the procedures
  If Event = #PB_Event_Gadget
    If GadgetID = #Button_0
      MessageRequester("aha","Ok gedrückt",0)
    ElseIf GadgetID = #Button_1
      MessageRequester("so","Du hast den mittleren Knopf gedrückt",0)
    ElseIf GadgetID = #Button_2
      MessageRequester("so","Ende",0)
      End
    EndIf
  EndIf
Until Event = #PB_Event_CloseWindow ; End of the event loop
MessageRequester("Kreuzchen","So macht man auch Schluss",0)
End
;
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

tipyo hat geschrieben:Habe jetzt immer wieder versucht nur ein Button mit ok
mit dem Visual Designer zu erstellen und diesen mit einem
einfachen Quelltext zu versehen.
in PB geht das nicht, "einen Button mit einem Quelltext versehen".

in PB schreibst du dir eine event-schleife, in der du die events auswertest.
in dem unterabschnitt, wo dein Button ausgewertet wird,
dort kannst du dann den code der sich auf deinen button bezieht einsetzen.

ich hab dir mal ein kleines beispiel gemacht,
grad in ein paar minuten runtergetippt....

Code: Alles auswählen

Enumeration 
  #Window0
EndEnumeration
Enumeration 
  #TextGadget
  #ClickButton
  #CloseButton
EndEnumeration
OpenWindow(#Window0,-1,-1,300,200,"So geht ein Button")
CreateGadgetList(WindowID(0))
TextGadget(#TextGadget,30,30,200,100,"Klick den Button",#PB_Text_Center|#PB_Text_Border)
ButtonGadget(#ClickButton,200,150,80,30,"Klick Mich")
ButtonGadget(#CloseButton,260,20,20,20,"X")
Define EXIT.l = #False
Define EventID.l
Define ClickCount.l = 0
Repeat
  EventID = WaitWindowEvent()
  GadgetNr = EventGadget()
;****** Auswertung der Events
  Select EventID
;****** Auswertung der Gadget-Events
    Case #PB_Event_Gadget
      Select GadgetNr
;****** Reaktion auf den Click-Button
        Case #ClickButton
          ClickCount +1
          SetGadgetText(#TextGadget, Str(ClickCount) + " mal geclickt!")
;****** Reaktion auf den Close-Button
        Case #CloseButton
          EXIT = #True
      EndSelect
;****** Auswertung des Close-Events
    Case #PB_Event_CloseWindow
      EXIT = #True
  EndSelect
;****** Ende der Auswertungen
Until EXIT = #True
wenn du den visual designer benutzen willst,
läßt du dir von ihm den quelltext für die erzeugung der buttons ausgeben.
zusätzlich kannst du aktivieren, dass er dir auch eine rudimentäre ereignisschleife ausgeben soll.
in diese kannst du dann an der jeweiligen stelle deinen code für den button einfügen.

noch einmal:
* PB ist nicht objektorientiert
die buttons und anderen fensterelemente sind nicht in dem sinne objekte,
dass sie instanzen von klassen sind die eigenen code beinhalten.

* PB ist nur begrenzt modular
du kannst mit programmodulen arbeiten, indem du deinen code in mehrere includes aufsplittest.
aber dein code ist nicht automatisch insofern modular, dass du für jeden
button einen code hättest, der für sich allein in einem editor-fenster steht.

* PB ist keine klicki-bunti-zusammenclick-oberfläche
PureBasic ist eine Programmiersprache.
bei Programmiersprachen ist es üblich, dass man quellcode schreibt.
die 'Visual'-Produkte von M$ sind die einzigen entwicklungsumgebungen,
die eher wie ein Game-Maker aufgemacht sind.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
D@nte
Beiträge: 324
Registriert: 24.04.2007 15:33
Wohnort: Berlin

Beitrag von D@nte »

>Mir ist das alles ein Rätsel. Warum findet man nichts über eine detailierte
Hilfe dazu im Netz.
ROLF
Ich wiederhol mich eigentlich recht ungern...
D@nte hat geschrieben:2.) Gibt's ne PureBasic.chm
3.) Gibt's nen Ordner Examples
Außerdem gibt's da oben rechts auch noch Links zu zB PureArea.net wo's haufenweise Sources und Tuturials gibt...

Und da wundern sich die Neuen immer noch warum der Umgangston hier schnell mal etwas grober wird?! Vllt sollte man auch mal lesen was geantwortet wird und sich was von den Dingen aneignen...
Kaeru hat ja glaube auch erst in 3 seiner Beiträge hier erwähnt das PB weder objektorientiert, modular noch ein Anwendugsbaukasten ist
Zuletzt geändert von D@nte am 09.07.2007 14:56, insgesamt 1-mal geändert.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

@Dante

...er meinte wohl eher ne ausführliche Help zum Visual Designer...

in diesem thread weiter oben wurde ja auch schon auf PureForm hingewiesen...
ich kenn das nicht, ist das gut dokumentiert?
evtl. lohnt sich das eher für ihn...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
D@nte
Beiträge: 324
Registriert: 24.04.2007 15:33
Wohnort: Berlin

Beitrag von D@nte »

>...er meinte wohl eher ne ausführliche Help zum Visual Designer...
Selbst wenn...
Der neuste Thread zu dem Thema existiert seit dem 8.07.2007 um 21:15:35 Titel: Visual Designer, hätte er also ohne Probleme finden können wenn er gewollt hätte.

>PureForm hingewiesen...
PureFORM ist imo reine Geschmackssache ich kann damit nix anfangen is mir viel zu überladen, deshalb hab ich den auch nicht ausgibig getestet. Die Hilfe sieht auch nicht umfassender aus als die zum VD

>evtl. lohnt sich das eher für ihn...
*kopfkratz*
Macht das nen Unterschied womit man sich seine Gadgets zusammenklickt?! Das schönste Frontend bringt nix wenn keines der Gadgets funktioniert, weil man nicht in der Lage ist die einzelnen Gadgets mit Events zu verbinden...
Benutzeravatar
rolaf
Beiträge: 3843
Registriert: 10.03.2005 14:01

Beitrag von rolaf »

Kaeru Gaman hat geschrieben:in diesem thread weiter oben wurde ja auch schon auf PureForm hingewiesen...
ich kenn das nicht, ist das gut dokumentiert?
evtl. lohnt sich das eher für ihn...
Also eine Hilfe ist dabei, jedoch alles englischsprachig - ich kann daher nicht beurteilen ob diese Hilfe gut ist und ob tipyo des englischen mächtig ist. Ich komme jedoch mit PureFORM auch ohne Anleitung und ein paar Englisch-Brocken gut zurecht, was eigendlich positiv für das Tool spricht. :)

@Dante
In PureForm kann man sehr wohl seinen Code für Buttons etc. einfügen und das Progie sogleich mit diesen Codes testen, wie bei VB. Lade dir mal die neueste Version, gnozal war sehr fleisig - das ist wirklich eine glänzende Arbeit und "meiner Meinung" der beste Visual Designer für PB momentan!

Bild
:::: WIN 10 :: PB 5.73 :: (x64) ::::
Benutzeravatar
mk-soft
Beiträge: 3845
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Ok,
wollte ich noch nicht anbieten, da man erst mal von Hand die Events zur Übung schreiben sollte.

Speziell für den Visual Designer oder von Hand geschriebene Common-Dateien.

http://www.purebasic.fr/german/viewtopic.php?t=12579

Danach hat man es wie bei VB alle Events vorbereitet.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
D@nte
Beiträge: 324
Registriert: 24.04.2007 15:33
Wohnort: Berlin

Beitrag von D@nte »

@Falo
Hab ich irgendwo behauptet, dass es mit PureFORM nicht möglich wäre Code direkt mit Buttons zu verbinden?! Hat doch sogar schon wer hier im Topic erwähnt...
Hab lediglich geäußert, dass mir PureFORM zu überladen ist...

Und auch wenn man Code direkt mit Buttons verbinden kann setzt das immer noch vorraus das man auch ne wage Ahnung hat wie so'n Stück Code aus zu sehen hat...
Benutzeravatar
rolaf
Beiträge: 3843
Registriert: 10.03.2005 14:01

Beitrag von rolaf »

D@nte hat geschrieben:evtl. lohnt sich das eher für ihn...
*kopfkratz*
Macht das nen Unterschied womit man sich seine Gadgets zusammenklickt?! Das schönste Frontend bringt nix wenn keines der Gadgets funktioniert, weil man nicht in der Lage ist die einzelnen Gadgets mit Events zu verbinden...
*kopfkratz* :wink:
:::: WIN 10 :: PB 5.73 :: (x64) ::::
Benutzeravatar
D@nte
Beiträge: 324
Registriert: 24.04.2007 15:33
Wohnort: Berlin

Beitrag von D@nte »

Ich denk mal du beziehst dich auf diesen Satz:
weil man nicht in der Lage ist die einzelnen Gadgets mit Events zu verbinden...
Jaja die deutsche Sprache
Du hast das im falschen Kontext aufgefasst, meine Aussage bezog sich nicht auf die Möglichkeiten eines VisualDesigners (als Oberbegriff :twisted: ), sondern auf die Befähigung des Benutzers eine Eventschleife mit den Aktionen für die einzelnen Gadgets selber zu programmieren :lol:

Denn wie in meinem letzten Post schon gesagt habe, selbst wenn PureFORM die Möglichkeit bietet direkt den Gadgets Events zu zuweisen, muss man immer noch wissen wie man das was die Gadgets machen sollen in PB ausdrückt.

z.B.

Code: Alles auswählen

Case #Potenz_Basis_5
  int a = 5;
  int[] = new Zahlen[100];
  for (int i = 0; i < Zahlen.length - 1; i++) {
    Zahlen[i] = Math.pow(a, i);
  }
oder

Code: Alles auswählen

Case #Potenz_Basis_5
  For 0 - 99
    Array = Basis hoch Exponent
Sind beides (korrekte) Codes aber bringen einem beide nix wenn man se bei PureFORM per "Code Injection" (hat gonzal das so genannt?!) einfügt...
Antworten