[VB6] genereren van items op een SSTab

Pagina: 1
Acties:

  • sturkel
  • Registratie: Oktober 2001
  • Laatst online: 14:54
Ik ben bezig met een codegenerator die ook vb forms moet kunnen genereren.
Dit is voor zover geen probleem, maar ik heb wel problemen wanneer het form een SSTab object gebruikt.
Ik krijg het niet voor elkaar om de textboxen, labels, commandbuttons etc op een juiste wijze op de verschillende tabs te krijgen.
Elk object dat ik gebruik is geindexeerd van 0 tot ..., afhankelijk van het aantal tab vensters.
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
VERSION 5.00
Object = "{0D452EE1-E08F-101A-852E-02608C4D0BB4}#2.0#0"; "FM20.DLL"
Object = "{BDC217C8-ED16-11CD-956C-0000C04E4C0A}#1.1#0"; "Tabctl32.ocx"
Begin VB.Form frmXXX 
<properties>
   Begin TabDlg.SSTab SSTab1 
<properties>
      Style           =   1
      Tabs            =   5
      TabsPerRow      =   5
<nog meer properties>
      TabCaption(0)   =   "0101"
      Tab(0).ControlEnabled=   0  'False
      Tab(0).Control(0)=   "lblXXX(0)"
      Tab(0).Control(0).Enabled=   0   'False
      <etc>
      Begin VB.Label lblXXX
         BackColor       =   &H00800000&
         Caption         =   "XXX"
         ForeColor       =   &H00FFC0C0&
         Height          =   255
         Index           =   0
         Left            =   720
         TabIndex        =   1
         Top             =   1560
         Width           =   735
      End
End

Wat ik me afvraag is hoe de positie van de verschillende items gerangschikt worden in het .frm bestand en wat de invloed is van TabIndex.
Kan iemand hier meer uitleg over geven?

[AMD 64 X2 3800] [Asus a8n-e] [2048mb Kingston] [nvidia 7300GS] [2*Seagate160GB s-ata] [WD 120GB 8MB] [Plextor px-708a] [nec 4550]


  • Shuisman
  • Registratie: Maart 2004
  • Laatst online: 27-12-2025
Is TabIndex niet de volgorde wanneer je de objecten krijgt als je TAB indrukt ?!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
De positie in het .frm bestand lijkt me niet belangrijk daar er gewoon een .top en .left gebruikt wordt en een zindex waar nodig om "op elkaar liggende" controls op te slaan.
De tabindex property is precies wat het zegt: Als je op tab mept ga je van tabindex<laag> naar tabindex<hoog> door je controls (runtime).

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


  • sturkel
  • Registratie: Oktober 2001
  • Laatst online: 14:54
Dan heb ik het toch goed begrepen wat tabindex doet, maar nog niet opgelost hoe het komt dat de items niet op het juiste tabblad worden weergeven.
Waar het nu op lijkt is wanneer ik het .frm save in vb alle controls toegewezen worden aan tab(0), dus dat er niets overblijft voor de andere bladen.
Is hier een bepaalde volgorade voor nodig in het .frm bestan? Ik kan nl geen structuur zien in de manier waarop vb de objecten plaatst.

[AMD 64 X2 3800] [Asus a8n-e] [2048mb Kingston] [nvidia 7300GS] [2*Seagate160GB s-ata] [WD 120GB 8MB] [Plextor px-708a] [nec 4550]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
sturkel schreef op maandag 30 oktober 2006 @ 10:10:
Dan heb ik het toch goed begrepen wat tabindex doet, maar nog niet opgelost hoe het komt dat de items niet op het juiste tabblad worden weergeven.
Waar het nu op lijkt is wanneer ik het .frm save in vb alle controls toegewezen worden aan tab(0), dus dat er niets overblijft voor de andere bladen.
Is hier een bepaalde volgorade voor nodig in het .frm bestan? Ik kan nl geen structuur zien in de manier waarop vb de objecten plaatst.
Heb je VB6 geïnstalleerd staan? Maak dan eens een form met een SSTab er op en probeer het gewoon. Daarna is het een kwestie van de gegenereerde code bekijken (of even een DIFF op loslaten om de verschillen duidelijk te krijgen). Simple as that.

[edit]
Ik heb het even voor je geprobeerd; Een SSTab met 1 knop op de eerste tab, gesaved, daarna die knop naar de 2e tab verplaatst, gesaved onder een andere naam en een DIFF getrokken; Het resultaat:

Afbeeldingslocatie: http://tweakers.net/ext/f/e22884359589e7f9d05f3096c67ccb19/full.gif

Het lijkt me nu toch wel duidelijk hoe je bepaald op welke tab je control komt.

[ Voor 22% gewijzigd door RobIII op 30-10-2006 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


  • sturkel
  • Registratie: Oktober 2001
  • Laatst online: 14:54
RobIII schreef op maandag 30 oktober 2006 @ 10:13:
[...]

Heb je VB6 geïnstalleerd staan? Maak dan eens een form met een SSTab er op en probeer het gewoon. Daarna is het een kwestie van de gegenereerde code bekijken (of even een DIFF op loslaten om de verschillen duidelijk te krijgen). Simple as that.
Ik heb natuurlijk vb6 geinstalleerd staan...anders kon ik het project (met het gegenereerde form) niet openen.
Ik heb al meerdere malen een nieuw vb project gemaakt met een sstab window, maar ik krijg het niet voor elkaar dit te vergelijken(ultracompare en beyondcompare).
Elke keer ziet de indeling er weer anders uit.
Soms eerst textboxen dan weer een bepaalde volgorde op index...dus daar wordt ik niet wijzer van

[AMD 64 X2 3800] [Asus a8n-e] [2048mb Kingston] [nvidia 7300GS] [2*Seagate160GB s-ata] [WD 120GB 8MB] [Plextor px-708a] [nec 4550]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Zie mijn edit ;)

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


  • sturkel
  • Registratie: Oktober 2001
  • Laatst online: 14:54
Zover was ik ook gekomen, maar dan.
Als ik het project open staat alles goed, wanneer ik het run gaat het ook goed, maar save ik het bestand of maak er een executable van dan worden alle controls toegekend aan tab(0).
Hoe dit komt is mij een raadsel, maar mij lijkt het te komen door de volgorde van de objecten zelf, en niet het toekennen aan een bepaalde tab
code:
1
tab(index).control(x)=object

[AMD 64 X2 3800] [Asus a8n-e] [2048mb Kingston] [nvidia 7300GS] [2*Seagate160GB s-ata] [WD 120GB 8MB] [Plextor px-708a] [nec 4550]


  • sturkel
  • Registratie: Oktober 2001
  • Laatst online: 14:54
Ik heb het probleem opgelost.
Nu nog even de oplossing:
de volgorde van de tab(index).control(index) is niet van belang.
de volgorde van de controls zelf ook niet, maar wel de positie van de controls.
de positie (left) van de controls van het geselecteerde tabblad zijn relatief aan het 0 punt.
echter de posities van de andere controls (op de andere tabbladen) zijn gebaseerd op -75000 + de relatieve positie.
Om het eenvoudig te houden heb ik het eerste tabblad standaard gesecteerd en de controls met index 0 hierop geplaatst en de relatieve positie gegeven.
Hoop dat deze uitleg duidelijk is.

[AMD 64 X2 3800] [Asus a8n-e] [2048mb Kingston] [nvidia 7300GS] [2*Seagate160GB s-ata] [WD 120GB 8MB] [Plextor px-708a] [nec 4550]

Pagina: 1