Ribbonbar

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12913
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 46 Mal

Ribbonbar

Beitrag von AUGE_OHR »

hi,

mit Codejock kann man ja nun Ribbonbars unter Xbase++ erstellen.

Hierbei sollte man sich allerdings auch an einige "Spielregeln" halten was nach dem lesen des Artikel
http://msdn.microsoft.com/de-de/library ... n-us).aspx
logisch erscheint.
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12913
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 46 Mal

Re: Ribbonbar

Beitrag von AUGE_OHR »

hi,

ich habe ja im vorherigen Thread den Link zum "gewünschten" Design gezeigt.

Nun frage ich mich, wenn man RibbonTabs verwendet, was man da rein packt.
Ribbon_was.JPG
Ribbon_was.JPG (20.24 KiB) 9920 mal betrachtet
Werden in solchen RibbonTabs :
1.) Menu und Submenu Punkte
2.) "Werkzeuge"
untergebracht ?

die ersten 3 RibbonTabs, welche leer sind, wären für ein Menu/SubMenu
die andern RibbonTabs wären die "Werkzeuge"

wie verwendet ihr die RibbonTabs ?
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12913
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 46 Mal

Re: Ribbonbar

Beitrag von AUGE_OHR »

hi,

ich habe da jetzt doch was "negatives" an den Ribbon(Tabs) bemerkt : Man kann fast gar nicht den Dialog "moven" !?

Minimize,Maximize und Normalize sind ok und "moven" muss man ja nicht unbedingt ... aber es nervt.
Hat jemand das selbe beobachtet ?
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12913
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 46 Mal

Re: Ribbonbar

Beitrag von AUGE_OHR »

AUGE_OHR hat geschrieben:1.) Menu und Submenu Punkte
2.) "Werkzeuge"
untergebracht ?

die ersten 3 RibbonTabs, welche leer sind, wären für ein Menu/SubMenu
die andern RibbonTabs wären die "Werkzeuge"
so wo ich nun auch mit Office auf dem "optischen" Stand angekommen bin, habe ich mir die Ribbenbars mal angesehen.

Die RibbenTabs enthalten lediglich "Werkzeuge" die sich alle auf die MDI Clients beziehen.
RibbenTabs sind also nicht mit TabPages zu verwechseln welche "unterhalb" der RibbenBar erst kämen.

Code: Alles auswählen

   //
   // Office 2007 Style
   //
   ::oCBar:EnableOffice2007Frame(.T.)
* ::oRibbonBar:CommandBars:VisualTheme := xtpThemeOffice2007
   ::oRibbonBar:CommandBars:VisualTheme := xtpThemeRibbon
   ::oRibbonBar:EnableFrameTheme()                // Office200
Resultat siehe Bild1
Ribbonbar Office 2007 Style
Ribbonbar Office 2007 Style
Ribbon_O2007.JPG (9.64 KiB) 9820 mal betrachtet

Code: Alles auswählen

   //
   // using iTunes must set to .F. else Titlebutton are XP
   //
   ::oCBar:EnableOffice2007Frame(.F.)
   //
   // NOT if iTunes
   //
*  ::oRibbonBar:EnableFrameTheme()
Resultat siehe Bild2
Ribbonbar ohne visual Style
Ribbonbar ohne visual Style
Ribbon_NoStyle.JPG (8.96 KiB) 9818 mal betrachtet
also das typische XP Design
am Code sieht man auch das ich kein VisualTheme gewählt habe ... würde auch nicht nützen wenn ich die Themes nicht "anschalte" per EnableFrameTheme()

am 2nd Beispiel sieht aber nun, das die Überschriften der RibbonTabs dort sind wo sich "normalerweise" das XbpMenu() befindet ... es fehlt ganz einfach.

Die RibbenTabs sind somit so was die XbpToolbar() nur das die "grösser" sind und man mehr Platz hat.
Aus einer XbpToolbar würde man aber keine Programmteile aufrufen, naja Drucker etc ausgenommen, aber alles das sind ja "Werkzeuge" ?!
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12913
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 46 Mal

Re: Ribbonbar

Beitrag von AUGE_OHR »

moin,

da es auch Bestandteil der Codejock Commandbars ist (Ribbonbar ist eine Teilmenge) hier mal ein neues "Problem" mit dem Preview
Dateianhänge
CJ_PreView.JPG
CJ_PreView.JPG (9.11 KiB) 9796 mal betrachtet
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12913
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 46 Mal

Re: Ribbonbar

Beitrag von AUGE_OHR »

moin,

da es auch Bestandteil der Codejock Commandbars ist (Ribbonbar ist eine Teilmenge) hier mal ein neues "Problem" mit dem Preview
CJ_PreView.JPG
CJ_PreView.JPG (9.11 KiB) 9791 mal betrachtet
es wird automatisch eine weiter Ribbonbar erzeugt.

Das "Problem" ist nun das, wenn man auf "Close Preview" klickt nichts passiert ...

Lösung :
Events
CloseClick Occurs when the close button of the print preview dialog has been clicked.
PrintClick Occurs when the print button of the print preview dialog has been clicked.
es wird ein Event erzeugt, also muss man die Events noch einarbeiten.

p.s. PrintPreview Control hat eine eigene CLSID, ohne :License, zusätzlich zu Commandbars unter HKEY_CLASSES_ROOT\Codejock.PrintPreview.13.0.0\CLSID
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12913
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 46 Mal

Re: Ribbonbar

Beitrag von AUGE_OHR »

hi,

ich habe mich immer bewundert warum ich, mit Ribbonbar versehene Dialoge kaum verschieben konnte ...

nun habe ich mal mit :UseGUIthread und :UserEvents rumspielt und siehe da "das" bringt es :

Code: Alles auswählen

oCommandBar := XbpActiveXControl():new( ::drawingArea ...)
oCommandBar:CLSID   := "Codejock.CommandBars"+HX_VERSION()
oCommandBar:License := "CommandBars Control Copyright ...."
oCommandBar:create()
oCommandBar:UserEvents := .F.
und für Expres++

Code: Alles auswählen

CJAddRibbonBar oRibbonBar NAME 'RibbonBar1' PARENT oCommandBar
oRibbonBar:enableDocking(xtpFlagStretched)
//
// hier einfügen und man kann die Dialoge wieder "bewegen" 
//
oCommandBar:UserEvents := .F.
oCommandBarPopup := oRibbonBar:AddSystemButton()
probiert es mal aus !
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12913
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 46 Mal

Re: Ribbonbar

Beitrag von AUGE_OHR »

hi,

Wenn man ich Word 2007/2010 oder WriteWin7 ansieht hat man ja die Ribbonbars mit RibbonTabs. Innerhalb einer RibbonTab sind dann die einzelnen Items.
ControlsGrouping von RibbonTab Items
ControlsGrouping von RibbonTab Items
ControlsGrouping.JPG (9.73 KiB) 9665 mal betrachtet
nun habe ich eine weile gebraucht um es so hin zu bekommen ... weil ich nicht wusste "wie"
hier nun die Lösung

Code: Alles auswählen

METHOD VORTRAG:TabGFont(oTab,nNo)
LOCAL GalleryFont
LOCAL GroupFont
LOCAL Control
LOCAL Controlfile
LOCAL ComboFont
LOCAL ComboSize
LOCAL aFonts, aSizes, aFontNames
LOCAL ItemsFont
LOCAL ItemsSize
LOCAL ComboPopup
LOCAL GallerySize
   //
   // Font
   //
GroupFont   := oTab:Groups:AddGroup("Schriftart",ID_FONT_FACE)
  //
  // WICHTIG : das "Grouping" einschalten
  //
GroupFont:ControlsGrouping := .T.

ComboFont := GroupFont:Add(xtpControlComboBox, 0, "", -1, False)
ComboFont:DropDownListStyle := True
ComboFont:Width         := 70
ComboFont:Text          := "Arial"
ComboFont:AutoComplete  := True

ComboPopup  := ::oRibbonBar:CommandBars:Add("Combo Popup", xtpBarComboBoxGaGalleryPopup)

GalleryFont := ComboPopup:Controls:Add(xtpControlGallery, ID_FONT_FACE, "")
GalleryFont:Width       := 70
GalleryFont:Height      := 500
GalleryFont:Resizable   := xtpAllowResizeWidth // .Or. xtpAllowResizeHeight

ItemsFont   := ::oRibbonBar:CommandBars:CreateGalleryItems(ID_FONT_FACE)
ItemsFont:ItemWidth     := 0
ItemsFont:ItemHeight    := 26

//
// Initialisieren der Font-Liste
//
aFonts := XbpFont():New(::LockPS()):List()
::UnlockPS()
aFontNames := {}
AEval( aFonts, { |o| IF(AScan(aFontNames,o:FamilyName)==0, ;
                        AAdd(aFontNames,o:FamilyName), NIL) } )
ASort( aFontNames )

AEval( aFontNames, { |c,i| ItemsFont:AddItem(i,c) } )

GalleryFont:Items := ItemsFont
ComboFont:CommandBar := ComboPopup

ComboSize := GroupFont:Add(xtpControlComboBox, 0, "", -1, False)
ComboSize:DropDownListStyle := True
ComboSize:Width         := 40
ComboSize:Text          := "10"

ComboPopup  := ::oRibbonBar:CommandBars:Add("Combo Popup", xtpBarComboBoxGaGalleryPopup)

GallerySize := ComboPopup:Controls:Add(xtpControlGallery, ID_FONT_SIZE, "")
GallerySize:Width       := 40
GallerySize:Height      := 16 * 17
GallerySize:Resizable   := xtpAllowResizeHeight

ItemsSize   := ::oRibbonBar:CommandBars:CreateGalleryItems(ID_FONT_SIZE)
ItemsSize:ItemWidth     := 0
ItemsSize:ItemHeight    := 26

aSizes := { "6", "8", "10", "11", "12", "14", "16", "18", "20", ;
            "22", "24", "32", "36", "48", "52", "72" }
AEval( aSizes    , { |c,i| ItemsSize:AddItem(i,c) } )

GallerySize:Items := ItemsSize

ComboSize:CommandBar := ComboPopup
ComboSize:BeginGroup := True

Control := GroupFont:Add(xtpControlButton, ID_FONT_GROW        , "" )
GroupFont:Add(xtpControlButton, ID_FONT_SHRINK        , "" )
Control:BeginGroup  := True

Control := GroupFont:Add(xtpControlButton, ID_CHAR_BOLD         , "" )
Control:BeginGroup  := True
GroupFont:Add(xtpControlButton, ID_CHAR_ITALIC      , "" )
GroupFont:Add(xtpControlButton, ID_CHAR_UNDERLINE   , "" )
GroupFont:Add(xtpControlButton, ID_CHAR_STRIKETHROUGH, "")
GroupFont:Add(xtpControlButton, ID_TEXT_SUBSCRIPT    , "")
GroupFont:Add(xtpControlButton, ID_TEXT_SUPERSCRIPT  , "")

Control := GroupFont:Add(xtpControlButton, ID_TEXT_COLOR        , "" )
Control:BeginGroup  := True

RETURN self
damit bekommen man nun, bei Control:BeginGroup := True, nicht eine senkrechte Unterteilung des Tab sondern die Items werden "zusammengefasst" bis zu nächsten Control:BeginGroup := True
gruss by OHR
Jimmy
Michael Rudrich
UDF-Programmierer
UDF-Programmierer
Beiträge: 94
Registriert: Do, 22. Dez 2005 16:37

Re: Ribbonbar

Beitrag von Michael Rudrich »

Hey -

kann mir einer nen Tip geben, warum ich keinene xtpConbtolEdit
an eine Ribbonbar anhängen kann?
Es sieht fein aus - aber ich kann nichts eingeben..

Habe das Sample von Roger (RIBBON.PRG) so abgeändert:

Code: Alles auswählen

STATIC FUNCTION _StartRibbon(o)

Local oRibbonBar, oControl, oPopUp, oTab1, oTab2, oControlFile

oRibbonBar := o:AddRibbonBar("Ribbonbar1")
oRibbonBar:enableDocking(xtpFlagStretched)

oControlFile := oRibbonBar:AddSystemButton()
oControlFile:IconId := 0
oControlFile:Caption := "&File"
oControlFile:CommandBar:Controls:Add( xtpControlButton, 10, "&New" )
oControlFile:CommandBar:Controls:Add( xtpControlButton, 11, "&Open..." )
oControlFile:CommandBar:Controls:Add( xtpControlButton, 12, "&Save" )
oControlFile:CommandBar:Controls:Add( xtpControlButton, 13, "Save &As..." )

oControl := oRibbonBar:Controls:Add(xtpControlPopup, -1, "&Popup ONE", 1)

oPopUp := oControl:CommandBar:Controls
oPopUp:Add(xtpControlButton, 1, "&Nieuw")
oPopUp:Add(xtpControlButton, 2, "&Edit")

oControl := oPopUP:Add(xtpControlButton, 3, "&Save")
oControl:BeginGroup := .T.

oTab1 := oRibbonBar:InsertTab(0, "&Write")
oTab2 := oRibbonBar:InsertTab(0, "&Read")
oGroup := oTab1:Groups:AddGroup("Group",50)
oSearchGroup := oGroup:Add(xtpControlEdit, 51, "Search:")
oSearchGroup:EditHint := "Enter here..."
oSearchGroup:Width := 100
oSearchGroup:TextLimit := 10

return nil
Wär dankbar für nen Tip

Grüße
Michl
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9394
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 105 Mal
Danksagung erhalten: 364 Mal
Kontaktdaten:

Re: Ribbonbar

Beitrag von Tom »

Mal das hier probiert?

Code: Alles auswählen

oSearchGroup:Enabled := .T.
Herzlich,
Tom
Michael Rudrich
UDF-Programmierer
UDF-Programmierer
Beiträge: 94
Registriert: Do, 22. Dez 2005 16:37

Re: Ribbonbar

Beitrag von Michael Rudrich »

hi

bringt auch nix..

Wo steht den so'n zeugs in der Doku??

Hast Du das schon mal verwendet?

LG
Michl
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9394
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 105 Mal
Danksagung erhalten: 364 Mal
Kontaktdaten:

Re: Ribbonbar

Beitrag von Tom »

Huhu, Michl.

Es entsteht ein "CommandBarEdit"-Objekt. Einfach in der CJ-Hilfe danach suchen, dann in der Übersicht auf "CommandBarEdit Members" klicken. Dort siehst Du alle Methoden und Properties. Ich erinnere mich allerdings dunkel, dass Roger auch irgendwann schrub, dass er das nicht hinbekommen hat. Ich kann mich aber irren.
Herzlich,
Tom
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2950
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 14 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Ribbonbar

Beitrag von Wolfgang Ciriack »

Hallo Michl,
ich hab bei mir mal auf die Schnelle eins (ID 10000) eingesetzt und ich kann etwas eingeben:

Code: Alles auswählen

   CJAddGroup oRibbonGroup PARENT oTab1 ID 100 CAPTION 'Kommunikation'

      CJAddControl oControl TYPE xtpControlButton PARENT oRibbonGroup ;
         ID MP_ALLG_TERMINE CAPTION '&Termine' ;
         WIDTH nItemBreitePrg STYLE xtpButtonIconAndCaptionBelow ;
         ICON MY_ICON_JWE

      CJAddControl oControl TYPE xtpControlEdit PARENT oRibbonGroup ;
         ID 10000 CAPTION 'Suche:' ;
         WIDTH nItemBreitePrg 

      CJAddControl oControl TYPE xtpControlButton PARENT oRibbonGroup ;
         ID MP_ALLG_KONTAKTE CAPTION '&Kontakte' ;
         WIDTH nItemBreitePrg STYLE xtpButtonIconAndCaptionBelow ;
         ICON MY_ICON_KONTAKTE
Viele Grüße
Wolfgang
Michael Rudrich
UDF-Programmierer
UDF-Programmierer
Beiträge: 94
Registriert: Do, 22. Dez 2005 16:37

Re: Ribbonbar

Beitrag von Michael Rudrich »

Danke Wolfgang

könntest Du mal schauen warum das im Sample RIBBON.PRG nicht geht?
Ich hatte die Funktion umgebaut (siehe Code)

Danke

LG
MIchl
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2950
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 14 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Ribbonbar

Beitrag von Wolfgang Ciriack »

Hi Michl,
sende mir mal eine Mail, dann sende ich dir mal ein Testprogramm, das ich mal für Roger mit eXPress geschrieben habe. Da sind eine ganze Menge CodeJock-Sachen (Ribbonbar, Skinning, Taskpanel, Markup etc.) drin und ich habe eben auch dein Edit eingebaut und wie du den eingegebenen Text wieder abfragst.
Durch Skinning und einige Grafiken und Icons ist das ganze etwas größer (ca. 5MB), dadurch kann ich dir das nur per Mail senden.
Viele Grüße
Wolfgang
psp
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 250
Registriert: Do, 22. Okt 2009 13:42
Kontaktdaten:

Re: Ribbonbar

Beitrag von psp »

ich möchte mich mal in den Thread hier einklinken, auch wenn es leicht Off-Topic ist

wenn ich beispielsweise die Ribbonbar von MS verwenden möchte, bräuchte ich die kostenfreie Lizenz von MS, sehe ich das richtig? doch so ohne weiteres bekomme ich sie wegen .Net bzw dem neuen WFP unter Xbase++ nicht zum Laufen

daher wird hier CodeJock verwendet, benötigt man hier noch etwas dazu? es geht darum, einen Kostenpunkt für dererlei Möglichkeiten zu evaluieren
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9394
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 105 Mal
Danksagung erhalten: 364 Mal
Kontaktdaten:

Re: Ribbonbar

Beitrag von Tom »

Hallo, PSP.

Wenn Du Suite Pro 2011 von Codejock kaufst, benötigst Du nichts weiter. Die von CJ so genannten "Command Bars" gibt es aber auch stand-alone für $ 149:

http://www.codejock.com/products/comman ... atform=com

Wenn die Runtimes ausgeliefert werden und alles mit der Lizensierung stimmt (ist ein bisschen fummelig), sind auf den Zielrechnern alle Voraussetzungen erfüllt. Um die Rechte wird wohl hinter den Kulissen noch gestritten, aber es scheint so zu sein, dass man die Ribbonbar-Lookalikes derzeit ausliefern darf:

http://en.wikipedia.org/wiki/Ribbon_%28computing%29
Herzlich,
Tom
psp
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 250
Registriert: Do, 22. Okt 2009 13:42
Kontaktdaten:

Re: Ribbonbar

Beitrag von psp »

danke

mich würde ja die ganze Suite interessieren

die Demo habe ich auch schon mal runter geladen und installiert, aber nutzbar ist die von Alaska aus leider nicht wirklich, aber das, was möglich wäre, sieht schon mal nicht verkehrt aus - gerade das SkinFramework
Michael Rudrich
UDF-Programmierer
UDF-Programmierer
Beiträge: 94
Registriert: Do, 22. Dez 2005 16:37

Re: Ribbonbar

Beitrag von Michael Rudrich »

Hi

vielleicht intteressiert es Euch - ich habe die Ribbonbar für ein Projekt einsetzen
wollen, und das ganze nach längeren Versuchen in die Tonne getreten..
Entweder liegt es an Codejock - oder an Alaska, aber die Ribbonbar ist
im "Echtbetrieb" nicht einsetzbar - weil einige Showstopper drinnen sind..
Z.B. Hängt sich die Maus auf und ist nur noch in einem Dialog zu bewegen, d.h.
man kommt gar nicht mehr ins Menü.. das legt sich erst dann wieder, wenn man
die Strg Taste drückt..
und noch so ein paar...
Hat mich einige Wochen gekostet den Müll zu implementieren, mit dem Ergebnis
dass ich es dann wegwerfen musste..
Vielleicht erspart das dem einen oder anderen ein wenig Lehrzeit - wers nicht glaubt
macht am Besten seine eigenen Erfahrungen damit..

LG
Michl
psp
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 250
Registriert: Do, 22. Okt 2009 13:42
Kontaktdaten:

Re: Ribbonbar

Beitrag von psp »

ich bin mit der Demo schon ein Stückchen weiter, das Skin Framework arbeitet nun mit dem bekannten Alaska-Problem bei der CheckBox und RadioButton

doch habe ich leichte Probleme, bestimmte "Objekte" weiter zu verwenden, wenn ich die RibbonBar benutzen möchte

xtpControlButton wäre ein Beispiel dazu, wie es auch in http://www.xbaseforum.de/viewtopic.php? ... bon#p51356 verwendet wurde

ich gehe davon aus, dass es nicht nur ein Flag ist wie xtpFlagStretched, was ich noch im Internet habe finden können, welcher Wert dahinter versteckt ist
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9394
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 105 Mal
Danksagung erhalten: 364 Mal
Kontaktdaten:

Re: Ribbonbar

Beitrag von Tom »

Das SkinFramework arbeitet tatsächlich, von den Feinheiten mit den Hintergrundfarben einiger XbParts abgesehen, einwandfrei (weshalb unsere App Skins nur noch bei XP und darunter zulässt), und das tun auch die meisten anderen Komponenten, aber ich bin da an einem ähnlichen Punkt angekommen wie Michael. Ich habe mich eine Weile mit den DockingPanes herumgeschlagen und sie schließlich in die Tonne geklopft, weil die Z-Order der Fenster (hauptsächlich im "abgelösten" Zustand, also als freie Panes) vor allem mit Thin Clients in Terminal-Server-Umgebungen zu Horrorszenarien führte. Ich habe das Popup-Control verwendet und schließlich durch ein eigenes ersetzt, das schlicht aus einem rahmenlosen, halbtransparenten Fenster besteht, das ich über eine eigene Routine "smooth" ein- und wieder ausblende; es nutzt Ownerdrawing für Markup-ähnliche Schriftformatierung (die Klasse werde ich demnächst in die Wissensbasis hochladen). Ähnliches gilt für die Pushbuttons, die ich nunmehr auch ersetze, weil ich mit Ownerdrawing und dem XbpFormattedLabel aus dem Pack 2 etwas gebaut habe, das dem letztlich entspricht, außerdem enthält Rogers eXpress++ mit den "DCPushbuttonsXP" eine Klasse, die für eXpress++-Nutzer ganz nativ Office-ähnliche Buttons erlaubt, ohne großen Aufwand. Und auch mit den CommandBars habe ich eine Weile herumoperiert, ohne eigentlich eine wirkliche Verwendung dafür zu haben, denn Ribbons haben nur dann Sinn, wenn es verschiedene Bearbeitungsmodi für ein Fenster gibt, zu denen Funktionen zu gruppieren wären, und das ist in klassischen Datenbankanwendungen nur selten der Fall - derlei benötigt man bei der Bearbeitung von Dokumenten im weitesten Sinn, oder bei MDI-Anwendungen, die alle Fenster in einem AppWindow sammeln (was wir nicht tun). Sie sehen hübsch aus, was für alle CJ-Controls gilt, und sie sind vergleichsweise leicht zu migrieren, aber irgendwo hakt's dann wieder, was sehr ärgerlich ist.

Was ich sagen will: Nach der anfänglichen Euphorie bin ich kurz davor, CJ komplett abzuhaken. Unterm Strich bleiben aus der wirklich umfangreichen Sammlung nur wenige Controls übrig, die man wirklich benötigt, und die komplexeren - DockingPanes, CommandBars, das CalendarControl - zeigen sich im Echtbetrieb hakelig, was natürlich auch an der AX-Schnittstelle von Xbase++ liegen kann. Aber man kann das meiste davon mit Ownerdrawing selbst bauen, was im Ergebnis erstens sehr viel schneller ist, sich problemlos in die Multithreading- und Eventhandling-Struktur der Anwendung einfügt, und auch deutlich leichter zu warten ist.
Herzlich,
Tom
Michael Rudrich
UDF-Programmierer
UDF-Programmierer
Beiträge: 94
Registriert: Do, 22. Dez 2005 16:37

Re: Ribbonbar

Beitrag von Michael Rudrich »

Das kann ich nur unterschreiben...

Auch die Docking Panes ließen sich bei mir nicht so "docken" wie gewünscht - und
vor allem waren die Dinger nie 100% Thread-Safe, d.h. mann konnte sie einfach
zwischen Threads hin und her schieben..

Ich hab das Zeugs weggeworfen..

LG
M
psp
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 250
Registriert: Do, 22. Okt 2009 13:42
Kontaktdaten:

Re: Ribbonbar

Beitrag von psp »

also sollte ich das ganze gleich in die Tonne klopfen bevor ich mich noch ärgere?

ein frischeres Design in der Software wäre natürlich immer nett und das Alaska-seitige VisualTheme reißt es nicht ganz raus

es gibt ja noch andere CommandoBars, die man ja nutzen könnte, die gehen dann wohl auch nicht so wie gewünscht?
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14662
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: Ribbonbar

Beitrag von Jan »

Die Visual Themes von Alaska gibt es in dem Sinn nicht. Xbase++ nutzt die Vorgaben, die Windows vorgibt. Ribbonbars sind (noch) nicht Bestandteil des Betriebssystems, daher kann Xbase++ die so auch nicht einfach nutzen.

Wenn ich das richtig erinnere dann haben die original MS-Ribbonbars einen gravierenden Nachteil: Die Lizenz schreibt wohl vor, das immer die aktuelle Version genutzt werden darf. Bringe ich also von meiner Software ein Update raus, dann MUSS das immer die dann gültige MS-Ribbonbar-Version nutzen. Was für mich dann erneute Lizenzkosten an CJ bedeutet für die andere Version, und eventuell erneuten Programmieraufwand um die neu zu implementieren (falls da Änderungen anfallen sollten).

Von daher ist es sicher wesentlich besser, wie Tom das schreibt die selber zu schreiben. Dann amcht man das, was man selber braucht, und hat keinen Ärger mit irgendwelchen Lizenzgebern oder Patentinhabern.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9394
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 105 Mal
Danksagung erhalten: 364 Mal
Kontaktdaten:

Re: Ribbonbar

Beitrag von Tom »

Was für mich dann erneute Lizenzkosten an CJ bedeutet für die andere Version
Das ist Unsinn. Die CJ-Commandbars sind keine MS-Ribbonbars. CJ malt selbst.

Und obwohl ich inzwischen ziemlich fit mit Ownerdrawing bin, würde ich es mir nicht zutrauen, in angemessener Zeit ein Ribbonbar-Replacement selbst zu schreiben. Das ist schon ein ziemlich komplexes Control. Wenn man es also wirklich benötigt, sollte man sich tatsächlich die CJ-Komponente reinziehen, dafür sorgen, dass es sich um die aktuellste Fassung handelt (aber nicht wegen der Lizenzsachen, sondern um für weitgehende Fehlerfreiheit zu sorgen), und Alaska mit Anfragen bombardieren, die die Stabilität, Performance und Schnittstellenverlässlichkeit betreffen. Ich habe die CJ-Commandbars zuletzt in Version 13.4 ausprobiert; vielleicht funktionieren sie ja inzwischen besser.
Herzlich,
Tom
Antworten