Ribbon mit Codejock Demoprojekt!

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
Paulis23
Rookie
Rookie
Beiträge: 2
Registriert: Di, 28. Feb 2017 17:11

Ribbon mit Codejock Demoprojekt!

Beitrag von Paulis23 »

Hallo Zusammen, ich verwende die MFC\Xtreme ToolkitPro v17.3.0 und wollte ein Projekt, der bereit steht einige Änderungen hinzugefügt um zu sehen wie mein Programm mit Ribbon ausschaut!
Ich habe in der Gruppe einige Controls eingefügt, Comboboxen...
wenn ich das Combobox anklicke sind die Einträge gegrayet und alle Controls in der Tabsgruppen auch! Weiß jemand weshalb das so ist?
Wie kann man zu dem Controls sein einige Icons einfügen?
Danke für Ihre Hilfe!
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Ribbon mit Codejock Demoprojekt!

Beitrag von AUGE_OHR »

hi,
Paulis23 hat geschrieben:wenn ich das Combobox anklicke sind die Einträge gegrayet und alle Controls in der Tabsgruppen auch! Weiß jemand weshalb das so ist?
Wie kann man zu dem Controls sein einige Icons einfügen?
mit den Codejock Ribbonbar hast du dir was vorgenommen ...
warum die Controls "grau" sind kann ich ad-hoc auch nicht sagen ... zeig mal deinen Code

Icons werden unter Windows mit eine Imagelist "verwaltet"
unter Codejock wird es der Property "Icons" zugeordnet

Code: Alles auswählen

   ::oImageList := XBPACTIVEXCONTROL() :new( ::drawingArea,, { 0, 0 }, { 0, 0 } )
   ::oImageList:CLSID := "Codejock.ImageManager" + HX_VERSION()
   ::oImageList:create()
   ...
 
   ::oImageList:Icons:LoadIcon( ::PathIco + "\" + aIcon[ 1], ID_FILE_NEW   , xtpImageNormal )
   ... 

   ::oRibbonBar:CommandBars:Icons := ::oImageList:Icons
gruss by OHR
Jimmy
Paulis23
Rookie
Rookie
Beiträge: 2
Registriert: Di, 28. Feb 2017 17:11

Re: Ribbon mit Codejock Demoprojekt!

Beitrag von Paulis23 »

Hallo, vielen Dank für ihre Antwort.
ich habe im code noch nichts geändert, ich bin aus ein bestehendes Projekt ausgegangen und wollte darauf was bauen, ich habe im Resource View ...Ribbon einige Objekte eingefügt mit Copy und Paste...
die Elemente wie Sie das sehen sind immer gegrayet!
Anbei ein screenshot.
Vielen Dank
Dateianhänge
Ribbon im Sourceview
Ribbon im Sourceview
Ribbon_Entwurf_Source_View.png (36.07 KiB) 12076 mal betrachtet
Ausführ Projekt
Ausführ Projekt
Ribbon_Entwurf.png (60.91 KiB) 12076 mal betrachtet
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Ribbon mit Codejock Demoprojekt!

Beitrag von AUGE_OHR »

Paulis23 hat geschrieben:ich verwende die MFC\Xtreme ToolkitPro v17.3.0 ...
uuuuuuups ... habe "MFC" übersehen. :shock:
ich habe es nur als ActiveX unter Xbase++ ausprobiert.

ich würde mich in dem Fall wohl direkt an das Codejock Forum wenden denn mit "MFC" arbeiten in diesem Xbase++ Forum wohl nur wenige.
gruss by OHR
Jimmy
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Ribbon mit Codejock Demoprojekt!

Beitrag von satmax »

Meine Meinung, wenn MFC und moderne Oberfläche dann: https://www.bcgsoft.com/
Wir haben damit erfolgreich einige MFC Projekte umgesetzt. Aktuell geht es bei uns aber in Richtung Windev.
Gruß
Markus
Benutzeravatar
mikehoffmann
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 133
Registriert: Mo, 21. Sep 2015 16:22
Hat sich bedankt: 1 Mal
Danksagung erhalten: 18 Mal

Re: Ribbon mit Codejock Demoprojekt!

Beitrag von mikehoffmann »

Ribbons gehen auch ohne Codejock oder anderes Active-X-Zeuch. Ab Win7 sind die Teil des Windows APIs. Weil schlechtes Wetter ist, habe ich das Wochenende am Boden verbracht und den Ribbons geopfert. Die haben mich schon lange gezwickt. Ich habe mir daher die Ressourcen aus einem Windows 7 Beispielprogramm geklaut und in eine Xbase-Anwendung (basierend auf dem Cockpit GUI) eingebaut. Zwei aktive COM-Objekte musste ich noch zusammenbasteln (UIApplication und UICommandHandler), aber nun flutscht es wie eine Eins. Beweisfoto anbei. Da kann man im Debug-Fenster noch sehen, wie die CommandHandler für die wählbaren Kommandos abgefragt werden (IUIApplication:OnCreateUICommand) und wie die Auswahlen an ebendiese CommandHandler (IUICommandHandler:Execute) geschickt werden. Schlappe 100 Zeilen Code netto. Geht doch. Und morgen ist hoffentlich wieder schönes Wetter...

Michael
Dateianhänge
Ribbon.prg
Sourcecode
(7.13 KiB) 280-mal heruntergeladen
Screenshot
Screenshot
Ribbons.png (71.52 KiB) 11948 mal betrachtet
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: Ribbon mit Codejock Demoprojekt!

Beitrag von Tom »

Her damit. :wink:
Herzlich,
Tom
Benutzeravatar
mikehoffmann
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 133
Registriert: Mo, 21. Sep 2015 16:22
Hat sich bedankt: 1 Mal
Danksagung erhalten: 18 Mal

Re: Ribbon mit Codejock Demoprojekt!

Beitrag von mikehoffmann »

Hallo Tom,
das funktioniert auch in Xbase Dialogen, ich hab's ausprobiert. Ein paar Ecken muss man wohl noch ausbügeln (Context-Menüs gehen erwarteterweise nicht, Paint der Titelzeile manchmal nicht ganz perfekt beim Resize, ...) aber nix, wo man gleich um das Handtuch bitten würde. Selbst das Hochschnappen von einzelnen Kommandos in die Quick-Access-Bar funktioniert. Die größte Herausforderung wird eine Reaktion auf eine Größenveränderung des Ribbons sein.
Foto und Code anbei. Wenn Du die Ribbons wirklich nutzen möchtest, könnten wir ja mal ein Projektchen wagen.
Viele Grüße
Michael
Dateianhänge
Ribbons.png
Ribbons.png (44.07 KiB) 11881 mal betrachtet
Ribbon.prg
(9.61 KiB) 264-mal heruntergeladen
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: Ribbon mit Codejock Demoprojekt!

Beitrag von Tom »

Hallo, Michael.

Ich schaue mir das nachher mal in Ruhe an, danke! Ich arbeite allerdings mit eXpress++, was zwar auch plain Xbase++ ist, aber ein umfangreiches Dialog- und Eventmanagement mit sich bringt (und mit dem GetList-Prinzip arbeitet). Ich werde mal ausprobieren, wie sich das verhält - und welche Instanzen man nutzen könnte, um hier eine Brücke zu schlagen. Vielleicht wäre Roger ja auch interessiert, das als Ersatz für sein XCodejock-Projekt in Erwägung zu ziehen.
Ja, ich habe zwei, drei Großbaustellen, die sich für Ribbons eignen würden, und der Codejock-Umweg ist unerträglich.
Herzlich,
Tom
Benutzeravatar
mikehoffmann
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 133
Registriert: Mo, 21. Sep 2015 16:22
Hat sich bedankt: 1 Mal
Danksagung erhalten: 18 Mal

Re: Ribbon mit Codejock Demoprojekt!

Beitrag von mikehoffmann »

Hallo Tom,
das Event-Management der Ribbons passiert zu 100% im GUI-Thread. Deswegen aktiviere ich die Ribbons auch im GUI-Thread. Das Event-Handling im Xbase-Thread ist daher hochegal. Die Auswahl-Nachrichten vom Ribbon würde man in die Xbase-Event-Queue schicken.
Viele Grüße
Michael
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Ribbon mit Codejock Demoprojekt!

Beitrag von Jan »

Hallo,

ich würde mich da ebenfalls gerne anschließen. Bislang habe ich Ribbons vermieden, weil es da einfach zu viele Hemmnisse gibt. Aber wenn das "einfach so" ohne große Zusatzbibliotheken oder Verrenkungen möglich ist, dann würde ich das doch schon mal einbauen wollen.

Michael, mein Dank würde Dir ewig nachschleichen (um das mal in den Worten meines Weibes auszudrücken :-D ).

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Ribbon mit Codejock Demoprojekt!

Beitrag von Martin Altmann »

Nun,
Du kannst Dich ja bei Michael revanchieren, indem Du ihm in Willingen ein extra saftiges Steak auf den Grill packst - dazu müsste er sich nur noch zum Forentreffen anmelden...

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: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Ribbon mit Codejock Demoprojekt!

Beitrag von Jan »

Martin,

klar, da wär ich sofort zu so mancher Schandtat bereit. Solange das legal bleibt ...

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Ribbon mit Codejock Demoprojekt!

Beitrag von Martin Altmann »

Keine Sorge - was in Willingen passiert, bleibt in Willingen!
: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
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Ribbon mit Codejock Demoprojekt!

Beitrag von Koverhage »

Auch ich hätte Interesse daran.
Gruß
Klaus
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: Ribbon mit Codejock Demoprojekt!

Beitrag von Rudolf »

Hallo,
hätte auch Interesse, vor allem wenns in eXpress++ eingebunden werden könnte
Grüße
Rudolf
Benutzeravatar
Hans Zethofer
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 278
Registriert: Fr, 27. Jan 2006 8:29
Wohnort: 2700 Wiener Neustadt
Hat sich bedankt: 1 Mal
Kontaktdaten:

Re: Ribbon mit Codejock Demoprojekt!

Beitrag von Hans Zethofer »

wäre auch dabei wenn express++ mitmischt =D>
_____________
lg
Hans
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Ribbon mit Codejock Demoprojekt!

Beitrag von Jan »

... wenn das auf eXpress++ abgestimmt wäre wäre ich raus. Weil ich damit nicht arbeite.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: Ribbon mit Codejock Demoprojekt!

Beitrag von Rudolf »

Hallo,
wenn es mit eXpress++ geht, dann sicher auch ohne, die Basis ist ja trotzdem Xbase++.
Grüße
Rudolf
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Ribbon mit Codejock Demoprojekt!

Beitrag von AUGE_OHR »

Jan hat geschrieben:Aber wenn das "einfach so" ohne große Zusatzbibliotheken oder Verrenkungen möglich ist, dann würde ich das doch schon mal einbauen wollen.
zunächst mal benötigt man wohl die Cockpit LIB ...
gruss by OHR
Jimmy
Benutzeravatar
mikehoffmann
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 133
Registriert: Mo, 21. Sep 2015 16:22
Hat sich bedankt: 1 Mal
Danksagung erhalten: 18 Mal

Re: Ribbon mit Codejock Demoprojekt!

Beitrag von mikehoffmann »

AUGE_OHR hat geschrieben:zunächst mal benötigt man wohl die Cockpit LIB ...
Ich kann Dir versichern, dass das das kleinste Problem wird, da die Cockpit Libraries im Gegensatz zu anderen Aktiven Nixen keine ungebetenen Gäste mitbringen.

Nun aber zurück zu den Ribbons. Ich habe in den letzten Tagen fleißig XAML Code zum Testen erzeugt, die erforderlichen COM Interfaces und Objekte einigermaßen komplett implementiert und zum Laufen gebracht und mich in die Ribbons eingelesen. Das XAML-Zeug ist fürchterlich, weil ich keinen passenden Editor gefunden habe, aber man kann damit in Nullkommanichts eine Hammer-UI zaubern. Der erforderliche xaml-compiler ist Teil des Windows SDK und die entstehende bml-Datei kann man locker als Ressource mit dem Typ "UIFILE" einbinden. Zack, und schon hat die Applikation ein Ribbon-UI, das man auch für Context-Menüs verwenden kann. Wie easy das geht, hab Ihr ja in der kleinen Testanwendung gesehen. Inzwischen habe ich die Interfaces in die GUI-Library verschoben, wo sie hingehören, und nur noch die COM-Objekte, mit denen das Ribbon-Framework quasselt, sind Teil der Anwendung.

Das Ribbon API ist viel größer als es auf den ersten Blick aussieht. Da gibt es jede Menge Controls aus verschiedenen Familien, verschiedene Galleries, Contextual Tabs, Context Menus, Application States und Layout Size Templates, .... es hört einfach nicht auf. Wenn Ihr Euch was traut, dann geht mal auf diese Website

https://msdn.microsoft.com/en-us/librar ... s.85).aspx

und klickt euch da durch alle Unterseiten unter "Ribbon Framework Developer Guides". Bildchen angucken dürfte reichen, um den Schatz zu erkennen, der da zu heben wäre. Die Bergungsaktion wird voraussichtlich länger als 24 Stunden dauern und daher mehr Ressourcen verschlingen, als ein gegrilltes Steak.

Anbei ein Zip-File, mit dem Ihr Eure Xbase-Anwendungen mit einem Ribbon dotieren könnt. Ihr braucht dazu noch den Resource Compiler rc.exe und den Xaml-Compiler uicc.exe aus dem Windows SDK. Die Batch-Datei lrib.bat zeigt, wie die exe gebaut werden muss. rib.prg ist das eigentliche Programm. ribbon.lib enthält den Code, den Ihr schon kennt. ribbonmarkup.xml ist der xaml-Kram für den Aufbau des Ribbons die könnt Ihr natürlich nach Belieben modifizieren.

In Eurer Applikation müßt Ihr die Funktion RibbonizeXbDialog ausführen und wenn Ihr die Events sehen wollt, dann kopiert Euch die RibbonCallbacks-Klasse rüber und gebt sie wie in rib.prg als dritten Parameter von RibbonizeXbpDialog an.

Viel Spaß beim xameln. Ich geh‘ jetzt die Ina Müller in Bamberg besuchen.
Dateianhänge
ribbon.zip
(2.61 MiB) 223-mal heruntergeladen
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: Ribbon mit Codejock Demoprojekt!

Beitrag von Rudolf »

Hallo Michael,
also mir wäre eine funktionierende Lib für Ribbonbars schon was Wert, die Software schaut dann einfach viel professioneller aus. Vor allem wenn jemand wirlich Ahnung vom Hintergrund hat.
Grüße
Rudolf
Benutzeravatar
mikehoffmann
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 133
Registriert: Mo, 21. Sep 2015 16:22
Hat sich bedankt: 1 Mal
Danksagung erhalten: 18 Mal

Re: Ribbon mit Codejock Demoprojekt!

Beitrag von mikehoffmann »

Die Ina war prima. Fast 3 Stunden Vollgas ohne Pause. Hochempfehlenswert.

Hier nochmal der korrekte Link, nachdem da wieder ungerufene Mächte zugeschlagen haben:

https://msdn.microsoft.com/en-us/librar ... s.85).aspx

Ich brauche nun Feedback von Euch und würde gerne wissen, wer sein Progrämmsche mit einem Ribbon ausgestattet hat, wo es gehakelt hat und welche schrecklichen Effekte es gab.
Kleiner Hinweis noch: Die Callbacks kommen im Xbase GUI Thread an. Wenn Ihr die in Eurem Event Thread haben wollt, müßt Ihr Sie mit PostAppEvent weiterschicken.
Mein Programm und die Dlls sind 1.90.355.

Wer mal rausfinden möchte, welche Gäste sich in seiner Anwendung rumtreiben, der kann die Funktion Breakpoint() aufrufen. Unter dem Reiter "Module" seht Ihr dann alle Dlls, die an eurem Prozesstisch Platz genommen haben und mitfuttern.
Antworten