Konsole-Programme (RootCRT): Unterschied zwischen den Versionen
Georg (Diskussion | Beiträge) (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…“) |
Georg (Diskussion | Beiträge) 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 [[ | 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.