DCGETOPTIONS und Parameter

Moderator: Moderatoren

Antworten
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

DCGETOPTIONS und Parameter

Beitrag von Manfred »

Hi,
ich experimentiere gerade mal ein wenig mit den Optionen für DCREAD GUI. Dabei treten natürlich auch wieder Fragen auf.
Worin liegt der Unterschied und wann benutzt man folgende Parameter, oder wann besser nicht?
SAYFONT
GETFONT
SAYHEIGHT
GETHEIGHT
PRESENTATION
SAYOPTIONS
COLOR
COLORGETS
DISABLEDCOLOR
DEFAULTFONT
GETTEMPLATE
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
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: DCGETOPTIONS und Parameter

Beitrag von Bertram Hansen »

Hallo Manfred,

ich persönlich würde mir beim Prrogrammstart über die DCGETOPTION die meisten Einstellung setzten und je nach Dialog oder Browse dann bei Bedarf die Optik anpassen.
: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
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: DCGETOPTIONS und Parameter

Beitrag von Manfred »

ich möchte es absolut variabel halten. Ich habe mir jetzt Parameterdateien erstellt, die einmal pauschal für das ganze programm sind und dann kommen noch WS spezifische dazu, die die Standardparameter im Falle überschreiben. Die werden dann in jedem einzelnen DCGETOPTION gesetzt. Dieses ewige fragen, warum man dies und das nicht anpassen kann, will ich damit so gut es geht verhindern.
Aber nochmal zurück zum Thema, wozu ist denn dann eigentlich der Parameter PRESENTATION gut? Vom Gefühl her würde ich sagen, sollte der doch alle anderen Parameter ersetzen?
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
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: DCGETOPTIONS und Parameter

Beitrag von Tom »

Hallo, Manfred.

Es ist sicher empfehlenswert, die DCGETOPTIONS einmalig zu setzen (möglicherweise bei Benutzerwechsel, falls es benutzerbezogene Einstellungen gibt) und als Defaults in allen Dialogen zu verwenden (DC_GetOptDefault). Ich setze in Einzeldialogen auch nur noch diejenigen Optionen, die dort anders sind, etwa Dinge wie NOMINBUTTON in nichtmodalen Dialogen oder ähnliches. Achtung: Einige DCGETOPTIONS gibt es auch mit führendem Unterstrich, z.B. PIXEL, CHEKCGET, VISIBLE und viele, viele andere. Wenn man das verwendet, folgt ein weiterer (logischer) Parameter, der dann entscheidet, wie die Option agieren soll. Ich kann also z.B. irgendwo im Programm eine Variable "lDialogPixel" setzen, und dann "DCGETOPTIONS ... _PIXEL lDialogPixel" verwendet, wodurch die PIXEL-Option je nach Schalterstellung von "lDialogPixel" aktiv wird. Dadurch muss man nicht die DCGETOPTIONS für beide Fälle schreiben. Einfach mal in die DCDIALOG.CH bei "DCGETOPTIONS" schauen, da sieht man, welche Optionen es zusätzlich mit der Schalterfunktion gibt. Es gibt übrigens auch bei DCREAD GUI einige solcher Möglichkeiten (z.B. MODAL vs. _MODAL - tricky, wenn ein Dialog mal im Thread und mal nicht im Thread läuft).

PRESENTATION legt die allgemeinen PP für den Dialog fest, also Dinge wie XBP_PP_FGCOLOR, XBP__PP_FONT usw. - vieles davon entspricht tatsächlich dem, was Du über DCGETOPTIONS auch sonst setzen kannst. Ich verwende die PRESENTATION-Klausel nur bei Browses, MLEs und Combos.

GETTEMPLATE setzt den Referenzbuchstaben für die Breitenberechnung bei nichtpoportionalen Fonts. Das steht standardmäßig auf "W", was meistens passt. Die Felder sind sowieso immer etwas zu groß für den Text, den man reinschreiben kann, wenn man proportionale Schriften verwendet.
DEFAULTFONT setzt die Schriftart für alles, wo Fonts angegeben werden können. Ich find's im Quellcode aber nur bei SLEs. Ich verwende die Option nicht.
DISABLEDCOLOR legt allgemein Farben für alle Objekte fest, die mit WHEN abgeschaltet werden können. Ich mag das Standard-Ausgegraute und verwende das ebenfalls nicht.
COLORGETS demgegenüber finde ich wichtig. Das dreidimensionale Array legt die Farben für aktive, geschützte (EDITPROTECT) und abgeschaltete SLEs fest.
COLOR legt die Standardfarbe des Dialogs fest (BG/FG), die an alle Statics usw. vererbt wird.
SAYOPTIONS ist für das Alignment aller Textstatics (DCSAY).
SAY-/GETHEIGHT ist die Standardhöhe für SAYs und GETs, wenn dort nur die Breite angegeben wird (DCSAY 'Test' SIZE 10). Default ist jeweils 1 (20 Pixel).
SAY-/GETFONT - dito, aber Schriftart.

Noch Fragen?
Herzlich,
Tom
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: DCGETOPTIONS und Parameter

Beitrag von Manfred »

Hi Tom,
Danke erstmal für die ausführliche Erklärung. Aber Du erwähnst Colorgets und dann 3-dimensional. In der Hilfe steht 2-dimensional, deshalb, bin ich überhaupt hier auf die Frage gekommen. Kann man denn mal RGB und mal nicht RGB angeben? Bei COLOR kann man das ja wohl machen. Ich habe es noch nicht versucht.
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
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: DCGETOPTIONS und Parameter

Beitrag von Tom »

Du kannst RGB-Farben (GraMakeRgbColor) und Color-Konstanten mischen. Das liegt daran, dass für die Konstanten ein Wertebereich unterhalb der RGB-Wertebereiche reserviert ist. Aber Du kannst nicht Farbarrays und Konstanten mischen.

Das hier geht:

Code: Alles auswählen

aMyColorsArray := {{GRA_CLR_WHITE,GraMakeRgbColor({1,102,255})},{GraMakeRgbColor({100,200,50}),GRA_CLR_BLACK}}
DCGET OPTIONS COLORGETS aMyColorsArray 
Ohne den Funktionsaufruf für "GraMakeRgbColor" geht es nicht.

Die Erklärung zu COLORGETS war falsch, sorry. Das Array ist zweidimensional und legt die Farbe für GETs mit Fokus (aktiv und Cursor drauf) und für GETs ohne Fokus (aktiv, kein Cursor) fest. Damit lässt sich innerhalb eines Dialogs besser navigieren. Die anderen Farben, z.B. bei GETs, die aus WHEN-Gründen offline sind, legt man über andere Klauseln fest, etwa über DISABLEDCOLOR.
Herzlich,
Tom
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: DCGETOPTIONS und Parameter

Beitrag von Manfred »

ok,
noch eine Frage, wo kann man denn generell für den Dialog VisualStyle an oder abschalten? Im Moment gebe ich das für jeden Xbpart getrennt ein. Das muß doch unter express++ einfacher gehen, oder?
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
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: DCGETOPTIONS und Parameter

Beitrag von Tom »

Hallo, Manfred.

Wenn Themes aktiv sind und Deine App mit einem Manifest daherkommt/verlinkt ist, sind visuelle Stile grundsätzlich an. Ich sehe da nirgendwo in Rogers Framework eine Möglichkeit, das sozusagen gegen die Grundeinstellungen der Anwendung abzuschalten. Anschalten ginge gegen die äußeren Parameter ja sowieso nicht.

Aber. Du kannst die - meiner Meinung nach nicht dokumentierte - Funktion "DC_XbpBrowseDefault()" verwenden, um ein Objekt der Konfigurationsklasse "DC_XbpBrowseConfig" als Standardkonfiguration zu setzen. Und das wiederum kennt zwei interessante iVars, nämlich "useVisualStyleBrowse" und "useVisualStyleScrollBars". Also müsste das hier gehen:

Code: Alles auswählen

oBroConfig := DC_XbpBrowseConfig():New()
oBroConfig:useVisualStyleBrowse := .F.
DC_XbpBrowseDefault(oBroConfig)
Damit wären visuelle Stile für alle Browses abgeschaltet - es sei denn, USEVISUALSTYLE ist dort explizit gesetzt.
Herzlich,
Tom
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: DCGETOPTIONS und Parameter

Beitrag von Tom »

Mir fällt gerade ein - es gibt, glaube ich, im Applikationsobjekt so eine Möglichkeit. Also in Xbase++ direkt.
Herzlich,
Tom
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: DCGETOPTIONS und Parameter

Beitrag von Tom »

Ach so, USEVISUALSTYLE beim DCBROWSE gibt's auch in dieser Unterstrich-Variante mit zusätzlichem logischen Parameter. Wenn Du also standardmäßig das hier machst:

Code: Alles auswählen

DCBROWSE ... _USEVISUALSTYLE UseVisStylesInMyapp()
,

dann kannst Du auch mit einem Schalter - in der Funktion "UseVisStylesInMyapp" - alle Browses entvisualisieren. Aber natürlich nicht nachträglich. :wink:
Herzlich,
Tom
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: DCGETOPTIONS und Parameter

Beitrag von Manfred »

hm, verstehe ich jetzt nicht so ganz. Wenn ich eine Manifestdatei habe, kann ich auch visualstyle an oder abschalten. Da sieht man schon einen Unterschied in den Eingabemasken. Ich setze einfach jeden :usevisualstyle und dann ändert sich das. Ich mache es halt jetzt für jeden Part getrennt. In meinem Fall jetzt Eingabefelder. Die sind dann m.E. so schön eingedrückt und man kann sie sofort erkennen. Aber jeder so wie er will, deshalb ja jetzt die Parameter dafür.
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
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: DCGETOPTIONS und Parameter

Beitrag von Tom »

Wenn Du eine Manifestdatei hast, aber für das Betriebssystem keine visuellen Stile aktiv sind, kannst Du auch nix anschalten.

Wie gesagt, irgendwie geht das über das Applikationsobjekt. Ich hatte das mal im Einsatz, finde es aber im Moment nicht.

Doch, hier:

Code: Alles auswählen

XbpApplication():enableVisualStyles := <nStyle>
nStyle kann "XBPAPP_NOSTYLES" sein (visuelle Stile abgeschaltet, geht auch zur Laufzeit!), "XBPAPP_DIALOGSTYLES" (alle Dialoge unterstützen visuelle Stile) und dann noch zwei andere.
Herzlich,
Tom
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: DCGETOPTIONS und Parameter

Beitrag von Manfred »

OK, DAnke erstmal. Werde mich mal weiterhin damit beschäftigen. Mal sehen, was ich noch so alles entdecke.
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!!
Antworten