Konsole-Programme (RootCRT): Unterschied zwischen den Versionen

Aus Wiki des Deutschsprachige Xbaseentwickler e. V.
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „__FORCETOC__ == Textmodus, nicht mehr == Für Clipper-Migranten bietet sich ein Programm an, dass auf einem Objekt der RootCRT()-Klasse basiert. Leider g…“)
 
Keine Bearbeitungszusammenfassung
Zeile 9: Zeile 9:
[[RootCRT()]] stellt ein Text-Modus-Fenster zur Verfügung.
[[RootCRT()]] stellt ein Text-Modus-Fenster zur Verfügung.


Entscheidend hierfür ist - bei Verwendung der Standard-[[AppSys.prg]] die Projekt-Definitionsdatei. Es gibt dort zwei Stellen, an denen die Weichen für ein [[XbpCRT]]-Programm gestellt werden:
Entscheidend hierfür ist - bei Verwendung der Standard-[[AppSys.prg]] die Projekt-Definitionsdatei. Es gibt dort zwei Stellen, an denen die Weichen für ein [[RootCRT()]]-Programm gestellt werden:


  GUI = no
  GUI = no
Zeile 24: Zeile 24:
  CASE nAppType == APPTYPE_VIO .OR. nAppType == APPTYPE_NOVIO
  CASE nAppType == APPTYPE_VIO .OR. nAppType == APPTYPE_NOVIO
     // entspricht den Alternativen, die auf [[RootCRT()]] aufbauen
     // entspricht den Alternativen, die auf [[RootCRT()]] aufbauen
Hierzu ein kleines Demo-Programm:
FUNCTION Main()
  Local cName := Space(30)
  ? MaxRow()
  ? MaxCol()
  @ 10, 10 GET cName
  READ
RETURN (.T.)
Dies sieht - zusammen mit dem Bildschirm-Output - schon recht Clipper-like aus.
== Die Einschränkung ==
Versuchen wir es jetzt mit diesem kleinen Programm:
FUNCTION Main()
  Local aPos, aSize, oXbp
  aPos := {1,1}
  aSize := {20,3}
  oXbp := XbpPushButton():new(SetAppWindow(), SetAppWindow(), aPos, aSize)
Mehr Code brauchen wir nicht, denn beim Erstellen eines [[XbpPushButton()]] bricht das Programm ab mit dem Hinweis, dass wir es ohne das Link-Flag /PM:PM erstellt haben.
Ohne /PM:PM stehen die Elemente, die wir für ein GUI-Programm benötigen, nicht zur Verfügung. Und: die Fehlermeldung lässt sich nicht mit der Maus beantworten, da in unserem kleinen Beispiel kein Aufruf von [[SetMouse()]] vorkommt, und ohne den gibt es keine Mausunterstützung.

Version vom 5. Juli 2013, 09:27 Uhr


Textmodus, nicht mehr

Für Clipper-Migranten bietet sich ein Programm an, dass auf einem Objekt der RootCRT()-Klasse basiert. Leider gibt die Dokumentation gar nichts über diese Klasse preis, und man erfährt von ihrer Existenz nur durch einen Blick in die mitgelieferte Quelle der AppSys.prg:

oCrt := RootCrt():New()

RootCRT() stellt ein Text-Modus-Fenster zur Verfügung.

Entscheidend hierfür ist - bei Verwendung der Standard-AppSys.prg die Projekt-Definitionsdatei. Es gibt dort zwei Stellen, an denen die Weichen für ein RootCRT()-Programm gestellt werden:

GUI = no
LINKFLAGS =

Beide Anweisungen verhindern in dieser Form, dass ein Presentation Manager Programm erzeugt wird.

In der Standard-AppSys.prg findet sich folgender Code:

nAppType := AppType()
DO CASE
CASE nAppType == APPTYPE_PM
   // wird in unserem Fall nicht ausgewählt, verwendet entweder XbpDialog() oder XbpCRT()
CASE nAppType == APPTYPE_VIO .OR. nAppType == APPTYPE_NOVIO
   // entspricht den Alternativen, die auf RootCRT() aufbauen


Hierzu ein kleines Demo-Programm:

FUNCTION Main()
  Local cName := Space(30)
  ? MaxRow()
  ? MaxCol()
  @ 10, 10 GET cName
  READ
RETURN (.T.)

Dies sieht - zusammen mit dem Bildschirm-Output - schon recht Clipper-like aus.


Die Einschränkung

Versuchen wir es jetzt mit diesem kleinen Programm:

FUNCTION Main()
  Local aPos, aSize, oXbp
  aPos := {1,1}
  aSize := {20,3}
  oXbp := XbpPushButton():new(SetAppWindow(), SetAppWindow(), aPos, aSize)

Mehr Code brauchen wir nicht, denn beim Erstellen eines XbpPushButton() bricht das Programm ab mit dem Hinweis, dass wir es ohne das Link-Flag /PM:PM erstellt haben.

Ohne /PM:PM stehen die Elemente, die wir für ein GUI-Programm benötigen, nicht zur Verfügung. Und: die Fehlermeldung lässt sich nicht mit der Maus beantworten, da in unserem kleinen Beispiel kein Aufruf von SetMouse() vorkommt, und ohne den gibt es keine Mausunterstützung.