Pushbutton und Caption
Moderator: Moderatoren
- Manfred
- Foren-Administrator
- Beiträge: 21186
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Pushbutton und Caption
ich habe eine Methode, die eine pauschale Pushbuttonleiste erzeugt. Pauschal, weil da Standardwerte drin stehen. Diese Standardwerte wollte ich nachträglich über EVAl in DCGUI READ ändern. Das scheint aber nicht so einfach zu sein. CAption einfach über setcaption() ist wohl nicht dauerhaft. Nachdem ich mir über den Debugger mal angesehen habe, was so alles in dem PushButton Objekt hinterlegt ist, habe ich schließlich :captionblock, :captiondisabled und :captionenabled gefunden. Damit geht das wohl dauerhaft. Ob das jetzt die eleganteste Lösung ist? k.A. ich mache es mal so. Jetzt würde mich aber mal interessieren, wo z.B. die Tooltip Texte stehen, weil ich die auch ändern müßte. Wenn ich da aber suchen sollte, werde ich ja wahnsinnig. Roger hat einen so großen Baum darin erzeugt. Wo fängt man da an. Gibt es dafür z.b. irgendeine Methode, die sowas steuert? Vielleicht generell für die Einstellungen und Werte, die ich benötige?
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: 9358
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Pushbutton und Caption
Nimm einfach Codeblöcke für die Captions. Das ist dann auch "dauerhaft", um es mal im Jimmystyle zu sagen. Obwohl auch SetCaption dauerhaft sein sollte, wenn Du a) keine Codeblöcke für die Captions verwendest (die würden bei jedem DC_GetRefresh neu evaluiert werden) und b) nicht mit DCPUSHBUTTONXP arbeitest, da ist es meiner Erinnerung nach auch noch einmal ein bisschen anders.
Ansonsten könnte, wie immer, etwas Code helfen, um die Situation zu analysieren. Was sind die Standardwerte? Was bedeutet "pauschal erzeugen"?
Ansonsten könnte, wie immer, etwas Code helfen, um die Situation zu analysieren. Was sind die Standardwerte? Was bedeutet "pauschal erzeugen"?
Herzlich,
Tom
Tom
- Manfred
- Foren-Administrator
- Beiträge: 21186
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Pushbutton und Caption
Ahhhhhh Tom,
Danke das hatte ich total übersehen, Caption geht ja auch mit Codeblock. Das muß ich mir mal näher ansehen, wie das klappt und was das für mich bedeutet.
Danke das hatte ich total übersehen, Caption geht ja auch mit Codeblock. Das muß ich mir mal näher ansehen, wie das klappt und was das für mich bedeutet.
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: 21186
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Pushbutton und Caption
OK, Codeblock implementiert. Aber wie ändere ich jetzt die Caption? Ein einfaches SetCaption() bringt micht nicht weiter. Das muß ja einen Sinn gehabt haben, warum Roger das so programmiert hat.
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: 21186
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Pushbutton und Caption
Einfache Lösung, man nimmt z.B. eine Variable in den Codeblock. Wenn man die dann ändert vom Inhalt her, dann wird die neue Caption dauerhaft angezeigt. Hätte ich auch eher drauf kommen können.
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: 9358
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Pushbutton und Caption
Oder eine Funktion, deren Rückgabewert eine gültige Caption ist. Die Caption aktualisiert sich dann durch DC_GetRefresh(GetList) oder DC_GetRefresh(oButton). Aber ich frage mich weiterhin, warum Du meinst, das Setzen z.B. einer Textcaption eines DCPUSHBUTTON mit :SetCaption wäre irgendwie nicht dauerhaft. Wenn der DCPUSHBUTTON so erzeugt wird:
, dann verändert sich die Caption ausschließlich durch diese Zeile bzw. durch das Betätigen des Buttons. Das wäre dann die Codeblock-Version:
Code: Alles auswählen
lNeueingabe := .F.
@ 1,1 DCPUSHBUTTON CAPTION "Neueingabe" SIZE 10,1 OBJECT oButton ACTION {||lNeueingabe:=!lNeueingabe,oButton:SetCaption(IF(lNeueingabe,"Speichern","Neueingabe))}
Code: Alles auswählen
@ 1,1 DCPUSHBUTTON CAPTION {||IF(lNeueingabe,"Speichern","Neueingabe)} SIZE 10,1 OBJECT oButton ACTION {||lNeueingabe:=!lNeueingabe,DC_GetRefresh(GetList)} // oder DC_GetRefresh(oButton)
Herzlich,
Tom
Tom
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9358
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Pushbutton und Caption
Oder, wenn Du nicht mit einzelnen Objektvariablen arbeiten willst:
Mit jedem Klick verlängert sich die Caption jetzt. Und sie bleibt, ganz egal, was Du in/mit diesem Dialog sonst noch veranstaltest - außer, ihn neu aufzubauen.
Code: Alles auswählen
@ 1,1 DCPUSHBUTTON CAPTION 'Test' SIZE 20,1 ACTION {|x,y,o|o:SetCaption(o:Caption+"x")}
Herzlich,
Tom
Tom
- Manfred
- Foren-Administrator
- Beiträge: 21186
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Pushbutton und Caption
hm,
vielleicht mache ich ja auch was falsch. Wenn ich in der Reihenfolge die Pushbutton erzeuge und dort dann die Caption angebe, ist die Caption nicht dauerhaft änderbar, wenn ich mit EVAl in der DCGUI READ Area :setcaption("neuerwert") eingebe. Man kann kurz sehen, wie die Änderung "aufblinkt" aber sofort wieder der Ursprungswert angezeigt wird.
vielleicht mache ich ja auch was falsch. Wenn ich in der Reihenfolge die Pushbutton erzeuge und dort dann die Caption angebe, ist die Caption nicht dauerhaft änderbar, wenn ich mit EVAl in der DCGUI READ Area :setcaption("neuerwert") eingebe. Man kann kurz sehen, wie die Änderung "aufblinkt" aber sofort wieder der Ursprungswert angezeigt wird.
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: 9358
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Pushbutton und Caption
Code: Alles auswählen
@ 1,1 DCPUSHBUTTON CAPTION 'Test 1' SIZE 10,1 OBJECT oButton1
@ 2,1 DCPUSHBUTTON CAPTION 'Test 2' SIZE 10,1 OBJECT oButton2
@ 3,1 DCPUSHBUTTON CAPTION 'Test 3' SIZE 10,1 OBJECT oButton3
DCREAD GUI FIT ADDBUTTONS EVAL {||oButton1:SetCaption('Test 4')}
In Deinem Code ist was falsch.
Herzlich,
Tom
Tom
- Manfred
- Foren-Administrator
- Beiträge: 21186
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Pushbutton und Caption
Tom,
hier der Programmauszug
vielleicht mache ich ja wirklich was falsch. Ich erkenne es aber nicht.
hier der Programmauszug
Code: Alles auswählen
oDialogZusatz:standardPbLeiste(.T.,,,@getlist,oDialogZusatz:oTagesdienst,,,,.T.)
//------------------------------------------------------------------------------
DCGETOPTIONS;
BORDER XBPDLG_SIZEBORDER;
BUSY "Daten werden geladen";
COLORGETS {{ GRA_CLR_BLACK, GRA_CLR_CYAN },{ GRA_CLR_BLACK, GRA_CLR_WHITE }};
EVAL {|o| SetAppWindow(o) }; /* muß hier stehen für das Cascading*/
HILITEGETS GRA_CLR_CYAN;
NOESCAPEKEY;
NOMAXBUTTON;
NOMINBUTTON;
PIXEL;
SAYOPTIONS XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT;
TOOLTIPCOLOR GRA_CLR_BLACK, GRA_CLR_YELLOW;
WINDOWWIDTH oDialogZusatz:nFensterBreite;
WINDOWHEIGHT oDialogZusatz:nFensterHoehe
DCREAD GUI;
APPWINDOW oSysPara:oHauptDialog:drawingArea;
EVAL {|| oDialogZusatz:oTagesdienst:schalteEditControls(.F.),;
oDialogZusatz:oPbNeu:setCaption( "Drucken"),; ------------------------> da sieht man es kurz wechseln aber sofort steht wieder "Neu" drin.
oDialogZusatz:oPbAbbruch:cargo[3] := "AUS",;
SetAppFocus(oDialogZusatz:oPbNeu);
};
OPTIONS GetOptions;
PARENT @oDialog;
TITLE "Tagesdienstedruck " + oDialogzusatz:cVersion
***************************************************************************************************************
METHOD mk_dialog:standardPbLeiste(lNavigationAus,; // hier werden Standard PushButton für normale Dialoge aufgebaut
lLoeschenAus,;
oParent,;
getlist,;
objekt,;
lNeuAus,;
lSpeichernAus,;
lAbbruchAus,;
lNavigationWeg,;
lEditAus,;
lAendernAus)
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.
IF ! lNavigationWeg
@ 0,0 DCPUSHBUTTON;
ACTION {|| objekt:skipdb(,,,,,-1),;
::SkipzusatzDb(),;
dc_getrefresh(getlist),;
dc_getorigset(getlist);
};
CAPTION {||ICON_GOTOP,NIL};
EVAL {|o| o:setpos( {5,10}),;
AAdd(::aPbNavigieren,{o,.T.} );
};
HIDE {|| lNavigationAus};
OBJECT ::oPbTop;
PARENT oParent;
SIZE ::nPbLaengeBMP,::nPbHoehe;
TABSTOP;
TOOLTIP "Zum Anfang der Tabelle"
@ DCGUI_ROW,DCGUI_COL + 5 DCPUSHBUTTON;
ACTION {|| objekt:skipsatz(,,.T.,,,-1),;
::SkipzusatzDb(getlist),;
dc_getrefresh(getlist),;
dc_getorigset(getlist);
};
CAPTION {||ICON_GOBACK,NIL};
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 + 5 DCPUSHBUTTON;
ACTION {|| objekt:skipsatz(,,.T.),;
::SkipzusatzDb(getlist),;
dc_getrefresh(getlist),;
dc_getorigset(getlist);
};
CAPTION {||ICON_GONEXT,NIL};
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 "nächster Satz in der Tabelle"
@ DCGUI_ROW,DCGUI_COL + 5 DCPUSHBUTTON;
ACTION {|| objekt:skipdb(),;
::SkipzusatzDb(getlist),;
dc_getrefresh(getlist),;
dc_getorigset(getlist);
};
CAPTION {||ICON_GOBOTTOM,NIL};
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
@ DCGUI_ROW,DCGUI_COL + 5 DCPUSHBUTTON;
ACTION {|| ::schalteControls("neu",objekt,getlist)};
CAPTION "Neu";
CARGO "AN";
EVAL {|o| IF( lNavigationWeg,o:setPos({5,10}),o:setPos( {::oPbBottom:currentPos()[1] + ::oPbBottom:currentSize()[1],::oPbBottom:currentPos()[2] } ))};
HIDE {|| lNeuAus};
OBJECT ::oPbNeu;
PARENT oParent;
SIZE ::nPbLaenge,::nPbHoehe;
TABSTOP;
TOOLTIP "Neuanlage eines Datensatzes";
WHEN {|| ::pbWhenPruefung(::oPbNeu,objekt,"neu")}
@ DCGUI_ROW,DCGUI_COL + 5 DCPUSHBUTTON;
ACTION {|| ::schalteControls("ändern",objekt,getlist)};
CAPTION {||"Ändern"};
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 "Ändern des angezeigten Datensatzes";
WHEN {|| ::pbWhenPruefung(::oPbAendern,objekt,"ändern")}
@ DCGUI_ROW,DCGUI_COL + 5 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 + 5 DCPUSHBUTTON;
ACTION {|| ::schalteControls("abbruch",objekt,getlist)};
CAPTION {||"Abbruch"};
CARGO "AN";
EVAL {|o| o:setPos( {::oPbSpeichern:currentPos()[1] + ::oPbSpeichern:currentSize()[1],::oPbSpeichern:currentPos()[2] } )};
HIDE {|| lAbbruchAus};
OBJECT ::oPbAbbruch;
PARENT oParent;
SIZE ::nPbLaenge,::nPbHoehe;
TABSTOP;
TOOLTIP "Abbruch des Editiervorganges";
WHEN {|| ::pbWhenPruefung(::oPbAbbruch,objekt,"abbruch")}
@ DCGUI_ROW,DCGUI_COL + 5 DCPUSHBUTTON;
ACTION {|| ::schalteControls("löschen",objekt,getlist)};
CAPTION {||"Löschen"};
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 "Löschen des angezeigten Datensatzes";
WHEN {|| ::pbWhenPruefung(::oPbLoeschen,objekt,"löschen")}
ENDIF
RETURN self
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: 9358
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Pushbutton und Caption
Was passiert in der Methode pbWhenPruefung? Was ist, wenn Du deren Aufruf im WHEN des Buttons rausnimmst?
Herzlich,
Tom
Tom
- Manfred
- Foren-Administrator
- Beiträge: 21186
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Pushbutton und Caption
bevor ich jetzt lange rede:
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!!