25. november 2003 - 08:22Der er
11 kommentarer og 1 løsning
At lave en liste
Hejsa
Jeg vil gerne have en "liste" hvor brugeren kan indtaste data.
brugeren skal trykke på en knap ADD, hvorefter en lille form skal komme frem. her skal de indtaste f.eks. et beløb og en beskrivelse. Det vil jeg så gerne have overført til et felt på min almindelige form, som så kommer til at udgøre en liste (ved flere indtastninger).
Derefter skal de kunne trykke på EDIT eller DELETE.
Er det en større omgang?? Jeg kan ikke lige gennemskue det her fra morgenstunden. :-)
Det er da gjort før. Hvis du er ligeglad med rækkefølgen, så er ADD nemt.
En grundlæggende idé er måske at vedligeholde listen i ét felt og vise elementerne via CFD-felter. Separér kolonneelementerne med f.eks. "¤".
Når brugeren skal DEL eller EDIT skal du udpege det element som skal slettes/redigeres. Det gør jeg normal med kode der ligner nedenstående. Det er skrevet ud fra hukommelsen og ikke komplet, men jeg håber du kan se idéen med det.
Ok - jeg kan godt se det smarte i at have det hele i et felt og så vise det i CFD-felter, men du siger at ADD er nemt!
Jeg skal vel lave en lille dialogform, med de værdier jeg ønsker udfyldt. Den skal så composes når jeg trykker ADD. Men hvordan får jeg værdierne med over i mit listefelt på hovedformen??
Du skal have et modtagerfelt på formularen, som kommer til at indeholde de redigerede værdier, f.eks. "editFields". @Dialogbox kan kaldes med en variabel der ikke tillader nye felter på formularen. Dialogboxformularen har f.eks. 3 felter, "f1", "f2", "f3" + computed feltet "editFields". Formlen er skal være:
s := "¤"; F1 +s+ F2 +s+ F3
Formlen i ADD knappen skal være noget i stil med: @DialogBox( "editDineFelter"; [parametre]); _list := FeltDerIndeholderListe; FIELD FeltDerIndeholderListe := @Trim(_list : editFields);
Pas på med brugen af @Trim. Hvis dine felter må indeholde blanke elementer eller flere mellemrum vil de blive fjernet med @Trim.
uha så er jeg tæt på mål! Nu virker det stort set.
Lige en ting der stadig driller: Når jeg trykker på ADD anden gang, så er den lille dialogboks udfyldt med det jeg tastede ind første gang - hvordan clearer jeg det???
@DialogBox skulle kaldes med [NoNewFields] (eller lignende) Det var det jeg mente med "variabel der ikke tillader nye felter på formularen", jeg kunne blot ikke huske hvad den hed. En anden go' parameter er [SizeToTable].
Men nu er skaden sket vedr dine indtastningsfelter på dit dokument. Slet evt. felterne med @DeleteField.
Vedr. [NoNewFields], så er dine indtastningsfelter fra dialogboxen blevet overført tilbage til hoveddokumentet. Når du derefter kalder dialogboxen igen, så bliver felterne overført derop igen.
Ved at anvende [NoNewFields] forhindrer du, at midlertidige felter, som indtastningsfelterne eller beregningsfelter, bliveroverført tilbage til hoveddokumentet.
Hvis du ikke anvender [NoNewFields], så kan du simulere dette ved at anvende @DeleteField. Koden nedenfor viser begge metoder
FIELD indtastning1 := @DeleteField; FIELD indtastning2 := @DeleteField; FIELD indtastning3 := @DeleteField; FIELD indtastning4 := @DeleteField; @DialogBox( ".SETravelSheetDialog1"; [AutoHorzFit] : [AutoVertFit]:[SizeToTable]: [NoNewFields];Kvitton); _list := TList; FIELD TList := @Trim(_list : editFields); @Command( [ViewRefreshFields] )
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.