SETMODE() mit GUI=YES (Hybridmodus) [ERLEDIGT]

Auf dem Weg von Clipper, FoxPro u.ä. nach Xbase++

Moderator: Moderatoren

Antworten
Benutzeravatar
dtmackenzie
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 265
Registriert: Do, 22. Nov 2007 9:02
Wohnort: Leipzig
Hat sich bedankt: 66 Mal
Danksagung erhalten: 22 Mal
Kontaktdaten:

SETMODE() mit GUI=YES (Hybridmodus) [ERLEDIGT]

Beitrag von dtmackenzie »

Zur Zeit versuche ich die Kompilation mit GUI=yes hauptsächlich um ein größeres Fenster zu ermöglichen, unabhängig von der Grafikkarte.
Ich habe sowohl

Code: Alles auswählen

    SetMode(43,132)
als

Code: Alles auswählen

    oCrt := SetAppWindow()
    oCrt:configure(NIL,NIL,NIL,43,132)
ausprobiert, auch in Kombination. Zwar ist das Anwendungsfenster dann größer, aber sobald ich ein Unterfenster mit wopen() öffne wird die Anzeige (wo überhaupt etwas erscheint) blockweise zerstückelt und verschoben, auch laute bunte Zeichen sind oft dabei. Hat jemand eine Idee woran das liegen könnte?
Um die erste Frage gleich zuvorzukommen - ja, es ist wirklich mit GUI=yes kompiliert, das kann ich vom Verhalten beim Textmarkieren mit der Maus sehen.
Da bin ich im Moment verblüfft.

David

P.S. Bei mir geht das Alaska "Online Knowledge Base" seit ein paar Tagen nicht mehr - jede Suche ergibt 0 Ergebnisse. Geht es wirklich nicht oder ist es nur ein lokales Problem bei mir (ich benutze NoScript mit Firefox aber http://www.alaska-software.com ist erlaubt)?
Zuletzt geändert von dtmackenzie am Do, 03. Sep 2009 13:44, insgesamt 1-mal geändert.
Viele Grüße,
David
Benutzeravatar
dtmackenzie
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 265
Registriert: Do, 22. Nov 2007 9:02
Wohnort: Leipzig
Hat sich bedankt: 66 Mal
Danksagung erhalten: 22 Mal
Kontaktdaten:

Re: SETMODE() mit GUI=YES (Hybridmodus)

Beitrag von dtmackenzie »

Also, hier is ein Testprogramm dazu - bitte als Test_SetMode.prg speichern und mit xpp Test_SetMode /link:"/PM:PM" /rXbtBase1 /rXbtBase2 kompilieren.
Nach dem ersten Tastendruck soll das Unterfenster öffnen - bei mir zumindest erscheint aber nur ein Ausschnitt davon (ungefähr 5 Zeilen hoch, vielleicht 80 Zeichen breit, linke Seite mitte) - "Weiter..." ist sichtbar aber die andere 4 Texte nicht.
Ist dies auch bei Euch nachvollziehbar?

Code: Alles auswählen

FUNCTION Main()
LOCAL c:=" "

SetMode(43,132)
@ 0,0 SAY "Weiter..." GET c
READ

WInit()
WOpen(2, 2, 42, 130, .f., "R/B, B/R, B, B, B/R")
WBox()
@  1,1   SAY "oben links"
@  1,110 SAY "oben rechts"
@ 39,1   SAY "unten links"
@ 39,110 SAY "unten rechts"
@ 20,60  SAY "Weiter..." GET c
READ
WClose()

RETURN NIL
P.S. Ich habe Xbase++ Version 1.9 mit "subscriptionslosem" SL1 auf Windows XP SP3.

David
Viele Grüße,
David
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: SETMODE() mit GUI=YES (Hybridmodus)

Beitrag von AUGE_OHR »

dtmackenzie hat geschrieben:...aber sobald ich ein Unterfenster mit wopen() öffne wird die Anzeige
sorry, aber ich "denke" da liegt ein "Missverständniss" mit WOPEN() vor.

ich habe es ewig nicht mehr verwendet, aber wenn ich mich recht erinnere ist es ein "virtueller"
Bildschirm "Ausschnitt" , also kein "Fenster" in dem Sinne.

ein Modus <> 80x25 ist was mit VGA-VESA gewesen. Dabei werden nur "bestimmte" Formate wie
80x50 oder 132x25 unterstützt. ich "denke" mich zu erinnern das die 43x25 oder 43x50 von "nicht
allen" unterstützt wurden.

unabhängig davon würde ich WOPEN() als "erstes rausschmeissen", den solchen Code kann man
nicht nach GUI umsetzten.
gruss by OHR
Jimmy
Benutzeravatar
dtmackenzie
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 265
Registriert: Do, 22. Nov 2007 9:02
Wohnort: Leipzig
Hat sich bedankt: 66 Mal
Danksagung erhalten: 22 Mal
Kontaktdaten:

Re: SETMODE() mit GUI=YES (Hybridmodus)

Beitrag von dtmackenzie »

Hallo Jimmy,

das ist völlig richtig, hilft mir aber leider nicht.
Laut Hilfe für SetMode() - "Falls eine GUI Applikation erstellt wurde, kann die Zeilen- und Spaltenzahl, die in einem XbpCrt Fenster angezeigt wird, beliebig definiert werden." Dabei verstehe ich, dass dies im Hybridmodus gilt.
Eine Umstellung von dem Xbase-Tools Textmodus-Fenstersystem (WOpen() u.s.w.) auf "richtige" GUI kommt noch nicht in Frage - "wir verteidigen uns zur Zeit gegen die Alligatoren, das Austrocknen des Sumpfes muss warten"...

Hast Du die Testanwendung kompiliert? Wenn so, waren die Symptome gleich bei Dir? Ich muss eine Entscheidung treffen, ob ich weitermachen oder aufgebe. Es würde mir sehr helfen wenn ich wüßte, ob die Sache prinzipiell geht.
Viele Grüße,
David
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: SETMODE() mit GUI=YES (Hybridmodus)

Beitrag von AUGE_OHR »

hi,
dtmackenzie hat geschrieben:Laut Hilfe für SetMode() - "Falls eine GUI Applikation erstellt wurde, kann die Zeilen- und Spaltenzahl, die in einem XbpCrt Fenster angezeigt wird, beliebig definiert werden." Dabei verstehe ich, dass dies im Hybridmodus gilt.
Ja das ist auch soweit richtig, was eben die Fonts "hergeben"
dtmackenzie hat geschrieben:Eine Umstellung von dem Xbase-Tools Textmodus-Fenstersystem (WOpen() u.s.w.) auf "richtige" GUI kommt noch nicht in Frage - "wir verteidigen uns zur Zeit gegen die Alligatoren, das Austrocknen des Sumpfes muss warten"...
schon verstanden.

was ich aber meine das WOPEN() "vielleicht" nicht bei den "Auflösungen" funktioniert sondern
nur bei "Standart" Formaten wie 80x25 oder so ...
dtmackenzie hat geschrieben:Hast Du die Testanwendung kompiliert? Wenn so, waren die Symptome gleich bei Dir? Ich muss eine Entscheidung treffen, ob ich weitermachen oder aufgebe. Es würde mir sehr helfen wenn ich wüßte, ob die Sache prinzipiell geht.
ja, aber da stimmt diverses überhaupt nicht.
1.) es "passt" nicht auf ein 1024x768 und bei 1280x1024 stimmt das wohl auch noch nicht
2.) sowas kommt bei mir raus
WOPEN.JPG
WOPEN.JPG (10.18 KiB) 6496 mal betrachtet
ich würde erstmal eine "ordentliche*" APPSYS erstellen und die Font Grösse auswählen für die
entsprechenden "Standart" Bildauflösungen.
(*suche mal unter APPSYS und Font, da findest du sicherlich was hier im Forum)

bei WOPEN() frage ich immer ob es den wirklich notwendig ist eine "virtuellen" Bildschirm zu
benutzen den du kannst ja "mehrere" XbpCrt() Fenster gleichzeitig haben (siehe Help File Demo)
und da hast du ja "echte" Koordinaten (bezogen auf den AppDeskTop() )

um das zu "testen" würde ich einfach eine eigene Function WOPEN() schreiben und dort ein XbpCrt öffnen ...
dann wird man ja "sehen" ob die Koordinaten stimmen.
gruss by OHR
Jimmy
Benutzeravatar
dtmackenzie
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 265
Registriert: Do, 22. Nov 2007 9:02
Wohnort: Leipzig
Hat sich bedankt: 66 Mal
Danksagung erhalten: 22 Mal
Kontaktdaten:

Re: SETMODE() mit GUI=YES (Hybridmodus)

Beitrag von dtmackenzie »

Danke Jimmy!

Ja, das Bild entspricht was ich gesehen habe. Nun weiß ich, dass es nicht nur an irgendwelche Verkonfigurierung meines PCs liegt. Also WOPEN() scheint dies nicht zu unterstützen. Schade, das wäre einfach gewesen und hätte die Benutzer sehr glücklich gemacht - würde ich immernoch sofort machen wenn es ginge.

Die Idee, eine eigene WOPEN() zu schreiben hat aber auch etwas. Es könnte vielleicht für die Benutzer etwas unübersichtlich werden wenn eine tiefe Stapel Fenster geöffnet werden, ist aber den Versuch wert. Allerdings muss ich aufpassen, dass der Programmablauf sich dadurch nicht ändern kann, dazu könnte ich vielleicht jedesmal das vorherige Fenster sperren (und verstecken?) wie im folgenden Thema -
http://www.xbaseforum.de/viewtopic.php? ... open#p9050

Ich lasse die Sache nochmal durch den Kopf gehen...
Viele Grüße,
David
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: SETMODE() mit GUI=YES (Hybridmodus)

Beitrag von AUGE_OHR »

hi,
dtmackenzie hat geschrieben:Also WOPEN() scheint dies nicht zu unterstützen. Schade, das wäre einfach gewesen und hätte die Benutzer sehr glücklich gemacht - würde ich immernoch sofort machen wenn es ginge.
em ... äh ... hast du vorher schon mal mit WOPEN() gearbeitet ?

irgendwie kam mir dein "Source" komisch vor ... nun weiss ich es wieder :
es fehlt WBoard() und WSelect(nID) wobei nID := WOpen()

Code: Alles auswählen

IF nError = 0
   WSelect(nID)
... ich würde es mir aber trotzdem überlegen ob du das mit den Tools machen willst
... das wird eine Sackgasse "irgendwann" [-X
gruss by OHR
Jimmy
Benutzeravatar
dtmackenzie
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 265
Registriert: Do, 22. Nov 2007 9:02
Wohnort: Leipzig
Hat sich bedankt: 66 Mal
Danksagung erhalten: 22 Mal
Kontaktdaten:

Re: SETMODE() mit GUI=YES (Hybridmodus)

Beitrag von dtmackenzie »

Hi Jimmy,

Heureka! WBoard() hat's gebracht.

Ich habe das Programm vor Jahren "geerbt", da war überhaupt kein WBoard() drin. Ging ja noch gut bis ich die Fenstergröße geändert habe. Ich hatte sogar schon gestern WBoard() ausprobiert, leider an der falschen Stelle - die Beschreibung in der Hilfe ist nicht ganz eindeutig (Textfenster oder Windows-Fenster?). WSelect() wird schon benutzt wonötig, ist aber implizit nach WOpen().

OK, jetzt sieht's vielversprechend aus und ich markiere das Thema als erledigt.
Ich verstehe auch Deine Warnung - wenn die Benutzer damit zufrieden sind dann komme ich vielleicht nie dazu, eine Konvertierung auf "richtige" GUI zu machen. Bin ich mir aber gar nicht sicher, ob ich das will! Vielleicht lieber neue, kleinere Anwendungen auf einer gemeinsamer Datenbank. Ist ja sowieso eine rein Firmeninterne Anwendung, nicht für Allgemeinverkauf. Naja...

Auf alle Fälle recht herzlichen Dank für Deine Hilfe - ohne Dich wäre ich nicht dazugekommen, WBoard() nochmal zu probieren.
Viele Grüße,
David
Antworten