Seite 6 von 7

Verfasst: 09.07.2007 14:32
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
;

Verfasst: 09.07.2007 14:37
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.

Verfasst: 09.07.2007 14:51
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

Verfasst: 09.07.2007 14:55
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...

Verfasst: 09.07.2007 15:08
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...

Verfasst: 09.07.2007 15:10
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

Verfasst: 09.07.2007 18:43
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.

Verfasst: 09.07.2007 19:05
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...

Verfasst: 09.07.2007 19:26
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:

Verfasst: 09.07.2007 19:52
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...