Startseite › Foren › Deutsches LiveCode-Forum › Bei Klick eines Listeneintrags, visibel des gleichlaut. Namen des fld einer grp
- Dieses Thema hat 13 Antworten und 3 Teilnehmer, und wurde zuletzt aktualisiert vor 3 Jahren, 3 Monaten von
Torsten.
-
AutorBeiträge
-
-
Dezember 12, 2021 um 20:48 Uhr #39963
Guten Abend
ich habe in einer Gruppe „PickHistory“ 3 Felder.
Ein Scrolling Field fld „Das Jahr auswählen“
ein fld „PH2021“ und
ein fld „PH2022“
Außerdem einen Button btn „Zur History“Was ich jetzt möchte ist folgendes:
Nach mouseUp auf den btn „Zur History“ sollen zunächst die beiden Felder fld „PH2021“ und fld „PH2022“
in das Field „Das Jahr auswählen“ eingelesen werden.Wenn ich jetzt zB. auf die Zeile PH2021 in dem Scrolling Field fld „Das Jahr auswählen“ klicke,
soll Visible des fld „PH2021“ auf true gestzt werden und dasVisible aller anderen Felder in dieser
Gruppe auf false.Das ganze soll sowohl in der IDE als auch unter mobile (Android) funktionieren.
Ich bin für jede Hilfe sehr dankbar.
-
Dezember 12, 2021 um 22:56 Uhr #39973
Hi akrages,
Nach mouseUp auf den btn „Zur History“ sollen zunächst die beiden Felder fld „PH2021“ und fld „PH2022“ in das Field „Das Jahr auswählen“ eingelesen werden.
... put fld "PH2021" & CR & fld "PH2022" into fld "Das Jahr auswählen" ...
Wenn ich jetzt zB. auf die Zeile PH2021 in dem Scrolling Field fld „Das Jahr auswählen“ klicke, soll Visible des fld „PH2021“ auf true gestzt werden und dasVisible aller anderen Felder in dieser Gruppe auf false.
Ich mache das immer so:
Skript vom Listenfeld:on mouseup put the selectedtext of me into tFeld alle_unsichtbar_ausser tFeld end mouseup
Das hier eventuell ins Kartenskript oder auch ins Listenfeld,
je nachdem wie oft das benötigt wird:`command alle_unsichtbar_ausser tFeld lock screen ## erst mal alles verstecken, dank LOCK SCREEN geht das elendig schnell :-) repeat with i = 1 to the num of flds of grp "deine gruppe hier" hide fld i of me end repeat ## Nun das gewünschte Feld anzeigen: show fld tFeld unlock screen end alle_unsichtbar_ausser
Das geht so auch prima bei selbstgemachten Radiobuttons o.ä…
Gruß
Klaus
-
Dezember 12, 2021 um 23:54 Uhr #39977
Eventuell meinstest Du anstatt:
... put fld "PH2021" & CR & fld "PH2022" into fld "Das Jahr auswählen" ...
eher das hier:
... put "PH2021" & CR & "PH2022" into fld "Das Jahr auswählen" ...
?
Sonst klappt mein Skript wahrscheinlich ja nicht so richtig. 🙂 -
Dezember 13, 2021 um 01:08 Uhr #39979
Danke erstmal für deine Hilfe.
Ich habe jetzt eine Lösung gefunden, mit der ich erstmal zufrieden bin.
Es klappt zumindest in der IDE soweit, dass ich das Feld per klick auf den Listeneintrag aufrufen und sichtbar machen kann.Was ich eigentlich möchte ist, dass wenn ein neues Jahr angebrochen ist, eine neue Liste in die Gruppe eingefügt wird.
in etwa so was wie:
Wenn im Feld „Datum“ 2021 +1 steht (jetzt steht da nähmlich 2021 drin), dann kopiere das Feld „PH2021,
benenne es um in (Namen aus dem Feld Datum holen) also 2022 und ein PH davor schreiben.
Danach dann das neue Feld ab der zweiten Zeile leeren.Und ab jetzt sollen alle neuen Daten nicht mehr in das Feld „PH2021“ geschrieben werden, sondern in
das neue Feld „PH2022“.Und da ist das Problem. Wie stelle ich es an, dass:
1. Das neue Jahr erst dann berücksichtigt wird, wenn es angebrochen ist und
2. Das speichern in das neue und nicht mehr in das alte Feld. Es wird ja immo beim speichern immer
nur auf das feld PH2021 verwiesen.
Es kommen ja (so ist der Plan) jedes Jahr ein neues PH20.. Feld dazu.Also so etwas müsste sich doch mit dem König der Looping-Strukturen „Repeat“ bewerkstelligen lassen.
Aber das bekomme ich alleine nicht hin.
Kannst du mir da bitte etwas unter die Arme greifen? 😉 -
Dezember 14, 2021 um 12:32 Uhr #40050
1. Das neue Jahr erst dann berücksichtigt wird, wenn es angebrochen ist und
Das sollte Dir das aktuelle Datum sagen können. 🙂
2. Das speichern in das neue und nicht mehr in das alte Feld. Es wird ja immo beim speichern immer nur auf das feld PH2021 verwiesen.Es kommen ja (so ist der Plan) jedes Jahr ein neues PH20.. Feld dazu.
Sorry, ich kenn Deine App und seine Wirkungsweise ja nicht, daher kann ich das so auf die Schnelle und aus der Ferne nicht beantworten.
-
Dezember 15, 2021 um 16:04 Uhr #40104
Hi Akrages,
1. Das neue Jahr erst dann berücksichtigt wird, wenn es angebrochen ist und
Wenn Deine App wohl nicht pausenlos an ist, sondern immer wieder gestartet wird, überprüfst Du beim Start, ob das aktuelle Jahr noch gültig ist.
on openstack put last word of the long date into tActualYear if tActualYear <> the actualYear of this stack then set the the actualYear of this stack to tActualYear create field "PH" & tActualYear -- und danach das Feld positionieren, altes Feld umpositionieren/ausblenden etc. end if end openstack
Und ab jetzt sollen alle neuen Daten nicht mehr in das Feld „PH2021“ geschrieben werden, sondern in das neue Feld „PH2022“.
Hier bietet sich eine Property des Stacks an, in der das aktuell zu beschreibende Feld angeben wird:
set the currentDateField of this stack to "PH" & the actualYear of this stack
und dann in dem Handler, der Daten in das Feld schreibt:
put "Meine Information" into field the currentDatefield of this stack
So würde ich es machen.
Happy scripting!
Torsten -
Dezember 15, 2021 um 17:18 Uhr #40110
Habs eben auch mal getestet, funktioniert. Wenn in einem neuen Jahr gestartet wird, wird auch ein neues Feld erzeugt und dieses
Ich hatee allerdings einen kleinen Typo im openstack gemacht und habe jetzt das Setzen des aktuellen Feldes gleich nach der Erzeugung eingebaut. Hier der korrekte Code:
on openstack put last word of the long date into tActualYear if tActualYear <> the actualYear of this stack then set the actualYear of this stack to tActualYear create field "PH" & tActualYear set the currentDateField of this stack to "PH" & the actualYear of this stack -- und danach das Feld positionieren, altes Feld umpositionieren/ausblenden etc. end if end openstack
-
Dezember 16, 2021 um 12:55 Uhr #40140
Hi.
Vielen Dank.
Sobadl ich Zeit habe, werde ich dein Script testen.
Es liest sich auf jedenfall schon mal schlüssig und logisch.
Vielen Dank dafür.
Ich melde mich sobald ich es getestet habe wieder.
LG -
Dezember 18, 2021 um 18:59 Uhr #40245
Hallo.
Ich habe jetzt mal versucht dein Script für meine Zwecke anzupassen.
Leider nur mit halbem Erfolg.
Hier mein Scripton mouseUp pMouseButton ##put last word of the long date into tActualYear put 2022 into tActualYear ##Nur zum testen! if there is a field ("PH" & (tActualYear -1)) of cd "History"\ ##Das alte Jahr and there is not a field ("PH" & tActualYear) of cd "History" then ## so wird das neue Jahr nur 1x erstellt! clone field ("PH" & (tActualYear -1)) of cd "History" set the name of it to "PH" & tActualYear set the currentDateField of this stack to "PH" & the actualYear of this stack answer the currentDateField of this stack ##Hier erhalte ich nur ein PH ## Den Inhalt des neue Feldes "PH" & tActualYear außer der enthaltenen Überschrift löschen. delete line 2 to -1 of field the currentDateField of this stack ## erzeugt diese Fehlermeldung: ## button "Neuesjahr Neue PH": execution error at line 12 (Chunk: no such object), char 36 put 100 into field the currentDatefield of this stack ##Keine Fehlermeldung ##aber es wird wohl auch nichts geschrieben, denn currentDatefield PH gibt es ja nicht! end if end mouseUp
Das neue Feld „PH2022 wird erstellt aber der Rest im Schript erzeugt nur Fehlermeldungen (siehe die Kommentare im Script).
Ich verstehe nicht, warum ich bei der Frage:answer the currentDateField of this stack
Nur ein PH angezeigt bekomme.
Eigentlich müsste doch ein PH2022 angezeigt werden. -
Dezember 18, 2021 um 20:04 Uhr #40248
Nach langem ausprobieren habe ich durch folgende Änderung einen weiteren Teilerfolg erzielt.
set the currentDateField of this stack to "PH" & tActualYear answer the currentDateField of this stack ##zeigt jetzt PH2022
Aber ich kann weder den Inhalt des neuer Feldes „PH2022 löschen, noch etwas hineinschreiben. 🙁
-
Dezember 19, 2021 um 11:19 Uhr #40262
Das liegt daran, dass in der Property „actualYear of this stack“ in deinem Fall noch keinen Wert zugewiesen bekommen hat 🙂
In meinem Script-Vorschlag wurde geprüft, ob das aktuelle Jahr und das gespeicherte identisch sind und dann die Property neu gesetzt.
Ich habe die Zeile in Dein Script eingefügt:
on mouseUp pMouseButton put 2022 into tActualYear set the actualYear of this stack to tActualYear if there is a field ("PH" & (tActualYear -1)) of cd "History"\ and there is not a field ("PH" & tActualYear) of cd "History" then clone field ("PH" & (tActualYear -1)) of cd "History" set the name of it to "PH" & tActualYear set the currentDateField of this stack to "PH" & the actualYear of this stack answer the currentDateField of this stack delete line 2 to -1 of field the currentDateField of this stack put 100 into field the currentDatefield of this stack end if end mouseUp
-
Dezember 19, 2021 um 16:00 Uhr #40279
Hallo Torsten.
Vielen Dank für deine Hilfe.
Ich habe jetzt folgendes herausgefunden.
Wenn ich mein Script mit der von dir ergänzten Zeile ind den Stack einfüge, funktioniert alles ganz so wie es soll. Hurra!Problem:
Das Script soll aber in einer Karte innerhalb des Stack stehen und da funktioniert es nicht mehr.
Und lasse ich es im Stack, kann ich von der Karte aus nichts mehr in das currentDatefield of this stack hineinschreiben bzw. es überhaupt ansprechen. Ich bekomme dann fogende Fehlermeldung:button „Button“: execution error at line 14 (Chunk: no such object), char 26
Es ist aber wichtig, dass von der Karte aus funktioniert.
-
Dezember 19, 2021 um 16:41 Uhr #40280
Und gerade ist mir noch etwas aufgefallen.
Das Script im Stack funktioniert nur dann, wenn ich die Karte „History aufgerufen habe.
Es funktioniert nicht, wenn ich die Anwendung (in der IDE) starte. Dann kommt besagte Fehlermeldung. -
Dezember 20, 2021 um 10:37 Uhr #40323
Hi,
das sieht ganz danach aus, dass es einer genauere Angabe des Objekt-Ortes bedarf.
Schick mir mal Deinen Stack vorbei, dann schaue ich mir die Fehlermeldungen mal an: torsten.holmer@web.de
-
-
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.