Toon posts:

[VB 2005]Snelheid plaatsen van controls op een form

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een formulier wat een aantal vaste velden bevat en verder gevuld wordt door 'dynamische' velden.

Bij een vast tekstveld vul je in hoeveel 'orderregels' er op een formulier moeten komen en vervolgens verschijnen de velden op het formulier. Elke orderregel bevat 10 velden.
De tekstvelden zijn arrays. De grootte van de array is dus het aantal orderregels dat moet verschijnen op het formulier. Tevens wordt de locatie opgegeven waar het veld moet komen.

Stuk voorbeeld code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
Public veld1() as textbox
Public veld2() as textbox
Public veld3() as textbox
Public veld4() as textbox
Public veld5() as textbox
Public veld6() as textbox
Public veld7() as textbox
Public veld8() as textbox
Public veld9() as textbox
Public veld10() as textbox

array.resize(veld1, txtAantalregels.text)
array.resize(veld2, txtAantalregels.text)
array.resize(veld3, txtAantalregels.text)
array.resize(veld4, txtAantalregels.text)
array.resize(veld5, txtAantalregels.text)
array.resize(veld6, txtAantalregels.text)
array.resize(veld7, txtAantalregels.text)
array.resize(veld8, txtAantalregels.text)
array.resize(veld9, txtAantalregels.text)
array.resize(veld10, txtAantalregels.text)

for i as integer = 1 to 10
veld1(i).location = new point(waardex, waardey)
veld2(i).location = new point(waardex, waardey)
veld3(i).location = new point(waardex, waardey)
veld4(i).location = new point(waardex, waardey)
veld5(i).location = new point(waardex, waardey)
veld6(i).location = new point(waardex, waardey)
veld7(i).location = new point(waardex, waardey)
veld8(i).location = new point(waardex, waardey)
veld9(i).location = new point(waardex, waardey)
veld10(i).location = new point(waardex, waardey)

veld1(i).text = "text uit string"
veld2(i).text = "text uit string"
veld3(i).text = "text uit string"
veld4(i).text = "text uit string"
veld5(i).text = "text uit string"
veld6(i).text = "text uit string"
veld7(i).text = "text uit string"
veld8(i).text = "text uit string"
veld9(i).text = "text uit string"
veld10(i).text = "text uit string"

me.controls.add(veld1(i))
me.controls.add(veld2(i))
me.controls.add(veld3(i))
me.controls.add(veld4(i))
me.controls.add(veld5(i))
me.controls.add(veld6(i))
me.controls.add(veld7(i))
me.controls.add(veld8(i))
me.controls.add(veld9(i))
me.controls.add(veld10(i))

next


De code is dus echt heel simpel en stelt niet zoveel voor. Mijn probleem is echter dat wanneer ik bijvoorbeeld 50 regels wil toevoegen het echt gigantisch lang duurt voordat deze zichtbaar zijn op het formulier. Een regel of 5 gaat nog wel maar het wordt al snel erg traag. Hebben jullie een idee hoe ik dit 'beter' kan doen zodat het formulier een stuk sneller wordt?
Natuurlijk kan ik gewoon 100 regels plaatsen en dan de velden 'hidden' maken en alleen tonen wanneer nodig, maar wil dit graag dynamisch oplossen.

Ik heb het formulier getest op meerdere pc's. Van zeer 'snelle' tot langzame pc's en op allemaal duurt het gewoon te lang voordat alle regels getoond worden.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Ik vraag me af waarom je 50 x 10 (= 500 :D ) textboxen op je form zou willen? Waarom gebruik je geen datagrid ofzo?

Daarnaast een andere tip: je kunt ook arrays van arrays maken (en dus veld1...veld10 vervangen door veld() door twee for loops te nesten) ;)

[ Voor 11% gewijzigd door RobIII op 12-04-2007 10:27 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
RobIII schreef op donderdag 12 april 2007 @ 10:26:
Ik vraag me af waarom je 50 x 10 (= 500 :D ) textboxen op je form zou willen? Waarom gebruik je geen datagrid ofzo?

Daarnaast een andere tip: je kunt ook arrays van arrays maken (en dus veld1...veld10 vervangen door veld() door twee for loops te nesten) ;)
Het mag juist geen datagrid zijn. Helaas. De klant wil perse een layout met gewone tekstvelden.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op donderdag 12 april 2007 @ 11:13:
[...]


Het mag juist geen datagrid zijn. Helaas. De klant wil perse een layout met gewone tekstvelden.
Dan heeft de klant IMHO nogal rare eisen, maar goed.
Dan nog zou ik gaan voor nested arrays van controls en anders misschien wel een usercontrol die iig al "1 regel" vormt.

Daarnaast, wanneer (waar) wordt jouw code uitgevoerd?

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
RobIII schreef op donderdag 12 april 2007 @ 11:24:
[...]

Dan heeft de klant IMHO nogal rare eisen, maar goed.
Dan nog zou ik gaan voor nested arrays van controls en anders misschien wel een usercontrol die iig al "1 regel" vormt.

Daarnaast, wanneer (waar) wordt jouw code uitgevoerd?
de code wordt uitgevoerd zodra de focus van het veld af is waarin aan wordt gegeven hoeveel orderregels er moeten komen. tsja... rare eisen. ik weet het maar goed het is nu eenmaal zo. ze hebben betaald voor maatwerk en dit was 1 van de eisen.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 11:17

Janoz

Moderator Devschuur®

!litemod

Vreemd. Ikzelf ben bij maatwerk gewend dat de klant aangeeft wat de functionele eisen zijn, niet hoe alles technisch in elkaar moet zitten.

Ik denk dat het grootste probleem is dat efficientere oplossingen niet mogelijk zijn, juist door de vreemde klant eisen.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • dingstje
  • Registratie: Augustus 2002
  • Laatst online: 02-01-2024
Verwijderd schreef op donderdag 12 april 2007 @ 11:26:
[...]


de code wordt uitgevoerd zodra de focus van het veld af is waarin aan wordt gegeven hoeveel orderregels er moeten komen. tsja... rare eisen. ik weet het maar goed het is nu eenmaal zo. ze hebben betaald voor maatwerk en dit was 1 van de eisen.
Een eis waar de klant niks mee te zien heeft, imho. Weet de klant dat er betere oplossingen zijn, die nog eens minder lang duren om te implementeren en dus goedkoper zijn? Klanten die zich gaan moeien met technische implementatie, altijd miserie :X

If you can't beat them, try harder


Verwijderd

Topicstarter
Ik weet het... ik weet het...

Ik heb al zo vaak proberen duidelijk te maken dat het allemaal veel makkelijker/sneller kan. Het probleem is dat ie een klein beetje wat afweet van VB programmeren. Hij wil dit nou eenmaal..

Hij betaalt er overigens wel bizar veel voor :9

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op donderdag 12 april 2007 @ 11:32:
Hij betaalt er overigens wel bizar veel voor :9
Dan is het toch jouw taak als 'devver' om de klant in te lichten over hoe 'ie het meeste waar krijgt voor z'n geld? Ook al weet 'ie een beetje van VB, je kunt 'm altijd wijzen op betere oplossingen dan de oplossing die hij verzonnen heeft.

En als jij/je klant toch halsstarrig blijven vasthouden aan die textboxen dan zou ik dus gaan voor (as said) een usercontrol die iig al 1 'regel' vormt.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
RobIII schreef op donderdag 12 april 2007 @ 11:36:
[...]

Dan is het toch jouw taak als 'devver' om de klant in te lichten over hoe 'ie het meeste waar krijgt voor z'n geld? Ook al weet 'ie een beetje van VB, je kunt 'm altijd wijzen op betere oplossingen dan de oplossing die hij verzonnen heeft.

En als jij/je klant toch halsstarrig blijven vasthouden aan die textboxen dan zou ik dus gaan voor (as said) een usercontrol die iig al 1 'regel' vormt.
geloof me... ik heb er echt alles aan gedaan, zelfs van alles laten zien.. maar hij blijft er aan vasthouden.

een usercontrol ga ik dan maar proberen.

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Probeer eens gebruik te maken van de AddRange method v/d ControlCollection ipv iedere control apart te Adden via Add.

BeginUpdate() en EndUpdate() aanroepen zou ook al een verschil moeten maken. (En ik denk trouwens dat deze al door AddRange worden aangeroepen).

https://fgheysels.github.io/

Pagina: 1