XbpStatic und :type

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14658
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

XbpStatic und :type

Beitrag von Jan »

Ich hab da mal eine Verständnisfrage: Ich kann ja unter :type u. a. verschiedenste Rechtecke oder Linien angeben. Aber in wie weit lassen die sich modifizieren?

Ich habe damit 2 Probleme: Linien gehen anscheinend nur waagerecht. Senkrecht werden die in 3 unterschiedliche Abschnitte unterteilt, was ziemlich daneben aussieht. Und die Rechtecke lassen sich anscheinend farbig überhaupt nicht einstellen (die Fläche in dem Rechteck), egal welcher Typ und egal wie ich die Farbe einstellen möchte, es passiert garnichts.

Ist das tatsächlich so, hat das einen bestimmten Grund, oder mache ich da etwas verkehrt?

Ich könnte mir natürlich die Linien und Rechtecke auch über die Gra...-Funktionen zusammenbasteln. Aber wenn es doch über die XbpStatic einfacher geht? Wenn es denn geht.

Jan
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hallo,

die Farbe kann man beim richtigen Typ als Presentationparameter einstellen.
Allerdings nicht gemeinsam mit rised oder sowas. Ich komme jetzt aber nicht an meinen Code.
Gruß
Hubert
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14658
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Hallo Hubert,

hab ich ja versucht. Bringt aber nix.

Jan
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16517
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Jan,
die senkrechten sind oft nicht wirklich senkrecht! War aber eigentlich ein Bug in einer älteren Version...
Gab es aber einen Workaround zu - suche mal in der Knowledgebase...
Hmm - die 4667 ist noch immer offen, aber nur für eine gepunktete Linie...
Ich glaube ich hatte mir mit einer Box statt einer Linie beholfen - und die halt entsprechend schmal gemacht...

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12909
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 46 Mal

Re: XbpStatic und :type

Beitrag von AUGE_OHR »

hi,
Jan hat geschrieben: Und die Rechtecke lassen sich anscheinend farbig überhaupt nicht einstellen (die Fläche in dem Rechteck), egal welcher Typ und egal wie ich die Farbe einstellen möchte, es passiert garnichts.
hm ... eigendlich sollte es geht bei :
XBPSTATIC_TYPE_FGNDRECT Viereck, gefüllt mit Vordergrundfarbe

XBPSTATIC_TYPE_BGNDRECT Viereck, gefüllt mit Hintergrundfarbe

XBPSTATIC_TYPE_HALFTONERECT Rahmen, gefüllt mit Hintergrundfarbe des Desktop Fensters
aber ich bekomme es nicht mit dem Sample
C:\ALASKA\XPPW32\SOURCE\samples\basics\XBPSTYLE\Static.prg
hin das er meine Farben zeigt ... nur Schwarz, Dunkelgrau und Weiss ...

... aber ich weiss das man Transparent nehmen kann um ein Hintergrund
BMP in einem solchen Rahmen durchsheinen zu lassen.

gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hi,

ich glaube ich habe den TYPE einfach leer gelassen.
Mal sehen wo ich den Code verwendet habe ... ich werde Montag mal nachsehen.
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hallo,

ich habe mal im XppFD nachgesehen und da ist es mir (auf-)eingefallen:

KEIN TYPE Eintrag = TEXT- Da funktioniert es wunderbar:

Code: Alles auswählen

::Static1 := XbpStatic():new( ::drawingArea, , {12,276}, {276,108}, { { XBP_PP_BGCLR, GRA_CLR_RED }, { XBP_PP_FGCLR, GRA_CLR_BLUE } } )
   ::Static1:caption := "Gruppe"
   ::Static1:clipSiblings := .T.
gibt blaue Schrift auf rotem Grund. Ein rotes Rechteck habe ich bei Bitmap erhalten, solange man keine angibt.

Code: Alles auswählen

::Static2 := XbpStatic():new( ::drawingArea, , {12,156}, {276,108}, { { XBP_PP_BGCLR, GRA_CLR_RED }, { XBP_PP_FGCLR, GRA_CLR_BLUE } } )
   ::Static2:caption := "Gruppe"
   ::Static2:clipSiblings := .T.
   ::Static2:type := XBPSTATIC_TYPE_FGNDRECT
dieses sollte zwar FG= Blau sein, es ist und bleibt aber nur schwarz.

Die Querlinien sind wohl nicht zu gebrauchen. Wenn man GROUB_BOX wählt, kann man übrigens oben die Überschrift einfärben ;-)

Einfach experimentieren bis es passt. Dafür passt der XppFD ganz gut.

PS: wenn man außen einen schönen (raised oder pressed) Rahmen haben will, oder einfach eine andere Farbe, nimmt man 2 XbpStatic.
Der äußere Rahmen muss nur zuerst CREATEd werden und sollte die siblings clippen (andere Controls aussparen).
Gruß
Hubert
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16517
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Jan,
noch mal zu Deinen Linien:
Wie ich bereits schrieb - bei mir geht das problemlos so:

Code: Alles auswählen

::line2 := xbpStatic():new( ::drawingArea,, {90,396}, {1,51}, { { XBP_PP_FGCLR, GRA_CLR_BLACK } } )
::line2:caption := ""
::line2:clipSiblings := .T.
::line2:type := XBPSTATIC_TYPE_FGNDFRAME
Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14658
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Hallo Hubert,

ja, genau das ist auch meine Beobachtung. Das innere Rechteck bleibt immer schwarz oder in den Systemfarben. Ein Static darin hat die Hintergrundfarbe, die dem Text-Type-Static mitgegeben wird. Ich hab deswegen schon mal versucht, einfach einen Text-Static ohne Text einzubauen in der inneren Größe des Rechteck-Static. Aber das kann ja auch nur ein Workaround sein, und nicht das, wie es eigentlich funktionieren sollte.

Hallo Martin,

ja, das funktioniert bei mir auch. Aber ich hätte doch gerne die Linienarten, die XbpStatic mir anbietet, also erhaben oder eingerückt. Dein Vorschlag gibt mir aber einfach nur einen Strich. Auch wenn ich daraus natürlich die gewünschte Linienart basteln könnte: Einfach den entsprechenden Static-Type zu nutzen ist doch wesentlich einfacher.

Ich überleg mal, ob ich Till frag, ob es da irgendeinen Bug gibt.

Jan
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16517
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Jan,
nimm doch einfach die entsprechende Box als type - aber dann in der Breite 2...

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Jan hat geschrieben:... einfach einen Text-Static ohne Text einzubauen in der inneren Größe des Rechteck-Static. Aber das kann ja auch nur ein Workaround sein, und nicht das, wie es eigentlich funktionieren sollte.
Von VO her weiß ich noch, dass Windows da insgesamt sehr unflexibel wurde als auf 3D Darstellung umgestellt wurde (vorher war alles bunt, danach dominierten die Systemfarben.). Dennoch ist es sicher, dass eine Box mit erhöhter Linie oder eine eingedrückte im Rahmenbereich die Systemfarben braucht und im inneren Bereich nunmal keine Auswahl hat.

Die 2 Boxen übereinander zu legen wird ja z.B. auch bei Groupboxen mit SLE etc gemacht. Ob Workaraound oder nicht, was sollst hauptsache es geht. Wenn die Figur dann komplexer wird, muss man halt ein eigenes Bitmap benutzen und als Hintergrund verwenden.
Gruß
Hubert
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14658
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Ich habe gerade eine Mail von Till bekommen.
Till Warweg an Jan persönlich hat geschrieben:du hast Recht: die Dokumentation ist etwas unpräzise! Sowohl bei
den Box- als auch bei den Linientypen ist immer eine Systemfarbe
gemeint, wenn von Vorder- und Hintergrundfarbe gesprochen wird.
Du müßtest also ins Control Panel gehen, um die Farben zu
ändern ;-). Die Static-Typen waren dazu gedacht, dem Entwickler
eine einfache Schnitstelle für den 3D-Look des Betriebsystems
an die Hand zu geben.

Für Linien und Rechtecke mit einstellbaren Farben würde ich lieber
den XBPSTATIC_TYPE_TEXT-Typ wählen und die Caption einfach
leer lassen. Über :SetColorBG() läßt sich die Farbe wählen. Ich
gehe einfach mal davon aus, dass Du auf den 3D-Look keinen Wert
legst, richtig? Wäre also ein Typ XBPSTATIC_TYPE_SIMPLELINE
oder XBPSTATIC_TYPE_SIMPLEFRAME eine gute Idee, um die
Sache für den Entwickler zu vereinfachen?

Auch bei den Linientypen hast Du einen Punkt: diese werden
tatsächlich falsch gemalt, wenn das Static-Objekt vertikal angeordnet
ist. Ich werden mir das ansehen!
Damit ist die Sache also geklärt. Wenn auch natürlich nicht so, wie ich mir das erhofft hatte.

Jan
Antworten