Seite 2 von 2

Verfasst: 15.11.2004 00:29
von Lars
PBZecke hat geschrieben:Weg von einer modernen OOP zur PB-Steinzeit.
Ich persönlich mag OOP eigentlich sehr gerne. Aber um den Text eines
Gadgets zu setzen, reicht wirklich der Procedurale Ansatz, wobei ich
natürlich einsehe, dass OOP-Gadgets schon irgendwie sexy sind :)

Verfasst: 15.11.2004 14:00
von bluejoke
Offtopic: Nachdem ich OOP in PHP endlich kapiert habe, hab ich gemerkt, wie geil des ist. Das ganze ist soooooo viel praktischer, und momentan ist es das einzige, dass ich bei PB wirklich vermisse. Außerdem muss doch niemand OOP benutzen. Bei TurboPascal, u.s.w. (und nat. PHP) ist es ja auch optional. --> Ab auf den Wunschzettel für PB 17.49 im Jahre 2036.


Simon

Verfasst: 15.11.2004 15:00
von Kaeru Gaman
...mal 'ne ganz andere lösungsidee
(korrigiert mich bitte, wenn ich jetzt müll erzähle)

...könnte man nicht den pointer von dem gadgettext irgentwie ermitteln?

...dann müsste man doch den poiter-inhalt direkt ändern können, gell?

...natürlich müsste man am anfang den inhalt als genügend grossen dummy definieren, damit man nicht übers ende schreibt...

Verfasst: 15.11.2004 16:25
von bobobo
immerzu Pointer

ich nehm fast schon an dass die pointer immerzu auf den Teppich kommen weil in der PB-Hilfe steht dass das was für fortgeschrittene Programmierer ist.
:mrgreen:

Pb ist PB und kommt in weiten Teilen ohne direkt zu manipulierende Pointer aus.

Code: Alles auswählen

;- Window Constants
;
Enumeration
#Window_0
#Window_1
#Button_0
#Button_1
#String_0
#Button_2
EndEnumeration

Global win1,win2

If OpenWindow(#Window_0, 216, 0, 600, 300,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "Application")
  win1=WindowID(#WIndow_0)
  If CreateGadgetList(WindowID())
    ButtonGadget(#Button_0, 0, 0, 170, 110, "FillTextBox")
    ButtonGadget(#Button_1, 170, 0, 170, 110, "Schluss nun")
  EndIf
EndIf
If OpenWindow(#Window_1, 410, 159, 295, 216,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "TextBoxWindow",win1)
  win2=WindowID(#WIndow_1)
  If CreateGadgetList(WindowID())
    StringGadget(#String_0, 0, 0, WindowWidth(), WindowHeight()-20, "")
    ButtonGadget(#Button_2, 0, WindowHeight()-20, WindowWidth(), 20, "Anderes An-Aus",#PB_Button_Toggle)
  EndIf
EndIf

HideWindow(#Window_0,0)
Repeat
  Event = WaitWindowEvent()
  If Event = #PB_EventGadget
    ;Debug "WindowID: " + Str(EventWindowID())
    GadgetID = EventGadgetID()
    If GetGadgetState(#button_2)=1
      HideWindow(#window_0,1)
    Else
      HideWindow(#window_0,0)
    EndIf
    If GadgetID = #Button_1
      End
    EndIf
    If GadgetID = #Button_0
      Debug "GadgetID: #Button_0"
      UseWindow(#Window_1)
      text.s=""
      For i=1 To 20
        text+Chr(Random(24)+97)
        SetGadgetText(#String_0,text)
      Next i
    ElseIf GadgetID = #String_0
      Debug "GadgetID: #String_0"
    EndIf
  EndIf
Until Event = #PB_EventCloseWindow
End
;

Verfasst: 15.11.2004 18:12
von Lars
bluejoke hat geschrieben:Ab auf den Wunschzettel für PB 17.49 im Jahre 2036.
Sehr (!) begrenzt ist das schon möglich in PB. Durchsuch mal das
Codearchiv nach OOP, da gibt es einige Beispiele in PB.

Was nicht funktioniert sind die Geschichten, die dann ins eingemachte
gehen, das fängt schon bei vererbung an, die zwar theoretisch möglich ist,
sich aber bei selber geschriebenen Klassen schon etwas schierig gestaltet.

Also, nicht zu viel erwarten, aber einfache Objekte kann man schon
basteln.

Vielleicht solltest du für Fragen über das hier hinnaus aber einen neuen
Thread öffnen :roll: :wink:

Verfasst: 15.11.2004 20:02
von Kaeru Gaman
@bobobo

sorry...

aber ich habe mich schon lange an pointer gewöhnt

z.b. unter DOS mit QuickC 3.5 war es am einfachsten, einen punkt in die grafik mit pointer zu setzen, anstatt eine umständlich PSET-funktion zu benutzen...(wohlgemerkt, MODE13 mit 320x160x256farben war der tollste grafixmode damals...)

...nur mal als beispiel...

Pb ist PB : aber der direkte weg ist doch manchmal der kürzeste...

Verfasst: 15.11.2004 22:07
von PBZecke
[quote="Kaeru Gaman

...
Pb ist PB : aber der direkte weg ist doch manchmal der kürzeste...[/quote]

In diesem Falle ist der direkte Weg SetWindowText_() ... :wink: