Avatar billede hugopedersen Nybegynder
02. december 2008 - 08:28 Der er 11 kommentarer og
1 løsning

Gemme 'opsætning' af DBGrib

Er der nogen nem måde hvorpå man kan gemme brugerens indstilling af kolonnebredder i et DGGrid?
Avatar billede kroning Nybegynder
02. december 2008 - 09:31 #1
Jeg ville nok gøre det manuelt i en ini fil eller i reg basen.
En anden vil nok mene at man kunne streeme til en fil.
Avatar billede hugopedersen Nybegynder
02. december 2008 - 09:35 #2
Det er da en mulighed og det er nok det nemmeste at lave det i en .ini da man der kan gemme navnene og det gør at det ikke bliver afhængig af en rækkefølge på kolonner.
Avatar billede kroning Nybegynder
02. december 2008 - 09:52 #3
Man kunne også gøre det på den lette måde således:

//Gemmer
DBGrid.Columns.SaveToFile('c:\test.txt');

//Henter
DBGrid.Columns.LoadFromFile('c:\test.txt');
Avatar billede kroning Nybegynder
02. december 2008 - 09:53 #4
.SaveToFile gemmer både bredde og rækkefølge
Avatar billede hugopedersen Nybegynder
02. december 2008 - 10:37 #5
kroning> den køber jeg

Et svar tak.
Avatar billede kroning Nybegynder
02. december 2008 - 10:43 #6
svar
Avatar billede hrc Mester
02. december 2008 - 12:36 #7
LoadFromFiles er ikke en god løsning. Det smarteste er at gemme kolonnebredderne i databasen ud for brugerens profil/skærmbillede.

Jeg løber columns igennem og gemmer de synlige kolonner i TObjectList som jeg, vha. TWriter streamer til en tabels blob-felt (har en tabel-relation mellem brugeren og skærmbilledet hvor det gemmes).

I øvrigt gemmer jeg ikke absolutte værdier, men den relative i forhold til skærmens opsætning. Så justerer det sig efter hvilken opsætning brugeren benytter.
Avatar billede hugopedersen Nybegynder
02. december 2008 - 12:47 #8
Lige i dette tilfælde er det 'godt nok' - der er kun 1 bruger så.... (og endvidere er det bare noget gejl)

(din løsning minder om det jeg plejer at gøre i Access hvor jeg dog gemmer det i registry)

Hvordan beregner du den relativt i forhold til skærmens opløsning?
Avatar billede hugopedersen Nybegynder
02. december 2008 - 12:53 #9
- jeg overvejer om jeg skal finde en metode til at gemme det i userens temp dir. Så er det forskelligt fra bruger til bruger.
Avatar billede hrc Mester
02. december 2008 - 23:11 #10
Hvorfor ikke gemme det i databasen så det følger brugeren med rundt (hvis altså brugeren logger på systemet, for ellers bliver det jo svært at identificere brugeren).

Det er ret simpelt at beregne. Jeg gemmer forholdet Bredde/Skærmbredde (Screen.Width) og når jeg henter værdien ind igen, ganger jeg faktoren med skærmbredden. Afrundingsfejl ser jeg stort på.
Avatar billede hugopedersen Nybegynder
03. december 2008 - 06:23 #11
Der er ingen der logger på dette program, så det eneste jeg kan identificere er Windows brugeren. Så databasen er ikke nødvendig i denne opstilling.
Jeg kan også godt lide at SaveToFile gemmer rækkefølgen (kunne man sandsynligvis også gemme i db, men hvor mange linier kode vil det kræve?)
Når man så tænker på at store systemer som f.eks. Navision også bruger diskfiler til at gemme brugerens indstillinger, så kan jeg også godt leve med at dette lille program her gør det :-)
Avatar billede hrc Mester
03. december 2008 - 09:43 #12
Det ville nok kræve ca. 5 linjer kode... Det er ikke et problem for man løber bare Columns igennem og registrerer de kolonner der er synlige. Skal man senere lave en editeringsdialog, sammenholder man felter med de der er i datasættet. Jeg hacker det lidt idet jeg kun sammenholder med datasæt-felter hvor tag = 1. På den måde undgår jeg at brugerne kan vælge primærnøgler og andre "system"-felter.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester