Schriftfarbe einer disabled Checkbox bestimmen(?)

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
notloesung
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 194
Registriert: Fr, 24. Feb 2006 8:09
Kontaktdaten:

Schriftfarbe einer disabled Checkbox bestimmen(?)

Beitrag von notloesung »

Hallo,

und wieder eine neue Frage.

In meiner Anwendung werden manche SLEs disabled (Abhängig von bestimmten Zuständen).
Sind sie enabled wird die Schriftfarbe auf schwarz, die Hintergrundfarbe auf weiß gesetzt.
Bei disabled setze ich die Schriftfarbe auf dunkelblau und die Hintergrundfarbe auf grau.

Code: Alles auswählen

app := { { XBP_PP_BGCLR,           XBPSYSCLR_ENTRYFIELD }, ;
         { XBP_PP_DISABLED_FGCLR,  GRA_CLR_DARKBLUE     } ;
       }
Das gleiche Verhalten würde ich auch gerne bei Checkboxen haben. Doch da greift diese Regelung nicht. Kennt jem. eine Möglichkeit bei die Farben einer disabelten Checkbox zu bestimmen? Geht es überhaupt?

Gruß,
Notloesung
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:

Beitrag von Martin Altmann »

Hallo Notloesung (oder Peter?),
das geht leider nicht! Da mußt Du Dir die Checkbox selber zurechtbasteln!
Du nimmst einfach eine Checkbox ohne Caption und setzt ein XbpStatic als Caption daneben.
Natürlich mußt Du dann bei einem Klick auf den XbpStatic auch den Zustand der Checkbox ändern (angeklickt oder nicht), da das bei einer richtigen Checkbox ja auch so geht.
Wenn Du damit nicht klar kommst, setze ich mich gerne heute nachmittag hin und bastele mal was zusammen.

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.
notloesung
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 194
Registriert: Fr, 24. Feb 2006 8:09
Kontaktdaten:

Beitrag von notloesung »

Vielen Dank,

das habe ich schon befürchtet. Ich denke dass ich es schon hinkriege. Es wird aber ein wenig dauern, da das keine hohe Priorität hat. Ich meld mich mal wenn es klappt.

Gruß,
Notloesung (nicht der Peter :cry: )
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:

Beitrag von Martin Altmann »

Hallo Notloesung,
notloesung hat geschrieben:das habe ich schon befürchtet. Ich denke dass ich es schon hinkriege. Es wird aber ein wenig dauern, da das keine hohe Priorität hat. Ich meld mich mal wenn es klappt.
Gerne auch, wenn es nicht klappt. Und es hat auch seinen Vorteil, sich das selbst zu bauen - so kann man auch erst die Caption und dahinter die Checkbox anzeigen, wenn man möchte.
notloesung hat geschrieben:(nicht der Peter :cry: )
Kein Grund traurig zu sein - lag ich halt daneben mit meiner Vermutung :-)

Viel Erfolg,
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
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:

Beitrag von Martin Altmann »

Hallo notloesung,
habe mal was zusammengehackt - sollte so in etwa funktionieren:

Code: Alles auswählen

::cbox          := xbpCheckbox():new( ::drawingArea, , {36,104} )
::cbox:caption  := ""
::cbox:autosize := .T.

::cstat              := xbpStatic():new( ::drawingArea, , {55,100} )
::cstat:caption      := "Dies ist die Caption"
::cstat:lbClick      := {|| ::cbox:SetData( ! ::cbox:editbuffer() ) }
::cstat:autosize     := .T.
::cstat:clipSiblings := .T.
::cstat:options      := XBPSTATIC_TEXT_LEFT + XBPSTATIC_TEXT_WORDBREAK
Wenn Du dann die Box disablen willst, mußt Du die Caption natürlich extra disablen!

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.
notloesung
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 194
Registriert: Fr, 24. Feb 2006 8:09
Kontaktdaten:

Beitrag von notloesung »

Hallo an Alle,

ich frage mich gerade was das sollte ... :?:
Wieso schreibe ich hier etwas von Checkbox rein, wenn ich in Wirklichkeit ComboBox meine :?: :dontknow: :?:

Letztendlich ist es aber egal. Das Prinzip ist ja das gleiche.
Hab ich auch schon umgesetzt (vorerst nur zum testen) und es funktioniert auch suppi. Danke für die Tipps!

Vielleicht hat jemand noch 'ne Idee für folgendes Problem:
Bei "normalen" SLEs kann ich doch mittels der Instanzvariable :changed prüfen ob der Inhalt des SLEs verändert wurde.
Jetzt würde ich es gerne auch für eine ComboBox so machen wollen.
Hat jem. eine Idee wie es funktioniert?
Bei mit tut es irgendwie nicht.

Vielleicht bin ich da nun völlig verkehrt, aber ich habe es folgendermaßen probiert:
- oComBox:XbpSLE:changed
- oComBox:changed
... und in beiden Fällen sagt das Prog. „jawohl Änderung liegt vor“ (auch wenn gar nichts verändert wurde).

Gruß,
Notlösung
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:

Beitrag von Martin Altmann »

Hallo notloesung,
lies den Inhalt des Combobox-SLEs aus, wenn das Control den Fokus bekommt.
Wenn das Control den Fokus verliert, liest Du wieder den Inhalt aus.
Die beiden Werte vergelichst Du und dann hast Du, was Du brauchst :-)

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.
notloesung
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 194
Registriert: Fr, 24. Feb 2006 8:09
Kontaktdaten:

Beitrag von notloesung »

Hallo Martin,

das ist die einfache Variante aber sie funktioniert leider nicht so wie ich sie gerne einsetzen würde.

Ich habe in meiner Anwendung mehrere SLEs und Comboboxen.
Diese schiebe ich in ein Array (Bsp. aEditControls).

Bevor der Anwender z.B. die Anwendung verlässt ohne vorher zu speichern laufe ich einmal durch das Array und prüfe ob es Änderungen gibt, damit ich dann darauf reagieren kann.

Wie gesagt bei „normalen“ SLEs funktioniert es, bei Comboboxen leider nicht.
Bisher habe ich noch keine (vernünftige) Lösung gefunden.

Schönen Gruß,
Notlösung
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:

Beitrag von Martin Altmann »

Hallo notloesung,
doch - geht! Ich mache es genauso!
Allerdings merke ich mir alle Feldinhalte des aktiven Satzes in einem Array (::alteWerte), gleich nachdem er geladen wurde (also unverändert).
Die aktuellen Eingaben werden in meinem Array ::editcontrols abgelegt.
Also brauche ich beim Verlassen des Satzes nur die Inhalte der beiden Arrays abgleichen und Bingo!

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.
Antworten