Schalten von Xbp
Moderator: Moderatoren
- Manfred
- Foren-Administrator
- Beiträge: 21225
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 70 Mal
Schalten von Xbp
Hi,
mich würde einmal folgendes interessieren, hat hier jemand irgendeine Formel, oder ein Schema, wie er Xbp enabled oder disabled im Paket und Zusammenhang bei Eingaben in einer Maske?
Also folgendes Szenario:
Es gibt eine Eingabemaske, mit entsprechenden Elementen. Sei es Pushbutton, oder Eingabefelder oder was weiß ich. Bei einer Neuerfassung, wird ein Button gedrückt, der Cursor springt ins Eingabefeld (z.B.) Jetzt soll aber gewährlsietet sein, das der User den Neubutton nicht ein weiteres Mal drücken kann. Gleichzeitig wird aber der Abbruch, oder Speichern Button aktiv. Wenn die Eingabe abgebrochen wird, dann wird der Neu Button aktiv aber der Abbruch oder Speichern Button wieder deaktiv. Anders ausgedrückt, es gibt XBP, die zu bestimmten Zeiten aktiv/inaktiv sein müssen, in Kombination mit anderen Dingen. Wie regelt ihr das, das der Überblick bei den ganzen Kombinationen nicht verloren geht, nicht jedes Element einzeln von Hand geschaltet werden muß, sondern am besten im Paket abgearbeitet wird?
Weiteres Beispiel, es kann vorkommen, das mit einem Buttondruck eine weitere Eingabemaske aufgeht, man aber verhindern muß, das die Buttons auf der Vormaske in dem Moment NICHT mehr gedrückt werden können. Sobald die letzte Maske wieder geschlossen wurde, werden die Button wieder freigegeben.
Macht ihr eine Tabelle, in der alle Kombinationen stehen, die aber zu bestimmten Zeiten ausgelöst werden, oder wie bekommt man sowas (am besten bauschal programmierbar) in den Griff?
Mal schauen, was ich jetzt wieder für ein Fass geöffnet habe.
mich würde einmal folgendes interessieren, hat hier jemand irgendeine Formel, oder ein Schema, wie er Xbp enabled oder disabled im Paket und Zusammenhang bei Eingaben in einer Maske?
Also folgendes Szenario:
Es gibt eine Eingabemaske, mit entsprechenden Elementen. Sei es Pushbutton, oder Eingabefelder oder was weiß ich. Bei einer Neuerfassung, wird ein Button gedrückt, der Cursor springt ins Eingabefeld (z.B.) Jetzt soll aber gewährlsietet sein, das der User den Neubutton nicht ein weiteres Mal drücken kann. Gleichzeitig wird aber der Abbruch, oder Speichern Button aktiv. Wenn die Eingabe abgebrochen wird, dann wird der Neu Button aktiv aber der Abbruch oder Speichern Button wieder deaktiv. Anders ausgedrückt, es gibt XBP, die zu bestimmten Zeiten aktiv/inaktiv sein müssen, in Kombination mit anderen Dingen. Wie regelt ihr das, das der Überblick bei den ganzen Kombinationen nicht verloren geht, nicht jedes Element einzeln von Hand geschaltet werden muß, sondern am besten im Paket abgearbeitet wird?
Weiteres Beispiel, es kann vorkommen, das mit einem Buttondruck eine weitere Eingabemaske aufgeht, man aber verhindern muß, das die Buttons auf der Vormaske in dem Moment NICHT mehr gedrückt werden können. Sobald die letzte Maske wieder geschlossen wurde, werden die Button wieder freigegeben.
Macht ihr eine Tabelle, in der alle Kombinationen stehen, die aber zu bestimmten Zeiten ausgelöst werden, oder wie bekommt man sowas (am besten bauschal programmierbar) in den Griff?
Mal schauen, was ich jetzt wieder für ein Fass geöffnet habe.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Martin Altmann
- Foren-Administrator
- Beiträge: 16555
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 116 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: Schalten von Xbp
Mach es doch einfach über eine Variable (in der Klasse), in der die entsprechenden Bits ein- oder ausgeschaltet werden (ein Bit repräsentiert das enable/disable eines (oder eines Blockes von) Xbp()s).
Viele Grüße,
Martin
Viele Grüße,
Martin
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.
- Manfred
- Foren-Administrator
- Beiträge: 21225
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 70 Mal
Re: Schalten von Xbp
den Vorschlag habe ich schon oft gehört. Erscheint mir aber immer noch als sehr unübersichtlich. Oder kannst Du mal ein Beispiel posten?
Was mir gerade eingefallen ist, wäre ein Array in dem alles steht. Im Moment habe ich es so, das ich die Eingabefelder in einem Array habe und die Pushbutton usw. Das klappt aber nur bedingt gut. (also das Array wird druchlaufen und alles was drin steht wird enabled/disabled().
Jetzt dachte ich mir, alles was zusammen geschaltet wrden kann/muß kommt halt zusammen in ein Array und wird dann geschaltet (da wären dann die verschiedenen Kombinationen möglich). Da mir diese Idee jetzt aber zu schnell kam, durchdenke ich die nochmal.
Was mir gerade eingefallen ist, wäre ein Array in dem alles steht. Im Moment habe ich es so, das ich die Eingabefelder in einem Array habe und die Pushbutton usw. Das klappt aber nur bedingt gut. (also das Array wird druchlaufen und alles was drin steht wird enabled/disabled().
Jetzt dachte ich mir, alles was zusammen geschaltet wrden kann/muß kommt halt zusammen in ein Array und wird dann geschaltet (da wären dann die verschiedenen Kombinationen möglich). Da mir diese Idee jetzt aber zu schnell kam, durchdenke ich die nochmal.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- brandelh
- Foren-Moderator
- Beiträge: 15707
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 71 Mal
- Danksagung erhalten: 38 Mal
- Kontaktdaten:
Re: Schalten von Xbp
Ich mache das über eine Methode des Fensters: ::Schalten(...)
allerdings nicht übertreiben, mit der Maus kommt man immer raus aus einem Feld (außer man zwingt zum Modalen Fenster), zu viel Zwang kann keiner leiden ...
Hier ein Beispiel einer Druckseite, die auf checkboxen reagiert (was wird gedruckt, wohin (combo) ) ...
Das ist übersichtlich und auch nach Jahren noch zu verstehen.
allerdings nicht übertreiben, mit der Maus kommt man immer raus aus einem Feld (außer man zwingt zum Modalen Fenster), zu viel Zwang kann keiner leiden ...
Code: Alles auswählen
*---------------------------------------------------------------------------------------- INIT
METHOD tpBeaAbRech:init( oParent, oOwner, aPos, aSize, aPP, lVisible ) // das Fenster ruft bei jedem SetInputFocus() schalten auf, da der Maus Klick etwas geändert haben könnte an den Bedingungen.
...
::SetInputFocus := {|| ::Zuruecksetzen(), ::Schalten() }
*----------------------------------------------------------------------- Zuruecksetzen() ---------------
METHOD tpBeaAbRech:Zuruecksetzen()
::Berechnet := .f. // solange das .f. ist, darf nicht gespeichert werden !
::sleRente:SetData("0")
::mleEK_Rech:SetData("")
::sleEK_Rech_AbzugBerechnet:SetData("0")
::sleEK_Rech_AbzugManuell:SetData("0")
::sleEK_Rech_AbzugBetrag:SetData("0")
::sleFreibetrag:SetData("0")
::sleEKMonatsBetrag:SetData("0")
::sleEKAbzug:SetData("0")
::sleZahlBetragMonat:SetData("0")
return nil
*----------------------------------------------------------------------------- schalten() -------
METHOD tpBeaAbRech:schalten()
if ::SetParent():SetParent():tpEinkommen:chbSchaetzung:getData()
::sleEK_Rech_AbzugManuell:enable()
else
::sleEK_Rech_AbzugManuell:setValue(0)
::sleEK_Rech_AbzugManuell:disable()
endif
::ftFreibetrag:SetCaption("- Freibetrag inkl. "+nTrim(::SetParent():SetParent():tpStammdaten:sleAnzWaiseDesBerechtigten:getValue() )+" Waisen des Berechtigten:")
SetAppFocus(::pbSave)
return nil
### die Abrechnung wird durch einen Button gestartet und prüft die Plausi aller Felder und schaltet auch Controls mit ::Schalten() ... dies wird z.B. auch bei Änderungen im Checkboxen etc. aufgerufen ...
*----------------------------------------------------------------------------- Abrechnung() -------
METHOD tpBeaAbRech:Abrechnung()
do case // erst auf Fehler prfen
case empty(::SetParent():SetParent():tpRente:sleMonatsRentenBetrag:getValue())
InfoBox("Die Seite Rente wurde noch nicht bearbeitet (Rentenbetrag = 0 ).")
PostAppEvent( xbeTab_TabActivate, , , ::SetParent():SetParent():tpRente )
PostAppEvent( xbeP_SetInputFocus, , , ::SetParent():SetParent():tpRente )
case ! ::SetParent():SetParent():tpSuchen:IsValid(.t.) // Fehler anzeigen
PostAppEvent( xbeTab_TabActivate, , , ::SetParent():SetParent():tpSuchen )
PostAppEvent( xbeP_SetInputFocus, , , ::SetParent():SetParent():tpSuchen )
case ! ::SetParent():SetParent():tpStammdaten:IsValid(.t.) // Fehler anzeigen
PostAppEvent( xbeTab_TabActivate, , , ::SetParent():SetParent():tpStammdaten )
PostAppEvent( xbeP_SetInputFocus, , , ::SetParent():SetParent():tpStammdaten)
case ! ::SetParent():SetParent():tpRente:IsValid(.f.) // Keine Fehler anzeigen, da viele Warnungen
InfoBox("Die Seite Rente enth„lt Fehler, bitte prfen"+CRLF+;
"und mit 'weiter zu Einkommen' beenden, dann werden"+CRLF+;
"eventuelle Fehler und Warnungen angezeigt.")
PostAppEvent( xbeTab_TabActivate, , , ::SetParent():SetParent():tpRente )
PostAppEvent( xbeP_SetInputFocus, , , ::SetParent():SetParent():tpRente )
case ! ::SetParent():SetParent():tpEinkommen:IsValid(.t.) // Fehler anzeigen
PostAppEvent( xbeTab_TabActivate, , , ::SetParent():SetParent():tpEinkommen )
PostAppEvent( xbeP_SetInputFocus, , , ::SetParent():SetParent():tpEinkommen )
otherwise // = keine Fehler vorhanden
::schalten()
::sleRente:setValue(::SetParent():SetParent():tpRente:sleMonatsRentenBetrag:getValue())
::sleEK_Rech_AbzugBerechnet:setValue(::BerechneEinkommen( NIL )) // Bei Druckausgaben wird Druckerobject bergeben !
::sleEK_Rech_AbzugManuell:setValue(0)
::sleEK_Rech_AbzugBetrag:setValue(0)
::sleFreibetrag:setValue(::BerechneFreibetrag())
::sleEKMonatsBetrag:setValue(0)
::sleEKAbzug:setValue(0)
::sleZahlBetragMonat:setValue(0)
::DoSleBerechnen()
::Berechnet := .t.
endcase
return nil
Code: Alles auswählen
*----------------------------------------------------------------------------- schalten() -------
METHOD tpBeaDrucken:schalten()
if ::setParent():setParent():tpSuchen:Bearbeitungsgrund() = "ADR" // nur Adresse ändern
* Grundeinstellung setzen
::chbKopieAkte:setData(.f.)
::chbKopieBerechtigter:setData(.f.)
::chbAlsAnlageDrucken:setData(.f.)
::chbKopieAdressen:setData(.f.)
::chbKopieAdressenL261:setData(.f.)
::chbRAGMitteilung:setData(.f.)
::chbFreierText:setData(.f.)
::chbSonstigerAbzug:setData(.f.)
::chbZahlanweisung:setData(.f.)
::chbZahlanweisungAdresseDrucken:setData(.t.)
* und schützen
::chbKopieAkte:disable()
::chbKopieBerechtigter:disable()
::chbAlsAnlageDrucken:disable()
::chbKopieAdressen:disable()
::chbKopieAdressenL261:disable()
::chbRAGMitteilung:disable()
::chbFreierText:disable()
::chbSonstigerAbzug:disable()
else
* und wieder freigeben
::chbKopieAkte:enable()
::chbKopieBerechtigter:enable()
::chbAlsAnlageDrucken:enable()
::chbKopieAdressen:enable()
::chbFreierText:enable()
::chbSonstigerAbzug:enable()
endif
if ::SetParent():SetParent():tpSuchen:Bearbeitungsgrund() = "AAE" // nur hier gibt es RAG Mitteilungen
if ::chbRAGMitteilung:isEnabled() // ist schon verfügbar
* einfach nichts machen
else
::chbRAGMitteilung:enable() // freischalten und
::chbRAGMitteilung:setData(.t.) // eingeschalten
endif
else
::chbRAGMitteilung:setData(.f.)
::chbRAGMitteilung:disable()
endif
if ::SetParent():SetParent():tpSuchen:Bearbeitungsgrund() = "WSV" // Dieser Betrag wird nie zur laufenden Rente
::chbZahlanweisung:setData(.f.) // Rente laut Schreiben von ...
::chbZahlanweisung:disable()
else
if ::chbZahlanweisung:isEnabled() // ist schon richtigerweise verfügbar
* einfach nichts machen
else
::chbZahlanweisung:enable() // freischalten und
::chbZahlanweisung:setData(.f.) // eingeschalten
endif
endif
*------------------ vor den Aktionen, damit diese den Rest erledigen -----------------------
::CheckBoxAktionen(::chbRAGMitteilung, ::chbRAGMitteilung:getData())
::CheckBoxAktionen(::chbFreierText, ::chbFreierText:getData())
::CheckBoxAktionen(::chbZahlanweisung, ::chbZahlanweisung:getData())
::CheckBoxAktionen(::chbSonstigerAbzug,::chbSonstigerAbzug:getData())
return nil
*----------------------------------------------------------------------- CheckBoxAktionen() -----------------
METHOD tpBeaDrucken:CheckBoxAktionen(oXbp,lChecked)
do case
case ::chbZahlanweisung = oXbp // bei jedem muss diese Methode hinterlegt sein .... in der INIT()
if lChecked
if ::setParent():setParent():tpSuchen:Bearbeitungsgrund() = "ADR" // nur Adresse „ndern
::chbZahlanweisung:disable()
::chbZahlanweisungAdresseDrucken:disable()
::sleZahlanweisungHinweis:enable()
::sleL768ZugangGrund:disable()
::sleL768ZugangMonat:disable()
::sleL768AbgangGrund:disable()
::sleL768AbgangMonat:disable()
::sleL768AbgangBetrag:disable()
::sleL768ZugangGrund:setdata("")
::sleL768ZugangMonat:setdata("")
::sleL768AbgangGrund:setdata("")
::sleL768AbgangMonat:setdata("")
::sleL768AbgangBetrag:setdata("")
::sleBLZ:enable()
::sleKontoNr:enable()
else
::chbZahlanweisungAdresseDrucken:enable()
::sleZahlanweisungHinweis:enable()
::sleL768ZugangGrund:enable()
::sleL768ZugangMonat:enable()
::sleL768AbgangGrund:enable()
::sleL768AbgangMonat:enable()
::sleL768AbgangBetrag:enable()
::sleBLZ:enable()
::sleKontoNr:enable()
endif
else
::chbZahlanweisungAdresseDrucken:disable()
::sleZahlanweisungHinweis:disable()
::sleL768ZugangGrund:disable()
::sleL768ZugangMonat:disable()
::sleL768AbgangGrund:disable()
::sleL768AbgangMonat:disable()
::sleL768AbgangBetrag:disable()
::sleBLZ:disable()
::sleKontoNr:disable()
endif
case ::chbRAGMitteilung = oXbp
if lChecked
::chbKopieAdressenL261:enable()
::chbKopieAdressenL261:setData(.t.)
::sleRAG_ALT_JAV:enable()
::sleRAG_ALT_MonatsBetrag:enable()
::chbFreierText:enable()
::chbFreierText:setdata(.t.)
if empty(::mleFreierText:getData())
::mleFreierText:setData("Die Anpassung erfolgt unter der aufschiebenden Bedingung, "+;
"dass der angenommene Anpassungsfaktor und der aktuelle "+;
"Rentenwert durch den Gesetzgeber best„tigt werden.")
endif
else
::chbKopieAdressenL261:setData(.f.)
::chbKopieAdressenL261:disable()
::sleRAG_ALT_JAV:disable()
::sleRAG_ALT_MonatsBetrag:disable()
endif
case ::chbSonstigerAbzug = oXbp
if lChecked
::mleSonstigerAbzugGrund:enable()
::mleSonstigerAbzugGrund:SetData("Der berechnete Rentenbetrag je Monat wird noch gekrzt, "+;
"um ... bitte Grund eingeben ... ")
::sleSonstigerAbzugBetrag:enable()
else
::mleSonstigerAbzugGrund:disable()
::mleSonstigerAbzugGrund:setdata("")
::sleSonstigerAbzugBetrag:disable()
::sleSonstigerAbzugBetrag:setdata("")
endif
case ::chbFreierText = oXbp
if lChecked
::mleFreierText:enable()
else
::mleFreierText:disable()
endif
endcase
return nil
### in der INIT
::chbZahlanweisung := XbpCheckBox():new(::gbDruckEinstellungen, , { nRandLinks+10,nPosY}, {265,nSLEHoehe}, { { XBP_PP_FGCLR, GRA_CLR_BLACK } } )
::chbZahlanweisung:caption := "Zahlungsanweisung (L768) "
::chbZahlanweisung:autoSize := .T.
::chbZahlanweisung:tabStop := .T.
::chbZahlanweisung:selection := .T.
::chbZahlanweisung:selected := {|lChecked,uNIL,oXbp| ::CheckBoxAktionen(oXbp,lChecked) } /// das steuert die Anzeigeänderungen, da der Inhalt hier andere steuert !
::chbZahlanweisungAdresseDrucken := XbpCheckBox():new(::gbDruckEinstellungen, , { 210,nPosY}, {100,nSLEHoehe}, { { XBP_PP_FGCLR, GRA_CLR_BLACK } } )
::chbZahlanweisungAdresseDrucken:caption := "Adresse drucken ? Hinweis:"
::chbZahlanweisungAdresseDrucken:autoSize := .T.
::chbZahlanweisungAdresseDrucken:tabStop := .T.
::chbZahlanweisungAdresseDrucken:selection := .F.
// hier sind keine ::CheckBoxAktionen() nötig, da dieses einfach beim Drucken abgefragt wird ohne Änderungen ...
Gruß
Hubert
Hubert
- Jan
- 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: Schalten von Xbp
Manfred,
velleicht verstehe ich Deine Anforderung falsch. Aber ich sehe das Problem nicht.
Es gibt drei Buttons: Neu, Speichern, Abbrechen. Korrekt? Wenn ja: Beim Aufruf des Dialoges ist "Neu" enabled, die beiden anderen sind disbaled. Eventuell auch alle SLE. Drücke ich "Neu", wird "Neu" disabled, die beiden anderen enabled. Und auch alle SLE. Bei "Abbrechen" oder "Speichern" genau anders herum.
Jan
velleicht verstehe ich Deine Anforderung falsch. Aber ich sehe das Problem nicht.
Es gibt drei Buttons: Neu, Speichern, Abbrechen. Korrekt? Wenn ja: Beim Aufruf des Dialoges ist "Neu" enabled, die beiden anderen sind disbaled. Eventuell auch alle SLE. Drücke ich "Neu", wird "Neu" disabled, die beiden anderen enabled. Und auch alle SLE. Bei "Abbrechen" oder "Speichern" genau anders herum.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Manfred
- Foren-Administrator
- Beiträge: 21225
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 70 Mal
Re: Schalten von Xbp
@Hubert,
ich möchte nur verhindern, das im falschen Moment die falschen Button gedrückt werden. Eingabefelder sollen nicht betrofffen sein. Die sind entweder frei oder gesperrt. das wäre nicht das Problem.
@Jan,
Du verstehst das schon richtig, aber es können esentlich mehr Button vorhanden sein, die in verschiedenen kombinationen dis/enabled sein müssen.
@Klaus,
Du meinst verstecken, das meine ich nicht. Ich meine enable/disable
ich möchte nur verhindern, das im falschen Moment die falschen Button gedrückt werden. Eingabefelder sollen nicht betrofffen sein. Die sind entweder frei oder gesperrt. das wäre nicht das Problem.
@Jan,
Du verstehst das schon richtig, aber es können esentlich mehr Button vorhanden sein, die in verschiedenen kombinationen dis/enabled sein müssen.
@Klaus,
Du meinst verstecken, das meine ich nicht. Ich meine enable/disable
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Manfred
- Foren-Administrator
- Beiträge: 21225
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 70 Mal
Re: Schalten von Xbp
Hubert,
ich habe mir das mal angeschaut. Das ist mir zu kompliziert und zu unflexibel. So wie ich das erkenne, mußt Du genau wissen bei Deinen Aktionen was Du wann und wie vorhanden hast und dann schaltest. Mir schwebt eine variante vor, in der ich ein jeweils von Anwendung zu Anwendung zusammengebautes Array, oder Dataobjetc habe, in dem jeweils immer die entsprechen XBP stehen evtl. noch mit der Info, ob es aktiviert oder deaktiviert werden muß. Deshalb war/bin ich der Meinung es müßte doch unter den Mathematikern hier eine Möglichkeit geben eine Zahlenkette, oder was weiß ich zu übergeben, anhand derer die Routine weiß, was zu tun ist. 0,1,2,4,8,16 usw. Aber vielleicht bin ich jetzt auch zu weit ab vom Schuß!? Es kann doch m.E. nicht sein, das jedesmal alle Parts einzeln angegeben werden müssen wenn man sie schalten will. Das muß doch irgendwie pauschalisierter zu machen sein. Ich habe sowas derzeit schon gut umgesetzt, mit den Standardelementen, aber sobald da was zu komt....
ich habe mir das mal angeschaut. Das ist mir zu kompliziert und zu unflexibel. So wie ich das erkenne, mußt Du genau wissen bei Deinen Aktionen was Du wann und wie vorhanden hast und dann schaltest. Mir schwebt eine variante vor, in der ich ein jeweils von Anwendung zu Anwendung zusammengebautes Array, oder Dataobjetc habe, in dem jeweils immer die entsprechen XBP stehen evtl. noch mit der Info, ob es aktiviert oder deaktiviert werden muß. Deshalb war/bin ich der Meinung es müßte doch unter den Mathematikern hier eine Möglichkeit geben eine Zahlenkette, oder was weiß ich zu übergeben, anhand derer die Routine weiß, was zu tun ist. 0,1,2,4,8,16 usw. Aber vielleicht bin ich jetzt auch zu weit ab vom Schuß!? Es kann doch m.E. nicht sein, das jedesmal alle Parts einzeln angegeben werden müssen wenn man sie schalten will. Das muß doch irgendwie pauschalisierter zu machen sein. Ich habe sowas derzeit schon gut umgesetzt, mit den Standardelementen, aber sobald da was zu komt....
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- brandelh
- Foren-Moderator
- Beiträge: 15707
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 71 Mal
- Danksagung erhalten: 38 Mal
- Kontaktdaten:
Re: Schalten von Xbp
Wenn du nur buttons schaltest, kannst du ja im jeweiligen Actionslot diese aktion unterbringen.
Ich habe solche Aktionen für jedes Fenster gerne an einem Ort und das ist bei mir die Methode schalten.
Viele Wege führen nach Rom, aber dass ein Array oder sonstige BIT markierten Zeichenketten / Zahlen einfacher zu verstehen sind, halte ich für ein Gerücht
Ich habe solche Aktionen für jedes Fenster gerne an einem Ort und das ist bei mir die Methode schalten.
Viele Wege führen nach Rom, aber dass ein Array oder sonstige BIT markierten Zeichenketten / Zahlen einfacher zu verstehen sind, halte ich für ein Gerücht
Gruß
Hubert
Hubert
- Manfred
- Foren-Administrator
- Beiträge: 21225
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 70 Mal
Re: Schalten von Xbp
ich auch, aber ich möchte mal hören, was die Jungs hier so für Ideen haben. Es muß ja irgendwas geben. Alles jedesmal einzeln aufführen und schalten, dass kann es nicht sein.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- brandelh
- Foren-Moderator
- Beiträge: 15707
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 71 Mal
- Danksagung erhalten: 38 Mal
- Kontaktdaten:
Re: Schalten von Xbp
Wenn du viele ähnliche Fenster hast oder für Hilfsfenster kannst du ja eine Masterklasse schreiben, die du immer wieder verwendest.
Bei meinen Fenstern ist die Auswahl und Eingabemöglichkeit aber sehr abhängig von den Daten und der jeweiligen Aufgabe, da bringt das nix.
Bei meinen Fenstern ist die Auswahl und Eingabemöglichkeit aber sehr abhängig von den Daten und der jeweiligen Aufgabe, da bringt das nix.
Gruß
Hubert
Hubert
- Rolf Ramacher
- Der Entwickler von "Deep Thought"
- Beiträge: 1931
- Registriert: Do, 09. Nov 2006 10:33
- Wohnort: Bergheim
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: Schalten von Xbp
Hallo Manfred,
du kannst doch wenn eine neue Maske aufgeht. den odlg übergeben und dort disable() - und wenn die "neue" Maske wieder geschlossen wird.
destroy neue maske und wieder "alte "maske enable
das mache ich nur so.,
du kannst doch wenn eine neue Maske aufgeht. den odlg übergeben und dort disable() - und wenn die "neue" Maske wieder geschlossen wird.
destroy neue maske und wieder "alte "maske enable
das mache ich nur so.,
- Manfred
- Foren-Administrator
- Beiträge: 21225
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 70 Mal
Re: Schalten von Xbp
Hi Rolf,
wäre eine Möglichkeit. Mache ich auch teilweise so. Aber das mit der neuen Maske war nur ein Beispiel.
wäre eine Möglichkeit. Mache ich auch teilweise so. Aber das mit der neuen Maske war nur ein Beispiel.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Koverhage
- Der Entwickler von "Deep Thought"
- Beiträge: 2471
- Registriert: Fr, 23. Dez 2005 8:00
- Wohnort: Aalen
- Hat sich bedankt: 104 Mal
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: Schalten von Xbp
Manfred,
hatte ich doch geschrieben: mit WHEN
Schau dir in der Hilfe mal DCPUSHBUTTON an.
Entsprechend dem WHEN Status kann auch die Caption gesetzt werden.
hatte ich doch geschrieben: mit WHEN
Schau dir in der Hilfe mal DCPUSHBUTTON an.
Entsprechend dem WHEN Status kann auch die Caption gesetzt werden.
Gruß
Klaus
Klaus
- Manfred
- Foren-Administrator
- Beiträge: 21225
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 70 Mal
Re: Schalten von Xbp
ach so,
ja das habe ich ja schon. Aber es geht um die Handhabung. Ich möchte nicht jeden einzelen Pushbutton schalten müssen, sondern alles in einem Paket.
ja das habe ich ja schon. Aber es geht um die Handhabung. Ich möchte nicht jeden einzelen Pushbutton schalten müssen, sondern alles in einem Paket.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Martin Altmann
- Foren-Administrator
- Beiträge: 16555
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 116 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: Schalten von Xbp
Das kannst Du nur, indem Du allen gleichzeitig zu schaltenden Objekten den selben Parent gibst und dann den Parent enable()st oder disable()st.
Viele Grüße,
Martin
Viele Grüße,
Martin
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.
- mini990
- 1000 working lines a day
- Beiträge: 592
- Registriert: Sa, 28. Jan 2006 9:44
- Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
- Danksagung erhalten: 1 Mal
Re: Schalten von Xbp
DisablePushButtons(oXbp0)
FUNCTION DisablePushButtons(cBereich)
AEVAL(cBereich:childList(),{|o| IIF(o:className()='XbpPushButton',o:disable(),NIL)}) // deaktivieren
RETURN NIL
Gruß Stefan
FUNCTION DisablePushButtons(cBereich)
AEVAL(cBereich:childList(),{|o| IIF(o:className()='XbpPushButton',o:disable(),NIL)}) // deaktivieren
RETURN NIL
Gruß Stefan
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Schalten von Xbp
hi,
meine Fenster sind alle nach dem selben Prinzip aufgebaut und enthalten : cAction und nSeekRec
mit cAction sag ich doch was anliegt und gemäss User Level passieren für die cAction die entsprechenden "Schalter" Einstellungen.
---
wenn man Objecte "sammelt" dann kann man das Array als "Schalt-Zentrale" nehmen
für einen User werden dann die entsprechenden Einstellungen vorgenommen
meine Fenster sind alle nach dem selben Prinzip aufgebaut und enthalten : cAction und nSeekRec
mit cAction sag ich doch was anliegt und gemäss User Level passieren für die cAction die entsprechenden "Schalter" Einstellungen.
---
wenn man Objecte "sammelt" dann kann man das Array als "Schalt-Zentrale" nehmen
Code: Alles auswählen
oXbp:Create()
AADD(aAction,{oXbp,"NEU", NeedLevel})
Code: Alles auswählen
AEVAL( aAction,{|e| IF(e[3] > UserLevel,e:hide(),e:show()) }
gruss by OHR
Jimmy
Jimmy
- Manfred
- Foren-Administrator
- Beiträge: 21225
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 70 Mal
Re: Schalten von Xbp
Hi Jimmy,
so mache ich das ja schon. Aber ich wollte keine UServerwaltung machen, sondern einfach nur eine Anwendungsverwaltung. Und da stellt sich mir halt die Frage, wenn ich die Objekte gesammelt habe, wie schalte ich sie dann bei entsprechenden Bedingungen. Es geht nicht darum, ob user darf oder nicht, sondern ob Kombination erlaubt oder nicht.
Aber ich merke schon, es gibt dafür doch keine "einfache" mathematische Lösung oder so. Da kann/muß ich so weiter machen, wie ich es bisher gemacht habe.
so mache ich das ja schon. Aber ich wollte keine UServerwaltung machen, sondern einfach nur eine Anwendungsverwaltung. Und da stellt sich mir halt die Frage, wenn ich die Objekte gesammelt habe, wie schalte ich sie dann bei entsprechenden Bedingungen. Es geht nicht darum, ob user darf oder nicht, sondern ob Kombination erlaubt oder nicht.
Aber ich merke schon, es gibt dafür doch keine "einfache" mathematische Lösung oder so. Da kann/muß ich so weiter machen, wie ich es bisher gemacht habe.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Schalten von Xbp
ok, mal anders : du kennst es doch wenn man Konstanten "addiert", oder
Also User darf : 2+4+8+32
das kannst nun wieder "zerlegen" in die einzelnen Teile.
damit hast du 30 Kombinationen (+2) mit "Schaltern"
ist dir das mathematisch genug um die Lösung zu sehen
gruss by OHR
Jimmy
Jimmy
- Manfred
- Foren-Administrator
- Beiträge: 21225
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 70 Mal
Re: Schalten von Xbp
so was dachte ich ja, aber da fehlt es mir einfach derzeit an Hirnschmalz das zu (de)kodieren.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Martin Altmann
- Foren-Administrator
- Beiträge: 16555
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 116 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: Schalten von Xbp
Das hatten wir doch hier schon häufiger: einzelne Bits an- bzw. abschalten (und prüfen). Das braucht man kein Gehirnschmalz. Man muss sich nur merken, welches Bit wofür gedacht war (da kann man mit #define arbeiten, um sich das leichter merken zu können.
Viele Grüße,
Martin
Viele Grüße,
Martin
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.
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Schalten von Xbp
frag mal Martin nach ARRAY, der hat mir das Prinzip damals erklärt.
also es basiert auf 2^x also max. 32 -> 30 +2
nun legst du die Konstanten (oder VAR) an und ordnest Werte zu
Code: Alles auswählen
#define IchDarfDas 2^1
#define IchDarfDies 2^2
...
#define IchDarfalles 2°30
---
auf der anderen Seite "zerlege" ich die grosse Zahl mit der höchsten Wert, Rest mit dem nächst niedrigeren Wert.
in diesem Code schalte ich Checkbox wenn der "Wert" (Konstante) übereinstimmt
Code: Alles auswählen
PROCEDURE SetValueCheck(nWERT,aCheckbox)
LOCAL aWert := WertType()
LOCAL nRest := 0
LOCAL i,iMax
nRest := nWERT
iMax := LEN(aWert) // Array der Konstanten Werte 2^x
// bei {|x| nRest $ x[1] } von Max nach Min
//
FOR i = iMax TO 1 STEP -1
IF nRest > 0
IF aWert[i,1] $ nRest
nRest -= aWert[i,1]
// "check" Checkbox
//
aCheckbox[i]:setData(.T.)
// "paint" Checkbox Color
//
IF ASCAN(aFilter,aWert[i,1]) > 0
aCheckbox[i]:SetColorFG(GRA_CLR_BLUE)
ELSE
aCheckbox[i]:SetColorFG(GRA_CLR_RED)
ENDIF
ENDIF
ELSE
EXIT
ENDIF
NEXT
RETURN
have fun
gruss by OHR
Jimmy
Jimmy