Button Stylen

Forum für alles rund um die MSEide und MSEgui
mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Button Stylen

Beitrag von mse »

fliegermichl hat geschrieben:Da muss man dann wohl den Umweg über eine spezielle Klasse mit entsprechendem Propertyeditor gehen.

Als published property geht das glaube ich nicht, da für Records keine RTTI zur Verfügung steht. Mit einem Komponenten-Editor und streaming der Daten in defineproperties() sollte es möglich sein. Wofür brauchst du die Komponente? Vielleicht gibt es eine andere Möglichkeit.

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1430
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Button Stylen

Beitrag von fliegermichl »

mse hat geschrieben:
fliegermichl hat geschrieben:Da muss man dann wohl den Umweg über eine spezielle Klasse mit entsprechendem Propertyeditor gehen.

Als published property geht das glaube ich nicht, da für Records keine RTTI zur Verfügung steht. Mit einem Komponenten-Editor und streaming der Daten in defineproperties() sollte es möglich sein. Wofür brauchst du die Komponente? Vielleicht gibt es eine andere Möglichkeit.


Na wenn ich eine TRichStringDisp Komponente auf dem Formular platziere, will ich auch einen formatierten String anzeigen können.

Kannst Du nicht mal eine kleine Übersicht machen, welche Komponenten die Palette enthält, was man damit anstellen kann und falls es nicht offensichtlich ist, wie man es verwendet.
z.B. das man einen TTextEdit in einem TWidgetGrid platzieren muss und der Inhalt in einer DataCols Liste steht, da kommt doch kein Mensch von alleine drauf.

Viele Grüße
Michael

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Button Stylen

Beitrag von mse »

fliegermichl hat geschrieben:Na wenn ich eine TRichStringDisp Komponente auf dem Formular platziere, will ich auch einen formatierten String anzeigen können.

Als button-Ersatz brauchst du trichstringdisp nicht mehr, da Leerzeichen als Hotkey nun übersprungen werden.
Ich werde einen entsprechenden Propertyeditor machen mit welchem man den Zeichenstil auch zur Entwurfszeit einstellen kann.
Kannst Du nicht mal eine kleine Übersicht machen, welche Komponenten die Palette enthält, was man damit anstellen kann und falls es nicht offensichtlich ist, wie man es verwendet.

viewtopic.php?f=53&t=2171
http://wiki.freepascal.org/MSEide_&_MSEgui
http://wiki.freepascal.org/Reference:_MSEgui
unter "see also" gibt es entsprechende Artikel von Michal Ebner.

Du bist herzlich dazu eingeladen deine Erkenntnisse zu ergänzen. ;-)

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Button Stylen

Beitrag von mse »

mse hat geschrieben:Ich werde einen entsprechenden Propertyeditor machen mit welchem man den Zeichenstil auch zur Entwurfszeit einstellen kann.

git master 9e83ab6d7b9aa805148da0b30efbd5e9772dc86a hat ihn. Bitte klicke im Objektinspektor auf den Ellipsen Button in der "value"-Property, markiere den gewünschten Text, klicke auf 'Font Format'.

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1430
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Button Stylen

Beitrag von fliegermichl »

mse hat geschrieben:
mse hat geschrieben:Ich werde einen entsprechenden Propertyeditor machen mit welchem man den Zeichenstil auch zur Entwurfszeit einstellen kann.

git master 9e83ab6d7b9aa805148da0b30efbd5e9772dc86a hat ihn. Bitte klicke im Objektinspektor auf den Ellipsen Button in der "value"-Property, markiere den gewünschten Text, klicke auf 'Font Format'.


Das ist ja irre schnell gegangen. Bist du etwa Rentner und sitzt den ganzen Tag am Computer und wartest, daß einer nach Änderungen ruft? :-)
Die Links oben sind schon mal sehr hilfreich.

Spricht was dagegen, die Captions bei den Buttons auch als richstringty zu deklarieren (Resourcen oder so etwaas). Dann könnte man dann auch z.B. sowas machen.

richdisp.PNG
richdisp.PNG (1.38 KiB) 2767 mal betrachtet


Weil der trichstringdisp hat ja keine Action oder ShortCut property.

Viele Grüße
Michael

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Button Stylen

Beitrag von mse »

fliegermichl hat geschrieben:Das ist ja irre schnell gegangen. Bist du etwa Rentner und sitzt den ganzen Tag am Computer und wartest, daß einer nach Änderungen ruft? :-)

Nein, aber MSEide+MSEgui ist eine sehr produktive Entwicklungsumgebung.
Spricht was dagegen, die Captions bei den Buttons auch als richstringty zu deklarieren (Resourcen oder so etwaas).

Beim trichbutton könnte man das schon machen. Es ist auch möglich beliebige Widgets in einem tbutton zu platzieren.
Die shortcuts werden automatisch angezeigt, wenn tbutton.options bo_shortcutcaption gesetzt ist.

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Button Stylen

Beitrag von mse »

mse hat geschrieben:Beim trichbutton könnte man das schon machen.

git master f40b652a126cb46c59c5cb8489622d535ead27b6 hat trichbutton.captionrich. Ist dort etwas eingetragen, wird dieser Text angezeigt; "caption" wird nur noch zur Bestimmung des Hotkeys benutzt.
Ich musste noch zwei, drei andere Sachen erledigen, darum hat es etwas länger gedauert. ;-)

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1430
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Button Stylen

Beitrag von fliegermichl »

mse hat geschrieben:
mse hat geschrieben:Beim trichbutton könnte man das schon machen.

git master f40b652a126cb46c59c5cb8489622d535ead27b6 hat trichbutton.captionrich. Ist dort etwas eingetragen, wird dieser Text angezeigt; "caption" wird nur noch zur Bestimmung des Hotkeys benutzt.
Ich musste noch zwei, drei andere Sachen erledigen, darum hat es etwas länger gedauert. ;-)


Der Wahnsinn. Ein kleiner Bug ist scheinbar aber noch drin.
Wenn ich captionrich setze, funktioniert zunächst alles. Weise ich danach den ShortCut zu, wird captionrich gelöscht, obwohl es im Objektinspektor zunächst noch angezeigt wird. (caption hatte ich leer gelassen)

Eine (vorerst letzte) Frage hätte ich noch.

Ich habe irgendwo gelesen, daß man einstellen kann, zu welchem control man mit den Cursortasten vom fokussierten control aus navigieren kann. Ich kann das aber nicht mehr finden.

Viele Grüße
Michael

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1430
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Button Stylen

Beitrag von fliegermichl »

und noch eine Kleinigkeit.

Wenn der Shortcut nicht über die caption sondern über die property shortcut zugewiesen wird, funktioniert die option bo_focusonshortcut nicht.

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Button Stylen

Beitrag von mse »

fliegermichl hat geschrieben:Der Wahnsinn. Ein kleiner Bug ist scheinbar aber noch drin.
Wenn ich captionrich setze, funktioniert zunächst alles. Weise ich danach den ShortCut zu, wird captionrich gelöscht, obwohl es im Objektinspektor zunächst noch angezeigt wird. (caption hatte ich leer gelassen)

Bitte probiere noch mal mit git master 51b21d1273b7f3992568a55c2a43ee70f1d98d58
Ich habe irgendwo gelesen, daß man einstellen kann, zu welchem control man mit den Cursortasten vom fokussierten control aus navigieren kann. Ich kann das aber nicht mehr finden.

Im "onnavigrequest" Ereignis des übergeordneten widgets. Für die Komponenten eines Formulares ist dies "t*form.container.onnavigrequest". Bitte setze "ainfo.nearest" mit dem Zielwidget.
Für die Fokusnavigation sind auch die "twidget.optionswidget" Einstellungen wichtig.
"ow_arrowfocus" bestimmt, ob ein widget Ziel einer Navigation werden kann, "ow_arrowfocusin" ob von aussen die einzelnen widgets oder der Container als ganzes fokussiert wird, "ow_arrowfocusout" ob ein Container verlassen werden kann.
Wenn der Shortcut nicht über die caption sondern über die property shortcut zugewiesen wird, funktioniert die option bo_focusonshortcut nicht.

MSEgui unterscheidet zwischen Hotkeys (die captions mit & Präfix -> unterstrichene Zeichen) und Shortcuts. Die Fokusfunktion wirkt nur für Hotkeys und wird hauptsächlich für "<widget>.frame.caption" und gesetztem "cfo_captionfocus" verwendet. Leider ist die Bezeichnung bo_focusonshortcut diesbezüglich irreführend.
Bitte setze den Fokus im Shortcutfall in der Ereignisbehandlungsroutine.

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1430
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Button Stylen

Beitrag von fliegermichl »

mse hat geschrieben:
fliegermichl hat geschrieben:Der Wahnsinn. Ein kleiner Bug ist scheinbar aber noch drin.
Wenn ich captionrich setze, funktioniert zunächst alles. Weise ich danach den ShortCut zu, wird captionrich gelöscht, obwohl es im Objektinspektor zunächst noch angezeigt wird. (caption hatte ich leer gelassen)

Bitte probiere noch mal mit git master 51b21d1273b7f3992568a55c2a43ee70f1d98d58


Danke, klappt jetzt!

mse hat geschrieben:
Ich habe irgendwo gelesen, daß man einstellen kann, zu welchem control man mit den Cursortasten vom fokussierten control aus navigieren kann. Ich kann das aber nicht mehr finden.

Im "onnavigrequest" Ereignis des übergeordneten widgets. Für die Komponenten eines Formulares ist dies "t*form.container.onnavigrequest". Bitte setze "ainfo.nearest" mit dem Zielwidget.
Für die Fokusnavigation sind auch die "twidget.optionswidget" Einstellungen wichtig.
"ow_arrowfocus" bestimmt, ob ein widget Ziel einer Navigation werden kann, "ow_arrowfocusin" ob von aussen die einzelnen widgets oder der Container als ganzes fokussiert wird, "ow_arrowfocusout" ob ein Container verlassen werden kann.


Auch hier Danke

mse hat geschrieben:
Wenn der Shortcut nicht über die caption sondern über die property shortcut zugewiesen wird, funktioniert die option bo_focusonshortcut nicht.

MSEgui unterscheidet zwischen Hotkeys (die captions mit & Präfix -> unterstrichene Zeichen) und Shortcuts. Die Fokusfunktion wirkt nur für Hotkeys und wird hauptsächlich für "<widget>.frame.caption" und gesetztem "cfo_captionfocus" verwendet. Leider ist die Bezeichnung bo_focusonshortcut diesbezüglich irreführend.
Bitte setze den Fokus im Shortcutfall in der Ereignisbehandlungsroutine.


Wenn ich im formular eine ereignisbehandlungsroutine für onshortcut definiere, bekomme ich als sender das formular und als origin das aktuell fokusierte widget. Wie bekomme ich das Ziel des Shortcuts heraus?
Oder bin ich an der falschen Stelle?

Viele Grüße
Michael

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Button Stylen

Beitrag von mse »

fliegermichl hat geschrieben:
Bitte setze den Fokus im Shortcutfall in der Ereignisbehandlungsroutine.


Wenn ich im formular eine ereignisbehandlungsroutine für onshortcut definiere, bekomme ich als sender das formular und als origin das aktuell fokusierte widget. Wie bekomme ich das Ziel des Shortcuts heraus?
Oder bin ich an der falschen Stelle?

Hier hat man die Möglichkeit auf Tastendrücke zu reagieren bevor die normale Tastenverarbeitung in der widget-Hierarchie startet. Es entspricht in etwa "keypreview" von Lazarus.
Ich meinte z.B. "trichbutton.onexecute" des buttons mit dem entsprechenden shortcut.

Code: Alles auswählen

 
procedure tmainfo.richbutton1exeev(const sender: TObject);
begin
 twidget(sender).setfocus();
 //or
 //(sender as twidget).setfocus();
end;
 

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1430
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Button Stylen

Beitrag von fliegermichl »

so geht's natürlich auch. ich bin halt ein fauler Mensch und hatte gedacht, daß ich das irgendwo zentral machen kann.

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Button Stylen

Beitrag von mse »

fliegermichl hat geschrieben:so geht's natürlich auch. ich bin halt ein fauler Mensch und hatte gedacht, daß ich das irgendwo zentral machen kann.

git master 430632dd8ef124dcfa0e4a35f80cf96792faed15 hat zusätzlich tbutton.options bo_focusonactionshortcut, damit wird für die Keysequenzen in tbutton.shortcut und tbutton.shortcut1 fokussiert.
Mich würde der Zweck interessieren. Warum willst du, dass z.B. nach Ausführen einer Programmfunktion mit F2 der Button den
Fokus erhält, der die F2 Aktion ausgelöst hat? Normalerweise benutzt man als Anwender Shortcuts doch gerade dann, wenn man den Kontext nicht verlassen möchte?

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1430
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Button Stylen

Beitrag von fliegermichl »

Danke, das funktioniert super

mse hat geschrieben:
fliegermichl hat geschrieben:so geht's natürlich auch. ich bin halt ein fauler Mensch und hatte gedacht, daß ich das irgendwo zentral machen kann.

git master 430632dd8ef124dcfa0e4a35f80cf96792faed15 hat zusätzlich tbutton.options bo_focusonactionshortcut, damit wird für die Keysequenzen in tbutton.shortcut und tbutton.shortcut1 fokussiert.
Mich würde der Zweck interessieren. Warum willst du, dass z.B. nach Ausführen einer Programmfunktion mit F2 der Button den
Fokus erhält, der die F2 Aktion ausgelöst hat? Normalerweise benutzt man als Anwender Shortcuts doch gerade dann, wenn man den Kontext nicht verlassen möchte?


Ich arbeite an einer Kalkulationssoftware für Handwerker. Bei der Arbeit mit dem CAD Programm habe ich festgestellt, daß eine Oberfläche mit vielen Optionen die Anwender massiv verwirrt. So soll es max. 5 bis 6 Auswahlmöglichkeiten geben und es soll nach Möglichkeit völlig ohne Mauseinsatz zu bedienen sein.

(Ich hab mal auf einer Schulung Handwerkern versucht, die Funktionsweise der Maus zu erklären - erfolglos)

Dann soll sich optisch alles in einem Fenster abspielen. D.h. wählt der Anwender einen Menüpunkt aus und es ist ein Untermenü nötig, dann soll der zurückgelegte Weg optisch angezeigt werden. Mittels Esc gelangt man schrittweise zurück in das Hauptmenü und der zuletzt angewählte Menüpunkt soll der fokussierte sein.

Hier mal ein Beispiel:

hauptmenue.PNG
hauptmenue.PNG (8.34 KiB) 2645 mal betrachtet


wählt der Anwender "Schriftverkehr", (egal ob durch Shortcut "S", Auswahl per Cursortaste oder anklicken mit der Maus, soll es etwa so aussehen. (Es wäre auch gut, wenn der Button aktiv bleibt)

schriftverkehr.PNG


oder Buchhaltung etwa so.

buchhaltungmenue.PNG


Jedes Unterformular legt sich modal über das jeweils darüberliegende. Ist ein Endpunkt erreicht, überlagert ein Fullscreen Fenster den ganzen Menüweg. Idealerweise kann man die Caption in der Mitte fett anzeigen.

Immer nach dem Motto "einfach ist viel zu kompliziert"

Viele Grüße
Michael

Antworten