Konsole-Programme (RootCRT)

Aus Wiki des Deutschsprachige Xbaseentwickler e. V.
Zur Navigation springen Zur Suche springen


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.