Custom Form: SetVarContent dynamisch befüllen?

Alle Fragen rund Antworten rund um die ACMP Client Commands und Container
Antworten
Lukas Stelter
Beiträge: 8
Registriert: Di Mär 12, 2019 12:20 pm

Guten Tag,

ich habe ein Problem bezüglich das befüllen einer Variable mit mehreren Werten.
Ähnlich wie in Ihrem Beispiel zur Custom Form habe ich mir eine Liste aus der Datenbank auslesen lassen und mit diesen eine CheckBoxList befüllt.
Die Liste hat am ende ca 300 Einträge.
Nun möchte ich eine Variable mit den Werten befüllen die angekreuzt sind.
Problem hierbei ist, dass nur der letzte angekreuzte Wert in die Variable geschrieben wird.
Ist es möglich das Problem über SetVarContent zu lösen?

Danke im Voraus :D

Lukas Stelter

Hier mein Ansatz:

Code: Alles auswählen

procedure OkButtonClick(Sender: TObject);  
var    
i: integer;                  
begin
for i:=0 to CheckListBox1.Items.Count-1 do
if (CheckListBox1.Checked[i] = True) then                                                
begin                                                                                  
[b]SetVarContent('VARIABLE1', CheckListBox1.Items[i] + '=' + inttostr(CheckListBox1.Checked[i]));                                                                                                       
end;                                                                                                         
  CloseForm(0);                                                                                                                
end;                                       
 
gfortkort
Beiträge: 2
Registriert: Do Nov 29, 2018 10:43 am

Guten Tag,

in deinem Code wird bei jedem Durchlauf die VARIABLE1 komplett überschrieben.
Hier kann eine Hilfsvariable verwendet werden, welche zum Schluss einmalig in die VARIABLE1 geschrieben wird.
Folgend ein Beispiel Code:
procedure OkButtonClick(Sender: TObject);
var
i: integer;
temp: string;
begin
temp := '';
for i := 0 to CheckListBox1.Items.Count - 1 do
begin
if CheckListBox1.Checked then
begin
temp := CheckListBox1.Items + '=1,' + temp;
end;
end;

SetVarContent('VARIABLE1', temp);
CloseForm(0);
end;
Mit freundlichen Grüßen,

Gideon Fortkort
Aagon GmbH
Lukas Stelter
Beiträge: 8
Registriert: Di Mär 12, 2019 12:20 pm

Danke für die schnelle Antwort :D

Wenn ich es über diesen Weg probiere erscheint folgende Fehlermeldung:
File Library FormUnit: Variante des Typs (UnicodeString) konnte nicht in Typ (Double) konvertiert werden when evaluating instruction OperAdd($0,$0,$0,$0,'').
Stack content is: [Integer:221103776,Integer:802990192].
Source position: 20,35
Source Postion ist die Zeile:
temp := CheckListBox1.Items + '=1,' + temp;
Verwende ich hier einen falschen Datentypen?
Benutzeravatar
ngottschalk
Beiträge: 293
Registriert: Mi Sep 08, 2010 12:57 pm

Hallo Lukas,

ich habe es zwar nicht getestet, aber das "CheckListBox1.Items" ist meiner Meinung nach falsch, weil es eine StringList o.Ä. sein sollte. Da du an dieser Stelle aber wahrscheinlich den Text der Zeile haben möchtest, müsste hier noch irgendwo zumindest der Index "i" untergebracht werden. Es ist wahrscheinlich "CheckListBox1.Items\[i\]", ggf. musst du aber noch je nach Aufbau hier auf eine Text-Property zugreifen ("CheckListBox1.Items\[i\].Text" oder ähnlich).
Wie gesagt, nicht getestet, nur vermutet.

PS: Neue Vermutung: Der eigentlich gepostete Code war richtig, nur wurde der Index "\[i\]" von der Forensoftware als Tag für Kursivschrift interpretiert^^

PPS: Die "\" bei den Indexen natürlich entfernen, wollte nur verhindern, dass es bei mir auch als kursiv interpretiert wird.
Mit freundlichen Grüßen

Niklas Gottschalk (gottschalk@zoller-usa.com)
IT Systems Administrator
Zoller Inc.
DRuppertz
Beiträge: 29
Registriert: Mi Nov 26, 2014 4:32 pm

Hallo,

das Problem war, wie von Niklas beschrieben, die Interpretation von Teilen des Codes für die Formatierung des Text als Kursiv.
Den Code finden Sie anbei in der Code.zip.
Ich habe ich den Code noch so angepasst, dass die Auflistung auch mit der gleichen Reihenfolge wie in der CheckListBox gespeichert wird.
Dateianhänge
code.zip
Code für den Formeditor
(403 Bytes) 183-mal heruntergeladen
Mit freundlichen Grüßen / Best regards

Dennis Ruppertz

support@aagon.com
http://www.aagon.de

Aagon GmbH
Lange Wende 33
D-59494 Soest
fon: +49-2921-789-200
fax: +49-2921-789-244
Lukas Stelter
Beiträge: 8
Registriert: Di Mär 12, 2019 12:20 pm

Es funktioniert, vielen Dank! :D
Antworten