Seite 1 von 1

Looper: Control Zeilenweise unsichtbar machen

Verfasst: 24. Oktober 2016, 14:54
von satmax
Ich möchte in einem Looper-Control, abhängig von den Daten, in einzelnen Looperzellen eine Checkbox anzeigen/verstecken. Ist das überhaupt möglich?
Aus einem Beispielprogramm:

IF MySource.Photo = "" THEN ATT_FIRSTNAME += "!"

Funktioniert einwandfrei, kein Foto dann wird dem Vornamen ein ! angehängt.

Aber das "Control" STC_FIRSTNAME kann ich nicht in Abhängigkeit der Daten verstecken, so zB.:
IF MySource.Photo = "" THEN MySelf.STC_FIRSTNAME..Visible=False

Kann man das überhaupt?

Re: Looper: Control Zeilenweise unsichtbar machen

Verfasst: 24. Oktober 2016, 15:10
von Herbert
Ich glaube, das geht wahrscheinlich nur bei einem Browser-Looper. Da brauchst die Daten aus einem Query oder Datenfile. So kannst du den Slot "Filtering the records" verwenden.

Re: Looper: Control Zeilenweise unsichtbar machen

Verfasst: 24. Oktober 2016, 15:19
von satmax
In meinem Fall ist es ein Browser Looper, leider verstehe ich den folgenden Satz nicht...

>> So kannst du den Slot "Filtering the records" verwenden.

Wie soll ich damit ein Control verstecken?

Re: Looper: Control Zeilenweise unsichtbar machen

Verfasst: 24. Oktober 2016, 15:48
von Herbert
Ich verstehe dich wohl nicht genau. Gibst dort ein false zurück, wird nicht angezeigt.
Falls du aber ein einziges Element daraus ausblenden willst, ist dies nicht der Weg... einzig du versuchst dort auf das Control ein ..visible=false zu setzen

Re: Looper: Control Zeilenweise unsichtbar machen

Verfasst: 24. Oktober 2016, 19:10
von satmax
Ich setzte das Control auf false, wenn ich dann aber über den Bildschirmrand scrolle greift das false nicht mehr, oder es wird das Control in keiner Zeile mehr angezeigt. Die Daten sind kein Problem, aber das Control lässt sich nicht verstecken. Muss ich wohl anders lösen.

Re: Looper: Control Zeilenweise unsichtbar machen

Verfasst: 25. Oktober 2016, 13:23
von Lewi
Hallo,

hier eine Lösung auf Basis des Demo-Beispiels "LOOPER" in WinDev:

Code: Alles auswählen

>>im Abschnitt ->DISPLAYING a ROW of LOOPORDER
IF LOOPORDER[LOOPORDER][4] = 0 THEN
	LOOPORDER[LOOPORDER].CBOXINSTOCK..Visible=False
END
Gruß Olaf

Re: Looper: Control Zeilenweise unsichtbar machen

Verfasst: 26. Oktober 2016, 17:17
von satmax
Hallo Olav,

versuche mal:

Code: Alles auswählen

// im Abschnitt ->DISPLAYING a ROW of LOOPORDER
nPrice is numeric = LOOPORDER[LOOPORDER][3] 

// IF LOOPORDER[LOOPORDER][4] = 0 THEN
IF  nPrice < 1000
	LOOPORDER[LOOPORDER].CBOXINSTOCK..Visible=False
END
Dann wird keine einzige Checkbox angezeigt, obwohl einige mit Preis > 999 vorhanden sind.

Re: Looper: Control Zeilenweise unsichtbar machen

Verfasst: 26. Oktober 2016, 18:55
von Lewi
Die Fehlerursache liegt daran, dass in diesem Beispiel die Werte als STRING erzeugt werden ( in der Funktion "FillLoope").
Insofern kann Dein Code auch nicht funktionieren. ;-)

Re: Looper: Control Zeilenweise unsichtbar machen

Verfasst: 26. Oktober 2016, 19:26
von satmax
Hast recht, so gehts:

Code: Alles auswählen

// im Abschnitt ->DISPLAYING a ROW of LOOPORDER
nPrice is numeric = Val(NoCharacter(LOOPORDER[LOOPORDER][3],".",sscAll))

IF  nPrice < 1000
	Trace("True")	
	LOOPORDER[LOOPORDER].CBOXINSTOCK..Visible=False
ELSE
	Trace("False")	
END
Was ich nicht ganz verstehe:

LOOPORDER[LOOPORDER]

LOOPORDER ist das Control, [LOOPORDER] ist der aktuelle Index, oder? Ist das so? In der Docu habe ich das so nicht gefunden.

Re: Looper: Control Zeilenweise unsichtbar machen

Verfasst: 26. Oktober 2016, 21:25
von Lewi
Bei
trace( LOOPORDER[LOOPORDER] ) wird die komplete Zeile ausgegeben.
trace(LOOPORDER[LOOPORDER][1] ) wird die erste Spalte der Zeile ausgegeben.