PowerRustCOBOL 1.61.45-47 — la ListBox recoge, y la FileDropZone filtra
Una ListBox con dos selecciones y un conjunto marcado
Una lista lleva ahora tres cosas distintas, y el programa lee la que necesite:
- Value / SelectedIndex — la fila ACTIVA, aquella sobre la que está el cursor, con el resaltado completo.
- SelectedItems — la selección que el usuario construye con Ctrl (Cmd en Mac), dibujada con el mismo color atenuado. Requiere «MultiSelect».
- CheckedItems — las filas marcadas, cuando «ShowCheckBoxes» está activo.
Con las casillas activadas no hace falta ningún modificador: las casillas
son la selección múltiple, así que un clic sencillo en cualquier punto de la fila la marca, y otro la desmarca. Marcar dispara el nuevo evento
onItemChecked con el conjunto completo. «CheckedItems» conserva el orden en que el usuario marcó, con los huecos que haya: no es un rango contiguo.
Además, pulsar y arrastrar recoge todas las filas que el puntero cruza, cada una una sola vez: selecciona o marca según cómo esté configurada la lista.
Código:
*> todas las filas marcadas, una por línea:
MOVE LIST-1::CheckedItems TO WS-MARCADAS
*> …y la fila sobre la que está el cursor:
MOVE LIST-1::Value TO WS-ACTIVA
Una FileDropZone que sabe lo que acepta
Tres propiedades deciden qué entra y dónde queda, y las respetan las dos vías — arrastrar y el selector nativo — de modo que examinar el disco no salta el filtro:
- AllowedExtensions — «csv, xlsx». Sin distinguir mayúsculas, con el punto o sin él. En blanco acepta cualquier archivo.
- MaximumFileSizeKB — el archivo más grande que admite, en KB. «0» es sin límite.
- DestinationFolder — los archivos aceptados se COPIAN allí, creando la carpeta si falta. Nunca se sobrescribe un nombre existente: un segundo report.csv queda como «report (2).csv». En blanco, los archivos se quedan donde están.
Los aceptados aparecen en «DroppedFiles» con su ruta nueva y disparan «onFilesDropped». Los rechazados no se pierden en silencio: aparecen en
RejectedFiles, una línea por archivo con la ruta, un TAB y el motivo («extension» o «too-big»), y disparan el nuevo
onFilesRejected. Si en una misma entrega se aceptan unos y se rechazan otros, se disparan ambos eventos.
Documentación:
PowerRustCOBOL/docs/developers-guide-en.md at main · CloudLandBeta/PowerRustCOBOL · GitHub
Anthropic Claude Codex Agent