Falsche Ausrichtung von Kontrollkästchen auf der BenutzeroberflächeHallo,
Ich entwickle derzeit eine Benutzeroberfläche mit Text und entsprechenden Kontrollkästchen. Mein Code lautet:
strGroupColName = "Group";
lstGroupId = {"A", "B","C","D","E","F","G","H","I","J","K","L"};
strCompareControl = "Compare";
strCompareAddButton = "Add";
strCompareRemoveButton = "Remove";
Compare_String_Col_Box = function({strGroupColName,lstGroupId},
//Get number of groups
intNGpId = NItems(lstGroupId);
strStringColBox =
"VListBox(
BorderBox( Bottom(3),
TextBox(strGroupColName),
)";
For(ig = 1, ig<= intNGpId, ig++,
strStringColBox = strStringColBox || ",
BorderBox( Bottom(3),
TextBox(\!" " || lstGroupId[ig] || "\!",<<JUSTIFY text=""></JUSTIFY>The problem is that the checkboxes are not aligned with the corresponding text, and this issue occurs only on certain computers (same version of JMP used on these different computers). I believe this is due to the different screen sizes. For exemple :
<SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="EvaCo_0-1720103409374.png" style="width: 281px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="EvaCo_0-1720103409374.png" style="width: 281px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="EvaCo_0-1720103409374.png" style="width: 281px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="EvaCo_0-1720103409374.png" style="width: 281px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="EvaCo_0-1720103409374.png" style="width: 281px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="EvaCo_0-1720103409374.png" style="width: 281px;"><span class="lia-inline-image-display-wrapper" image-alt="EvaCo_0-1720103409374.png" style="width: 281px;"><img src="https://us.v-cdn.net/6038925/uploads/images/65868i485D95568A2A48D4/EvaCo_0-1720103409374.png" width="281" height="440" role="button" title="EvaCo_0-1720103409374.png" alt="EvaCo_0-1720103409374.png" /></span></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="EvaCo_1-1720103409375.png" style="width: 280px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="EvaCo_1-1720103409375.png" style="width: 280px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="EvaCo_1-1720103409375.png" style="width: 280px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="EvaCo_1-1720103409375.png" style="width: 280px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="EvaCo_1-1720103409375.png" style="width: 280px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="EvaCo_1-1720103409375.png" style="width: 280px;"><span class="lia-inline-image-display-wrapper" image-alt="EvaCo_1-1720103409375.png" style="width: 280px;"><img src="https://us.v-cdn.net/6038925/uploads/images/65869iE5A52A91227BF58C/EvaCo_1-1720103409375.png" width="280" height="438" role="button" title="EvaCo_1-1720103409375.png" alt="EvaCo_1-1720103409375.png" /></span></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN><P> </P>
How can I ensure that the checkboxes are always aligned with the text, regardless of the computer being used?
I use JMP 17.2.0
Thank you in advance for your help.
<LINGO-LABS id="lingo-labs-770241" slang="en-US" mode="UPDATE"><LINGO-LABEL>Ergebnisse teilen und kommunizieren</LINGO-LABEL></LINGO-LABS>Betreff: Falsche Ausrichtung von Kontrollkästchen auf der BenutzeroberflächeIch denke, die einfachste Möglichkeit besteht darin, Ihre Benutzeroberfläche mit H-Listenfeldern anstelle von V-Listenfeldern oder mithilfe von Tabellenfeldern/Aufstellungsfeldern zu erstellen.
Bei H List Box können Sie Align("center") verwenden, bei Table Box sollten sie ausgerichtet sein und bei Lineup Box dasselbe. Bei Lineup Box können Sie Lineup Ruler Box verwenden, um die Breite jeder Spalte zu ändern.
Names Default To Here(1);
strGroupColName = "Group";
lstGroupId = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L"};
nw = New Window("",
Lineup Ruler Box(
Widths({50, 25,30,25,30,25,30,25,30,25,30,25,30}),
lub = Lineup Box(N Col(11),
Text Box("Group"),
Text Box("Grp"),
Text Box("Ctrl"),
Text Box("Grp"),
Text Box("Ctrl"),
Text Box("Grp"),
Text Box("Ctrl"),
Text Box("Grp"),
Text Box("Ctrl"),
Text Box("Grp"),
Text Box("Ctrl")
);
);
);
For Each({groupid}, lstGroupId,
lub << Append(Text Box(groupid));
For(i = 1, i <= 10, i++,
lub << Append(Check Box(""))
);
);
Betreff: Falsche Ausrichtung von Kontrollkästchen auf der BenutzeroberflächeHallo, danke für Ihr Feedback. Tatsächlich habe ich bereits überlegt, diese „Inline“-Struktur zu verwenden, und ich habe Ihren Code wiederverwendet, um die Schaltflächen zum Hinzufügen und Entfernen zu integrieren.
strGroupColName = "Group";
lstGroupId = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L"};
Ncol = 11;
// Function to generate widths
GenerateWidths = Function({n},
widths = {50};
For(i = 2, i <= n, i++,
Insert Into(widths, 25);
);
Return(widths);
);
// Function to recreate the Lineup Box
RecreateLineupBox = Function({},
lineupBox = Lineup Box(N Col(Ncol));
lineupBox << Append(Text Box("Group"));
For(j = 1, j <= (Ncol - 1) / 2, j++,
lineupBox << Append(Text Box("Grp"));
lineupBox << Append(Text Box("Ctrl"));
);
For Each({groupid}, lstGroupId,
lineupBox << Append(Text Box(groupid));
For(i = 1, i <= Ncol - 1, i++,
lineupBox << Append(Check Box(""));
);
);
Return(lineupBox);
);
// Function to update the main container with new contents
UpdateContainer = Function({container},
lineupBox << Delete; // Delete the existing Lineup Box
lub = RecreateLineupBox();
container << Append(
Lineup Ruler Box(
Widths(GenerateWidths(Ncol)), // Adjust widths based on new Ncol
lub
)
);
);
// Function to add a pair of Group and Control columns with checkboxes
AddGroupControlPair = Function({},
Ncol = Ncol + 2;
UpdateContainer(mainContainer);
);
// Function to remove the last pair of Group and Control columns with checkboxes
RemoveGroupControlPair = Function({},
If(Ncol > 11,
Ncol = Ncol - 2;
UpdateContainer(mainContainer);
);
);
// Initial window creation
nw = New Window("",
mainContainer = V List Box(
// Add and Remove Buttons
H List Box(
Button Box("Add", AddGroupControlPair),
Button Box("Remove", RemoveGroupControlPair)
),
lineupBox = Lineup Ruler Box(
Widths(GenerateWidths(Ncol)),
lub = RecreateLineupBox()
)
)
);The drawback of this structure is that I find it difficult to imagine how to retrieve the content of my checkboxes "by column" as I used to do with lstcomparedpbx.
Betreff: Falsche Ausrichtung von Kontrollkästchen auf der BenutzeroberflächeDiese Zeilen liefern Ihnen eine Matrix aus Einsen und Nullen, um den Status jedes Kontrollkästchens in Ihrem Array-Layout basierend auf der Position anzuzeigen. Bringt Ihnen das, was Sie brauchen? Um dies zu überprüfen, führen Sie Ihr neuestes Skript aus, treffen Sie einige gewünschte Auswahlen und führen Sie dann diese beiden Zeilen aus.
cBoxes = nw << XPath("//CheckBoxBox");
results = Shape(Matrix(cBoxes << Get), NItems(cBoxes)/(NCol-1));
Show(results);
=> 
Betreff: Falsche Ausrichtung von Kontrollkästchen auf der BenutzeroberflächeWie @Jasean bereits vorgeschlagen hat, können Sie XPath verwenden, um Verweise auf alle CheckBoxBoxes abzurufen und dann << Get dorthin zu senden. Sie können das dann auf viele verschiedene Arten handhaben, unten finden Sie eine weitere Option
Names Default To Here(1);
strGroupColName = "Group";
lstGroupId = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L"};
colcount = 5;
nw = New Window("CheckBox UI",
window:lvals = lstGroupId;
window:colcount = colcount;
window:cbs = {};
Lineup Ruler Box(
Widths({50,40,45,40,45,40,45,40,45,40,45}),
lub = Lineup Box(N Col(11));
);
);
// Add "Headers"
lub << Append(Text Box("Group"));
For(i = 1, i <= colcount, i++,
lub << Append(Text Box(Eval Insert("Grp(^i^)")));
lub << Append(Text Box(Eval Insert("Ctrl(^i^)")));
);
// Add "Rows"
For Each({groupid, idx}, lstGroupId,
lub << Append(Text Box(Eval Insert("^groupid^(^idx^)")));
For(i = 1, i <= colcount * 2, i++,
lub << Append(cb = Check Box(""));
);
);
// Add functions to check boxes
nw:cbs = nw << XPath("//CheckBoxBox");
nw:cbs << Set Function(function({this},
cb_idx = Contains(cbs, this);
cb_zeroidx = cb_idx - 1; // easier to handle as 0-based
cb_col = Mod(cb_zeroidx, window:colcount * 2) + 1; // + 1 to back to 1-based
cb_row = Floor(cb_zeroidx / (window:colcount * 2)) + 1; // + 1 to back to 1-based
cb_type = If(Mod(cb_col, 2), "Grp", "Ctrl");
show(cb_idx, cb_col, cb_row, window:lvals[cb_row], cb_type);
Write("\!N");
));
Write();Betreff: Falsche Ausrichtung von Kontrollkästchen auf der BenutzeroberflächeHallo,
Vielen Dank euch beiden für eure Antworten. Sie haben mir sehr geholfen und mir geholfen, mein Problem zu lösen.
Vielen Dank. Ich wünsche Ihnen einen schönen Tag.