Xbase für Anfänger

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Xbase für Anfänger

Beitrag von Benz »

Hi,

dieser Eintrag erscheint euch vielleicht wie ein Witz allerdings finde ich einfach nirgends einen Beitrag, auch nicht im Internet, der mal den Einstieg in XBase zeigt.
Also Beispielsweise wie kann ich bei einer GUI-Anwendung Buttons initialisieren und anschließend ein Klick-Ereignis abfangen und dieses verwerten.

Gerade so ein Beispiel wäre für mich echt hilfreich.
Liebe Grüße
Benz
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Xbase für Anfänger

Beitrag von brandelh »

Hi,

nur keine Angst, wir lachen nur heimlich ;-)
im Ernst, es gibt (gab) ein kleines Büchlein, dass die ersten Schritte beschreibt,
möglicherweise ist das nur noch in PDF Form dabei.
Aber in den vielen Beispielen steht viel interessantes, ein MDI-Beispiel oder ein SDI-Beispiel:

\alaska\XPPW32\source\samples\apps\MdiDemo etc. - hierauf habe ich mein Framework aufgebaut.

auch in der Hilfe zu GUI etc. ein weiteres zeigt die Unterschiede bei den Fenster ...

\alaska\XPPW32\source\samples\basics\WINDOWS
Gruß
Hubert
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14658
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: Xbase für Anfänger

Beitrag von Jan »

... außerdem nicht zu vergessen: Mit Arctica kommt eine neue, kompett überarbeitete, praxisorientiertere Onlinehilfe raus.

Ansonsten: Ja, den von Hubert angesprochenen "Basic User Guide" durcharbeiten. Und mal die Anfänge der Onlinehilfe lesen. Leider gibt es es da insgesamt gesehen einen Nachteil: Der Großteil der Beispiele ist für Clipperumsteiger geschrieben, und damit nicht GUI.

Und natürlich nicht zu vergessen: Im Forum nachfragen. Kaum eine Frage ist zu doof, als das man sie hier nicht stellen könnte. Wir haben hier alle mal klein angefangen, und können solche "Anfängerprobleme" vollkommen nachvollziehen. Such Dir einfach den richtigen Forenbereich aus, und frag.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12909
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 46 Mal

Re: Xbase für Anfänger

Beitrag von AUGE_OHR »

Benz hat geschrieben:Also Beispielsweise wie kann ich bei einer GUI-Anwendung Buttons initialisieren und anschließend ein Klick-Ereignis abfangen und dieses verwerten.
im Xbase++ Help File findest du ein Beispiel, aber ich gebe zu das man als "Newbie" es nicht unbedingt versteht.

Code: Alles auswählen

      oXbp := XbpPushButton():new() 
      oXbp:caption := "A" 
      oXbp:create( , , {10,20}, {100,40} ) 
      oXbp:activate:= {|| QOut( "Pushbutton A" ) } 
damit würde man ein XbpPushButton() "bauen"

Zeile 1 : mit Xbpart():new() leitest du das ganze ein
Zeile 2 : hier erfolgt die "Konfiguration" d.h. du bestimmst die "Eigenschaften" ( Property )
Zeile 3 : hier findest du den "Lebenszyklus". Es wird hier die Systemresourcen für ein XbpPushButton-Objekt anfordert
Zeile 4 : das ist nun der "Slot" für die "Nachrichten" ( Event )

nun brauchst du für die "Nachrichten" ( Event ) eine AppEvent "Schleife"

Code: Alles auswählen

      nEvent := 0 
      DO WHILE nEvent <> xbeP_Close 
         nEvent := AppEvent( @mp1, @mp2, @oXbp ) 
         oXbp:HandleEvent( nEvent, mp1, mp2 ) 
      ENDDO 
wenn du nun auf eine XbpPushButton() "clickst" wird der "xbeP_Activate" Event ausgelöst.
damit wird nun der "oXbp:activate" Slot aktiviert und der Codeblock evaluiert, that all.
gruss by OHR
Jimmy
Benutzeravatar
Bertram Hansen
Foren-Moderator
Foren-Moderator
Beiträge: 1015
Registriert: Di, 27. Sep 2005 8:55
Wohnort: 51379 Leverkusen
Hat sich bedankt: 28 Mal
Danksagung erhalten: 20 Mal
Kontaktdaten:

Re: Xbase für Anfänger

Beitrag von Bertram Hansen »

Hallo Benz,

ich glaube Herbert http://www.xbaseforum.de/memberlist.php ... file&u=300 hat auch mal ein Einstiegsdokument für xBase++ geschrieben. Einfach mal anfragen.
:wave:
Gruß Bertram
http://www.tobax.de
Mitglied der XUG Cologne
Mitglied der XUG Osnabrück
Beisitzer des Deutschsprachige Xbase-Entwickler e.V.

Solange Kakaobohnen an Bäumen wachsen ist Schokolade Obst!
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Xbase für Anfänger

Beitrag von Herbert »

Ja, gibts noch - mittlerweile übrigens auch für Windev :wink:
Dateianhänge
windowsprogramming_xbaseplus.pdf
Xbase-Einstieg
(659.94 KiB) 426-mal heruntergeladen
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14658
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: Xbase für Anfänger

Beitrag von Jan »

Hallo Herbert,

ich bin begeistert! Ich wußte garnicht, daß Du das geschrieben hast.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Xbase für Anfänger

Beitrag von Koverhage »

Hallo Herbert,

im WinDev Forum ?
Gruß
Klaus
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Xbase für Anfänger

Beitrag von brandelh »

Koverhage hat geschrieben:Hallo Herbert,
im WinDev Forum ?
nur die WinDev Variante, die Xbase++ PDF nicht. Ich kann sie aber auch hier nicht finden ;-)
Gruß
Hubert
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Xbase für Anfänger

Beitrag von Herbert »

Jan hat geschrieben:Hallo Herbert,
ich bin begeistert! Ich wußte garnicht, daß Du das geschrieben hast.
Jan
Danke für die Blumen, Jan.
Aber du brauchst dies als Profi ja gar nicht :)
Meine Art, etwas zu lernen ist das Verfassen einer leserlichen Doku. So bleibt das Geschriebene besser in meinem Kopf besser haften.
Koverhage hat geschrieben:Hallo Herbert,
im WinDev Forum ?
Ja, unter Windev Tutorial (Installation).
Grüsse Herbert
Immer in Bewegung...
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Re: Xbase für Anfänger

Beitrag von Benz »

Danke für die ganzen Tipps :-) Bin jetzt schon ein gutes Stück weiter.

@Herbert, ich kann deine Doku leider nicht finden. Könntest du den Link schicken ?
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16517
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Xbase für Anfänger

Beitrag von Martin Altmann »

Moin,
die hat er doch an sein Posting hier im Thread angehangen.

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Re: Xbase für Anfänger

Beitrag von Benz »

Tjaja da sieht man den Wald vor lauter Bäumen nicht :-D Danke
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Re: Xbase für Anfänger

Beitrag von Benz »

Und wieder ich :-P
Kann mir jemand sagen, wie ich, wenn ich ein SLE-Element habe, darin Text, beispielsweise aus einer Datenbank, bei Programmstart einlesen kann, ohne, dass wenn ich reinklicke, dieser Text wieder verschwindet, wie es ja bei der bei mir nicht funktionierenden Eigenschaft CueBanner der Fall ist.

Gruß Jens
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Xbase für Anfänger

Beitrag von brandelh »

Hi,

du meinst einen Vorgabewert setzen ;-)
entweder du definierst einen DATALINK siehe Handbuch zu ::dataLink
Beispiel: ::dataLink := {|x| IIf( x==NIL, xVariable, xVariable:=x ) }

oder du speicherst den Inhalt gleich mit der Methode
oSle:SetData( XYZ->Feld ) // oder auch direkten Text, dtoc(Datumswerte), etc.

Das originale SLE kann nur TEXT !

Ich habe in der Wissensbasis verschiedene abgeleitete Klassen angeboten, die auch Datums und numerische Werte sauber bedienen.
Gruß
Hubert
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Re: Xbase für Anfänger

Beitrag von Benz »

Dankeschön ;-)

An der Stelle komme ich dann gleich zu meiner nächsten Frage :-D

Und zwar gehen alle Koordinaten ja von der linken unteren Ecke aus.
Wenn ich jetzt zu Fuß programmiere, dann muss ich ja jedes Mal wenn ich mein Fenster aus Platzmangel vergrößere, dann muss ich die Koordinaten jedes Buttons etc wieder ändern um alles möglichst oben zu halten.

Gibt es eine Möglichkeit z.B. die Ausrichtung auf die Ecke oben links zu verlagern ?

Gruß jens
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Xbase für Anfänger

Beitrag von Tom »

Hallo, Benz.

Gerade bei Migration hilft die kongeniale und sehr umfangreiche (und preisgünstige) eXpress++-Bibliothek von Roger Donnay - auch dabei, z.B. das Objektmodell, die Ereignisbehandlung und viele andere Konzepte von Xbase++ schrittweise zu verstehen. Man kann anfangs "wie mit Clipper" relativ schnell echte GUI-Apps entwickeln, um dabei auch zu lernen, wie das ganze technisch funktioniert. Es entsteht echter Xbase++-Code, der dem, der nativ erzeugt wurde, in nichts nachsteht (ganz im Gegenteil).

Ich habe allerdings gehört, dass ein Einsteigerbuch in Arbeit ist.
Herzlich,
Tom
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21200
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: Xbase für Anfänger

Beitrag von Manfred »

Ich kann es auch nur wärmstens empfehlen. Es hat mir verdammt geholfen.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Xbase für Anfänger

Beitrag von brandelh »

Hi,

ja man kann den Ursprung als PresentationParameter nach oben links verlegen, so mache ich das ...
Allerdings ist das noch nicht dokumentiert.

So sieht das bei mir aus:

Code: Alles auswählen

*---------------------------------------------------------------------------
METHOD HB_Dialog:init( oParent, oOwner, aPos, aSize, aPP, lVisible )
   local x
   DEFAULT aPP TO { { XBP_PP_ORIGIN , XBP_ORIGIN_TOPLEFT } }
   x := aScan(aPP, {|aP| aP[1]=XBP_PP_ORIGIN } )
   if x > 0
      aPP[x] := { XBP_PP_ORIGIN , XBP_ORIGIN_TOPLEFT }
   else
      aadd( aPP, { XBP_PP_ORIGIN , XBP_ORIGIN_TOPLEFT } )
   endif
   DEFAULT lVisible TO .F.
   DEFAULT oParent  TO SetAppWindow()

   ::XbpDialog:init( oParent, oOwner, aPos, aSize, aPP, lVisible )
Gruß
Hubert
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14658
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: Xbase für Anfänger

Beitrag von Jan »

Kann ich nur bestätigen. Nicht dokumentiert, aber sowohl in Dialogen als auch in Ausdrucken absolut fehlerfrei. Und viiieeel einfacher in der Handhabung.

Jan


brandelh hat geschrieben:Hi,

ja man kann den Ursprung als PresentationParameter nach oben links verlegen, so mache ich das ...
Allerdings ist das noch nicht dokumentiert.
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12909
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 46 Mal

Re: Xbase für Anfänger

Beitrag von AUGE_OHR »

Benz hat geschrieben:Und zwar gehen alle Koordinaten ja von der linken unteren Ecke aus.
Wenn ich jetzt zu Fuß programmiere, dann muss ich ja jedes Mal wenn ich mein Fenster aus Platzmangel vergrößere, dann muss ich die Koordinaten jedes Buttons etc wieder ändern um alles möglichst oben zu halten.
ich habe alle meine Koordinaten auf {0,0}. Erst beim "o:resize" werden die "Positionen" dann "berechnet"
gruss by OHR
Jimmy
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Re: Xbase für Anfänger

Beitrag von Benz »

Danke für eure Hilfe :-)
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Re: Xbase für Anfänger

Beitrag von Benz »

Und hier auch schon meine nächste Frage. :?
Und zwar habe ich in der Hilfe das TBrowse-Objekt entdeckt. Wenn ich das Beispiel hierzu verwenden will kommt immer die gleiche Fehlermeldung:
Error BASE/4402
Description Acces to method not allowed in this context
Operation: init
ThreadID: 1
Called from MIT1DRUCK (..)
...

Mein Problem wäre jetzt entweder das hier zum Laufen zu bekommen (eigenständig läuft es nur nicht als auszuführender Code bei Klick auf einen Button, außerdem wird das Beispiel dann als DOS Zeugs wenn ich das mal so nennen darf, ausgegeben und ich weiß nicht, ob es vielleicht daran liegt, dass das Beispiel nicht als GUI gedacht ist.).

Oder aber vielleicht kann mir jemand zeigen, wie ich ganz einfach Datenbankdaten mit nur bestimmten Feldinhalten beispielsweise ausgebe, wie ich Datenbanken allgemein ausgebe und Daten darin verändere, ersetze und lösche :)

Ich weiß, es ist viel auf einmal, ich glaube mir fehlt nur noch ein quäntchen bis es klick macht aber ich verstehs einfach nicht ganz.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12909
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 46 Mal

Re: Xbase für Anfänger

Beitrag von AUGE_OHR »

Benz hat geschrieben:Und hier auch schon meine nächste Frage. :?
Und zwar habe ich in der Hilfe das TBrowse-Objekt entdeckt. Wenn ich das Beispiel hierzu verwenden will kommt immer die gleiche Fehlermeldung:
Error BASE/4402
Description Acces to method not allowed in this context
Operation: init
ThreadID: 1
Called from MIT1DRUCK (..)
...
ohne Code was du gemacht hast ist das schwer zu sagen.
Fehlermeldungen bitte komplett posten.
Benz hat geschrieben:Mein Problem wäre jetzt entweder das hier zum Laufen zu bekommen (eigenständig läuft es nur nicht als auszuführender Code bei Klick auf einen Button, außerdem wird das Beispiel dann als DOS Zeugs wenn ich das mal so nennen darf, ausgegeben und ich weiß nicht, ob es vielleicht daran liegt, dass das Beispiel nicht als GUI gedacht ist.).
TBrowse() ist noch aus Cl*pper Zeiten und das war DOS.
Wenn du das in GUI machen willst schau dir mal XbpBrowse() an
Benz hat geschrieben:Oder aber vielleicht kann mir jemand zeigen, wie ich ganz einfach Datenbankdaten mit nur bestimmten Feldinhalten beispielsweise ausgebe, wie ich Datenbanken allgemein ausgebe und Daten darin verändere, ersetze und lösche :)
meinst du jetzt unter GUI ? dafür musst du o:datalink "verstehen".

bei Cl*pper hätte man so was gemacht:

Code: Alles auswählen

   USE (myDBF)
   STORE MyDBF->MeinFeld to MeineVariabel
   @ x,y SAY "hallo" GET MeineVariabel
   READ
   CLEAR GETS
   IF RLOCK()
      REPLACE MyDBF->MeinFeld  WITH MeineVariabel
      UNLOCK
   ENDIF
unter GUI hast du nun den o:Datalink

Code: Alles auswählen

      oXbp              := XbpSLE():new( , , {100,150}, {100,30} ) 
      oXbp:tabStop      := .T. 
      oXbp:bufferLength := 15 
      oXbp:dataLink := {|x| IIf( x==NIL, cVarB, cVarB := x ) } 
      oXbp:create() 
wenn du nun den Codeblock evaluierst hast du die STORE / REPLACE Schritte.
Benz hat geschrieben:Ich weiß, es ist viel auf einmal, ich glaube mir fehlt nur noch ein quäntchen bis es klick macht aber ich verstehs einfach nicht ganz.
siehe dir man C:\ALASKA\XPPW32\Source\samples\solution\xbpget\editbrow.prg an.

Frage : hast du dir schon mal den Xbase++ "FormDesigner" XPPFD.EXE angesehen ?
gruss by OHR
Jimmy
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Re: Xbase für Anfänger

Beitrag von Benz »

Ok hab aus deiner Antwort schon verstanden, was mein Problem ist, danke.

Ja hab den FormDesigner schon versucht, allerdings funktioniert der nicht richtig. ich kann keine aktion machen, ich kann ihn wenn ich ihn geöffnet habe nicht mal mehr ohne taskmanager schließen. Es ist auch so, dass ich nicht unbedingt mit dem FormDesigner programmieren will, da es mir ziemlich wichtig ist, das ganze von Grund auf zu verstehen.

Danke für deine Antwort, ich schau mir jetzt das xbpbrowse an :-) und anschließend das Beispiel von dir, danke.
Antworten