DCSPINBUTTON und dc_getrefresh()
Moderator: Moderatoren
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
DCSPINBUTTON und dc_getrefresh()
Hi,
es wird jetzt evtl. wieder kompliziert.
Ich versuche zunächst einmal das Problem kurz zu umreißen, vielleicht kommt dabei ja schon ein Lösungsansatz zum Vorschein. In einer Version in purem xbase++ habe ich einen XbpSpinButton, der mit der Maus, oder mit dem Cursor auf oder ab gezählt werden kann. Wenn das passiert, wird jedesmal, wenn sich der Wert des Spinbutton ändert eine Funktion aufgerufen, die mit dieser Zahl eine passende ID in einer anderen DB sucht. So weit so gut. Neben dem Spinbutton ist ein XbpStatic, was das gefundene Ergebnis (siehe etwas tiefer) am Bildschirm anzeigen soll.
Wenn der Satz gefunden wurde, dann wird er aus der DB in Speichervariablen geschrieben und über staticobjekt:var:setdata() in das Staticobjekt geschrieben und direkt angezeigt.
Das habe ich jetzt versucht mit express++ nachzubauen. Jetzt taucht aber folgendes Problem auf:
Ich kann den Spinbutton durchlaufen und es wird auch über Up und Down die Funktion aufgerufen, die in der anderen DB sucht. Ich kriege es aber nicht hin, das (in diesem Falle) DCGET zu aktualisieren und den gefundenen Wert am Bildschirm anzuzeigen. Ich habe es schon mit dc_getrefresh(getlist) versucht, aber dann wird sofort der Spinbutton wieder auf den Ursprungswert, vor dem Aufruf der Funktion, zurückgestellt.
Bevor ich jetzt hier etliches an Quellcode reinstelle, wollte ich nur mal nachfragen, ob es bei dieser Sache irgendwas gibt, was auf jeden Fall beachtet werden muß.
es wird jetzt evtl. wieder kompliziert.
Ich versuche zunächst einmal das Problem kurz zu umreißen, vielleicht kommt dabei ja schon ein Lösungsansatz zum Vorschein. In einer Version in purem xbase++ habe ich einen XbpSpinButton, der mit der Maus, oder mit dem Cursor auf oder ab gezählt werden kann. Wenn das passiert, wird jedesmal, wenn sich der Wert des Spinbutton ändert eine Funktion aufgerufen, die mit dieser Zahl eine passende ID in einer anderen DB sucht. So weit so gut. Neben dem Spinbutton ist ein XbpStatic, was das gefundene Ergebnis (siehe etwas tiefer) am Bildschirm anzeigen soll.
Wenn der Satz gefunden wurde, dann wird er aus der DB in Speichervariablen geschrieben und über staticobjekt:var:setdata() in das Staticobjekt geschrieben und direkt angezeigt.
Das habe ich jetzt versucht mit express++ nachzubauen. Jetzt taucht aber folgendes Problem auf:
Ich kann den Spinbutton durchlaufen und es wird auch über Up und Down die Funktion aufgerufen, die in der anderen DB sucht. Ich kriege es aber nicht hin, das (in diesem Falle) DCGET zu aktualisieren und den gefundenen Wert am Bildschirm anzuzeigen. Ich habe es schon mit dc_getrefresh(getlist) versucht, aber dann wird sofort der Spinbutton wieder auf den Ursprungswert, vor dem Aufruf der Funktion, zurückgestellt.
Bevor ich jetzt hier etliches an Quellcode reinstelle, wollte ich nur mal nachfragen, ob es bei dieser Sache irgendwas gibt, was auf jeden Fall beachtet werden muß.
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: DCSPINBUTTON und dc_getrefresh()
Manfred,
man muss doch eigentlich den Ursprungswert neu setzen (natürlich vor dc_getrefresh) dann sollte es funktionieren.
man muss doch eigentlich den Ursprungswert neu setzen (natürlich vor dc_getrefresh) dann sollte es funktionieren.
Gruß
Klaus
Klaus
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: DCSPINBUTTON und dc_getrefresh()
Hi Klaus,
ich verstehe nicht was Du meinst.
Ich habe eine DCGET Variable und ein Object dazu. In der Funktion schreibe ich einen neuen Wert in die Variable. Jetzt müßte der neue Wert in dem Getfeld angezeigt werden und das geht normalerweise über setdata(). Hier aber nicht und ich kann einfach nicht nachvollziehen, welchen Fehler ich mache. Wenn ich aber mit dc_getrefresh(getlist) dran gehe, dann wird nichts geändert, im Gegenteil, das Spinfeld ändert nicht mal mehr seinen Wert, bzw. im Debugger kann man sehen, wie nach dem refresh der Ursprungswert wieder eingetragen wird.
ich verstehe nicht was Du meinst.
Ich habe eine DCGET Variable und ein Object dazu. In der Funktion schreibe ich einen neuen Wert in die Variable. Jetzt müßte der neue Wert in dem Getfeld angezeigt werden und das geht normalerweise über setdata(). Hier aber nicht und ich kann einfach nicht nachvollziehen, welchen Fehler ich mache. Wenn ich aber mit dc_getrefresh(getlist) dran gehe, dann wird nichts geändert, im Gegenteil, das Spinfeld ändert nicht mal mehr seinen Wert, bzw. im Debugger kann man sehen, wie nach dem refresh der Ursprungswert wieder eingetragen 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!!
- 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: DCSPINBUTTON und dc_getrefresh()
Manfred,
kannst Du den entsprechenden Code-Schnipsel zeigen ?
kannst Du den entsprechenden Code-Schnipsel zeigen ?
Gruß
Klaus
Klaus
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: DCSPINBUTTON und dc_getrefresh()
Hi,
ok, hier erstmal nur das Gerippe.
-------> schnipp
Ich überlege aber schon, ob ich die Spielerei nicht einfach über DCGET mache und dann mit Valid arbeite.
ok, hier erstmal nur das Gerippe.
-------> schnipp
Code: Alles auswählen
@ nOben,nLinks DCSAY "Staat:";
OBJECT oText;
SAYSIZE nSayWidth, nSayHeight
@ 0,nSayWidth DCSPINBUTTON oLand:idstaat;
DOWNSPIN {|| sucheStaat(oLand,oStaat)};
LIMITS 1,(oStaat:nArea)->(LastRec());
SIZE nSpinBreite;
OBJECT oLand:oIdStaat;
RELATIVE oText;
TABSTOP;
UPSPIN {|| sucheStaat(oLand,oStaat)}
@ 0,nSpinBreite DCGET oStaat:bez;
OBJECT oStaat:oBez;
RELATIVE oLand:oIdstaat;
WHEN {||.F.}
********************************************************************************
FUNCTION sucheStaat(oLand,oStaat)
oStaat:satzsuchen(Str(oLand:idstaat,8,0),,"id") // diese Funktion sucht und kopiert dann die Felder aus Db in die Member
RETURN(.T.) // variablen.
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: 9367
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: DCSPINBUTTON und dc_getrefresh()
Hallo, Manfred.
Ich habe auch meine Probleme mit DCSPINBUTTONS gehabt und bin zu der Lösung gekommen, dass man im CALLBACK-Slot (der i.e. dem DATALINK anderer Objekte entspricht) folgendes machen muss:
Dann funktionieren auch abhängige Refreshs.
Ich habe auch meine Probleme mit DCSPINBUTTONS gehabt und bin zu der Lösung gekommen, dass man im CALLBACK-Slot (der i.e. dem DATALINK anderer Objekte entspricht) folgendes machen muss:
Code: Alles auswählen
@ 0,0 DCSPINBUTTON nJahr SIZE 15,1 LIMITS 1990,2010 OBJECT oSpinButton ;
CALLBACK {||nJahr:=oSpinButton:EditBuffer(),DC_GetRefresh(GetList)}
Herzlich,
Tom
Tom
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: DCSPINBUTTON und dc_getrefresh()
Hi Tom,
danke erstmal. Aber irgendwas ist falsch in meinem Code. Es klappt trotzdem nicht. Aber egal, ich habe es jetzt auf DCGET umgebaut und das ist eh besser zu bedienen, da es an die alte Version anlehnt. DCSPINBUTTON war eigentlich nur "nice to have it", bzw. Schickimicki. Wenn ich mal wieder viel zeit habe, dann werde ich mich nochmals an die Sache ranmachen. Oder wenn ich mehr KoffHoff habe.
danke erstmal. Aber irgendwas ist falsch in meinem Code. Es klappt trotzdem nicht. Aber egal, ich habe es jetzt auf DCGET umgebaut und das ist eh besser zu bedienen, da es an die alte Version anlehnt. DCSPINBUTTON war eigentlich nur "nice to have it", bzw. Schickimicki. Wenn ich mal wieder viel zeit habe, dann werde ich mich nochmals an die Sache ranmachen. Oder wenn ich mehr KoffHoff 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!!
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: DCSPINBUTTON und dc_getrefresh()
Hi,
wobei ich die "Spinbuttons" eher für unnötig halte
wenn ich ein Jahr von 1900 bis 2010 damit eingeben will dann gute Nacht per Tastatur ist man auf jeden Fall schneller
wobei ich die "Spinbuttons" eher für unnötig halte
wenn ich ein Jahr von 1900 bis 2010 damit eingeben will dann gute Nacht per Tastatur ist man auf jeden Fall schneller
Gruß
Hubert
Hubert
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: DCSPINBUTTON und dc_getrefresh()
Hi Hubert,
Du hast vollkommen recht. Ich hatte es eingebaut und Spass gehabt wie sonstwas. Dann habe ich mir das in der Praxis beim Kunden angesehen und gemerkt, dass es absoluter Schwachsinn ist. Ich fand es toll, mit den Cursortasten rauf und runter zu zählen, aber der User wollte reintippen und das klappte nicht so wie gewünscht. Deshalb kam mir dieses Problem auch jetzt wie gerufen alles nochmals zu überdenken. Das mit dem DCGET ist auch viel besser m.E.
Du hast vollkommen recht. Ich hatte es eingebaut und Spass gehabt wie sonstwas. Dann habe ich mir das in der Praxis beim Kunden angesehen und gemerkt, dass es absoluter Schwachsinn ist. Ich fand es toll, mit den Cursortasten rauf und runter zu zählen, aber der User wollte reintippen und das klappte nicht so wie gewünscht. Deshalb kam mir dieses Problem auch jetzt wie gerufen alles nochmals zu überdenken. Das mit dem DCGET ist auch viel besser m.E.
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: 9367
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: DCSPINBUTTON und dc_getrefresh()
Ob sich ein Spinbutton lohnt, hängt wirklich davon ab, wie weit entfernt ein zu wählender Wert vom Default ist. Wenn man eine jährliche Umsatzstatistik anbietet, wird der Benutzer zumeist das aktuelle oder vergangene Jahr auswerten wollen, und wenn man dann als Default das vergangene Jahr anbietet, ist die "Arbeit", einen Spinbutton zu verändern, tatsächlich geringer als diejenige, eine Zahl in ein Get zu tippen. Hier ist es dann auch okay, dass jemand acht Mal eine Schaltfläche betätigen muss, wenn er für 2001 auswerten will.
@Manfred: Ich verstehe zwar nicht ganz, was Dein Code bewerkstelligen soll, aber das, was Du in den "UPSPIN"-Codeblock geschrieben hast, gehört m.E. - um das, was ich angemerkt habe, ergänzt - in den CALLBACK-Slot.
@Manfred: Ich verstehe zwar nicht ganz, was Dein Code bewerkstelligen soll, aber das, was Du in den "UPSPIN"-Codeblock geschrieben hast, gehört m.E. - um das, was ich angemerkt habe, ergänzt - in den CALLBACK-Slot.
Herzlich,
Tom
Tom
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9367
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: DCSPINBUTTON und dc_getrefresh()
Code: Alles auswählen
CALLBACK {||oLand:idstaat := oSpinButton:EditBuffer(), sucheStaat(oLand,oStaat), DC_GetRefresh(GetList)}
Was auch noch nicht funktionieren muss, weil ich "sucheStaat()" nicht kenne und deshalb nicht antizipieren kann, was dort mit oLand:idstaat passieren soll.
Herzlich,
Tom
Tom
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: DCSPINBUTTON und dc_getrefresh()
Hi Tom,
ich lasse den Thread noch als "unerledigt". Wenn ich mit express++ weiter bin, dann werde ich mich damit nochmals beschäftigen. Ich denke mal, es liegt ein Konzeptfehler meinerseits vor. Den finde ich aber jetzt noch nicht. Wie erwähnt, ich habe es auf DCGET umgestellt und das geht wesentlich schöner und schneller.
OOps, ich sehe gerade, das Du noch was nachgesetzt hast. Aber so habe ich es auch gemacht, es klappte trotzdem nicht. Die Erleuchtung das es so unpraktisch war, hilft mir im Moment viel weiter.
ich lasse den Thread noch als "unerledigt". Wenn ich mit express++ weiter bin, dann werde ich mich damit nochmals beschäftigen. Ich denke mal, es liegt ein Konzeptfehler meinerseits vor. Den finde ich aber jetzt noch nicht. Wie erwähnt, ich habe es auf DCGET umgestellt und das geht wesentlich schöner und schneller.
OOps, ich sehe gerade, das Du noch was nachgesetzt hast. Aber so habe ich es auch gemacht, es klappte trotzdem nicht. Die Erleuchtung das es so unpraktisch war, hilft mir im Moment viel weiter.
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!!