WHEN Codeblock nachträglich ändern.
Moderator: Moderatoren
- Manfred
- Foren-Administrator
- Beiträge: 21192
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
WHEN Codeblock nachträglich ändern.
Bevor ich jetzt wieder in die falsche Richtung losrenne, wie ändert man denn nachträglich einen WHEN Block? Speich, ist der auch irgendwo abgelegt wie seiner Zeit der Filter, den man dann einfach nur austauschen muß/kann? Auf den 1. und 2. Blick habe ich nichts gefunden in dem Objekt im Debugger.
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!!
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9361
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: WHEN Codeblock nachträglich ändern.
Das ist keine Eigenschaft der Objekte. Schau Dir mal an, was die Funktion DC_GetWhen() (oder DC_WhenHideEval() - ich hab den Code gerade nicht griffbereit) so alles macht. Bau doch einfach eine eigene Funktion in den WHEN-Codeblock und ändere die. Das ist auch sicherer.
Herzlich,
Tom
Tom
- Manfred
- Foren-Administrator
- Beiträge: 21192
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: WHEN Codeblock nachträglich ändern.
da ist schon eine Funktion drin. Die bekommt ein Objekt übergeben welches auf EOF() oder BOF() geprüft wird. und das möchte ich austauschen. Alles andere wäre derzeit nicht umsetzbar, weil es zu viele Dinge hinter sich herzeieht, die nicht kalkulierbar sind auf die Schnelle. Deshalb meine Frage.
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!!
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9361
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: WHEN Codeblock nachträglich ändern.
Ja, aber das ist doch simpel:
Und die Funktion WhenObject() liefert dann das Objekt, das jeweils gemeint ist.
Code: Alles auswählen
... WHEN {||WhenObject()->(EoF())}
Herzlich,
Tom
Tom
- Manfred
- Foren-Administrator
- Beiträge: 21192
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: WHEN Codeblock nachträglich ändern.
Code: Alles auswählen
oDialogZusatz:standardPbLeiste(.T.,.F.,,@getlist,oDialogZusatz:oMaengel,,,,.T.,,,.T.)
Code: Alles auswählen
METHOD mk_dialog:standardPbLeiste(lNavigationAus,; // hier werden Standard PushButton für normale Dialoge aufgebaut
lLoeschenAus,;
oParent,;
getlist,;
objekt,;
lNeuAus,;
lSpeichernAus,;
lAbbruchAus,;
lNavigationWeg,;
lEditAus,;
lAendernAus,;
lFilterAn,;
cWoher)
LOCAL nPbAbstand := oSysPara:skaliereXbParts(5)
LOCAL nPbLAenge
MEMVAR oSysPara
DEFAULT lNavigationAus TO .F.
DEFAULT lLoeschenAus TO .T.
DEFAULT lNeuAus TO .F.
DEFAULT lSpeichernAus TO .F.
DEFAULT lABbruchAus TO .F.
DEFAULT lNavigationWeg TO .F.
DEFAULT lEditAus TO .F.
DEFAULT lAendernAus TO .F.
DEFAULT lFilterAn To .F.
DEFAULT cWoher TO ""
IF ! lNavigationWeg
@ 0,0 DCPUSHBUTTON;
ACTION {|| objekt:skipdb(cWoher,,,,,-1),;
::SkipzusatzDb(),;
dc_getrefresh(getlist),;
dc_getorigset(getlist);
};
CAPTION {SATZ_ANFANG_ENABLE,SATZ_ANFANG_DISABLE};
EVAL {|o| o:setpos( {oSysPara:skaliereXbParts(5),oSysPara:skaliereXbParts(10)}),;
AAdd(::aPbNavigieren,{o,.T.} );
};
HIDE {|| lNavigationAus};
OBJECT ::oPbTop;
PARENT oParent;
SIZE ::nPbLaengeBMP,::nPbHoehe;
TABSTOP;
TOOLTIP "Zum Anfang der Tabelle"
@ DCGUI_ROW,DCGUI_COL + nPbAbstand DCPUSHBUTTON;
ACTION {|| objekt:skipsatz(cWoher,,.T.,,,-1),;
::SkipzusatzDb(getlist),;
dc_getrefresh(getlist),;
dc_getorigset(getlist);
};
CAPTION {SATZ_RUECK_ENABLE,SATZ_RUECK_DISABLE};
EVAL {|o| o:setpos( {::oPbTop:currentpos()[1] + ::oPbTop:currentsize()[1],::oPbTop:currentpos()[2]} ),;
AAdd(::aPbNavigieren,{o,.T.});
};
HIDE {|| lNavigationAus};
OBJECT ::oPbZurueck;
PARENT oParent;
SIZE ::nPblaengeBMP,::nPbHoehe;
TABSTOP;
TOOLTIP "vorheriger Satz in der Tabelle"
@ DCGUI_ROW,DCGUI_COL + nPbAbstand DCPUSHBUTTON;
ACTION {|| objekt:skipsatz(cWoher,,.T.),;
::SkipzusatzDb(getlist),;
dc_getrefresh(getlist),;
dc_getorigset(getlist);
};
CAPTION {SATZ_VOR_ENABLE,SATZ_VOR_DISABLE};
EVAL {|o| o:setpos( {::oPbZurueck:currentpos()[1] + ::oPbZurueck:currentsize()[1],::oPbZurueck:currentpos()[2]} ),;
AAdd(::aPbNavigieren,{o,.T.});
};
HIDE {|| lNavigationAus};
OBJECT ::oPbVor;
PARENT oParent;
SIZE ::nPblaengeBMP,::nPbHoehe;
TABSTOP;
TOOLTIP "Folgesatz in der Tabelle"
@ DCGUI_ROW,DCGUI_COL + nPbAbstand DCPUSHBUTTON;
ACTION {|| objekt:skipdb(cWoher),;
::SkipzusatzDb(getlist),;
dc_getrefresh(getlist),;
dc_getorigset(getlist);
};
CAPTION {SATZ_ENDE_ENABLE,SATZ_ENDE_DISABLE};
EVAL {|o| o:setpos( {::oPbVor:currentpos()[1] + ::oPbVor:currentsize()[1],::oPbVor:currentpos()[2]} ),;
AAdd(::aPbNavigieren,{o,.T.});
};
HIDE {|| lNavigationAus};
OBJECT ::oPbBottom;
PARENT oParent;
SIZE ::nPblaengeBMP,::nPbHoehe;
TABSTOP;
TOOLTIP "Letzter Satz in der Tabelle"
ENDIF
IF ! lEditAus
nPbLaenge := ::ermittelPbMasse(::cPbNeuCaption)
@ DCGUI_ROW,DCGUI_COL + nPbAbstand DCPUSHBUTTON;
ACTION {|| ::schalteControls("neu",objekt,getlist)};
CAPTION ::cPbNeuCaption;
CARGO "AN";
EVAL {|o| IF( lNavigationWeg,o:setPos({oSysPara:skaliereXbParts(5),oSysPara:skaliereXbParts(10)}),o:setPos({oSysPara:skaliereXbParts(::oPbBottom:currentPos()[1]) + oSysPara:skaliereXbParts(::oPbBottom:currentSize()[1]),oSysPara:skaliereXbParts(::oPbBottom:currentPos()[2])}))};
HIDE {|| lNeuAus};
OBJECT ::oPbNeu;
PARENT oParent;
SIZE nPbLaenge,::nPbHoehe;
TABSTOP;
TOOLTIP "Neuanlage eines Datensatzes";
WHEN {|| ::pbWhenPruefung(::oPbNeu,objekt,"neu")}
nPbLaenge := ::ermittelPbMasse(::cPbAendernCaption)
@ DCGUI_ROW,DCGUI_COL + nPbAbstand DCPUSHBUTTON;
ACTION {|| ::schalteControls("edit",objekt,getlist)};
CAPTION ::cPbAendernCaption;
CARGO "AN";
EVAL {|o| o:setPos( {::oPbNeu:currentPos()[1] + ::oPbNeu:currentSize()[1],::oPbNeu:currentPos()[2]})};
HIDE {|| lAendernAus};
OBJECT ::oPbAendern;
PARENT oParent;
SIZE nPbLaenge,::nPbHoehe;
TABSTOP;
TOOLTIP "Editieren des angezeigten Datensatzes";
WHEN {|| ::pbWhenPruefung(::oPbAendern,objekt,"edit")}
nPbLaenge := ::ermittelPbMasse(::cPbSpeichernCaption)
@ DCGUI_ROW,DCGUI_COL + nPbAbstand DCPUSHBUTTON;
ACTION {|| ::schalteControls("speichern",objekt,getlist)};
CAPTION ::cPbSpeichernCaption;
CARGO "AN";
EVAL {|o| o:setPos( {::oPbAendern:currentPos()[1] + ::oPbAendern:currentSize()[1],::oPbAendern:currentPos()[2]})};
HIDE {|| lSpeichernAus};
OBJECT ::oPbSpeichern;
PARENT oParent;
SIZE nPblaenge,::nPbHoehe;
TABSTOP;
TOOLTIP "Speichern des angezeigten Datensatzes";
WHEN {|| ::pbWhenPruefung(::oPbSpeichern,objekt,"speichern")}
@ DCGUI_ROW,DCGUI_COL + nPbAbstand DCPUSHBUTTON;
ACTION {|| ::schalteControls("abbruch",objekt,getlist)};
CAPTION {ABBRUCH_ENABLE,ABBRUCH_DISABLE};
CARGO "AN";
EVAL {|o| o:setPos( {::oPbSpeichern:currentPos()[1] + ::oPbSpeichern:currentSize()[1],::oPbSpeichern:currentPos()[2]})};
HIDE {|| lAbbruchAus};
OBJECT ::oPbAbbruch;
PARENT oParent;
SIZE ::nPbLaengeBMP,::nPbHoehe;
TABSTOP;
TOOLTIP "Abbruch des Editiervorganges";
WHEN {|| ::pbWhenPruefung(::oPbAbbruch,objekt,"abbruch")}
nPbLaenge := ::ermittelPbMasse(::cPbLoeschenCaption)
@ DCGUI_ROW,DCGUI_COL + nPbAbstand DCPUSHBUTTON;
ACTION {|| ::schalteControls("delete",objekt,getlist)};
CAPTION ::cPbLoeschenCaption;
CARGO "AN";
EVAL {|o| o:setPos( {::oPbAbbruch:currentPos()[1] + ::oPbAbbruch:currentSize()[1],::oPbAbbruch:currentPos()[2]})};
HIDE {|| lLoeschenAus};
OBJECT ::oPbLoeschen;
PARENT oParent;
SIZE nPbLaenge,::nPbHoehe;
TABSTOP;
TOOLTIP "Entfernen des angezeigten Datensatzes";
WHEN {|| ::pbWhenPruefung(::oPbLoeschen,objekt,"delete")}
@ DCGUI_ROW,DCGUI_COL + nPbAbstand DCPUSHBUTTON;
ACTION {|| ::schalteControls("filter",objekt,getlist)};
CAPTION "Filter";
CARGO "AN";
EVAL {|o| o:setPos( {::oPbLoeschen:currentPos()[1] + ::oPbLoeschen:currentSize()[1],::oPbLoeschen:currentPos()[2]})};
HIDE {|| ! lFilterAn};
OBJECT ::oPbFilter;
PARENT oParent;
SIZE ::nPbLaenge,::nPbHoehe;
TABSTOP;
TOOLTIP "Filter auf den Browser";
WHEN {|| ::pbWhenPruefung(::oPbFilter,objekt,"filter")}
ENDIF
nPbAbstand := NIL
nPblaenge := NIL
RETURN self
Code: Alles auswählen
METHOD mk_dialog:PbWhenPruefung(oXbp,objekt,cWoher,lAktivieren) // Prüfung ob PushButton enabled oder disabled sein mnssen
LOCAL lErfolg := .F.
DEFAULT lAktivieren TO .T.
DEFAULT cWoher TO ""
IF Upper(oXbp:cargo[3]) = "AN"
lErfolg := .T.
ENDIF
IF (objekt:nArea)->(Eof()) .AND. (Upper(cWoher) == "ÄNDERN" .OR. Upper(cWoher) == "LÖSCHEN")
lErfolg := .F.
ENDIF
IF ! lAktivieren
lErfolg := .F.
ENDIF
RETURN lErfolg
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: 2470
- Registriert: Fr, 23. Dez 2005 8:00
- Wohnort: Aalen
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: WHEN Codeblock nachträglich ändern.
Was sagt den lErfolg ?
Ist das sicher das da auch ab und an TRUE zurückgegeben wird ?
Ist das sicher das da auch ab und an TRUE zurückgegeben wird ?
Gruß
Klaus
Klaus
- Manfred
- Foren-Administrator
- Beiträge: 21192
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: WHEN Codeblock nachträglich ändern.
auf jeden FAll, sonst würde das KOnzept nicht schon seit Jahren klappen
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!!
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9361
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: WHEN Codeblock nachträglich ändern.
Du willst also, dass sich "objekt" ändern kann?
Herzlich,
Tom
Tom
- Manfred
- Foren-Administrator
- Beiträge: 21192
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: WHEN Codeblock nachträglich ändern.
ja, da müßte eine andere DBF Tabelle rein, die sich in dem objekt versteckt. Ist wie gesagt nur eine Idee. Im Moment habe ich das über den Cargo Block realisiert, den muß ich aber immer setzen, damit enable oder disable ist. Mit dem Austausch des Objekts wäre das natürlich "eleganter", weil da eben auf EOF() usw. geprüft wird und alles darauf abgestimmt ist.
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!!
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9361
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: WHEN Codeblock nachträglich ändern.
Na, dann mach aus der Variablen "objekt" doch einfach eine Funktion, die fallweise das richtige Objekt retourniert.
Herzlich,
Tom
Tom
- Manfred
- Foren-Administrator
- Beiträge: 21192
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: WHEN Codeblock nachträglich ändern.
Ah, jetzt verstehe ich, wo der Haken liegt. Ich vergas zu erwähnen, das der WhenBlock nur für eine ausgewählte Pushbuttonanzahl oder nur einen getauscht werden muß. Nicht für alle. Die Standardleiste behinhaltet einige PB, die aber nicht immer auf dasselbe Objekt reagieren sollen/dürfen. Ich möchte also nur ab und an mal den WHEn Block für EINEN Pushbutton auswechseln.
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!!