Form leeg, schijnbaar; niets meer weergegeven, alle objecten verdwenen

FMain plots leeg
Ik weet niet exact wat er voordien gebeurd is, wel dat ik twee keer Gambas3 had openstaan naast elkaar (wat ik dikwijls doe) en dat ik objecten geknipt en geplakt had van de ene naar de andere (waarbij ctrl-v niet werkte en ik rechtsklik-plak heb gedaan. Misschien heb ik het programma laten draaien en liep het vast, of heb ik het onderbroken, geen idee.

Op een bepaald moment “run” ik het programma, en er komt niets op het scherm. Ik zie wel in de konsole (F11) dat het programma draait door de uitvoer van “print” en “debug” commando’s. Er staat een zeer klein venstertje op mijn scherm dat ik probeer groter te maken, maar dat lukt niet, het klapt terug klein, of verwijnt helemaal.

In de IDE is de Form FMain ook leeg. In de Hierarchy zie ik gelukkig de objecten nog wel allemaal staan. Als ik een (onzichtbaar) object selecteer, en naar de eigenschappen kijk, zie ik dat zowel de breedte, als de x-positie en de y-positie op 0 staan.

Deze eigenschappen terug invullen met een willekeurig getal, brengt het object terug in beeld (weliswaar met verkeerde afmetingen).

MoveScaled -2,-2 of onzichtbaar?
Ik kijk in de backup (van de ondertussen veranderde FMain.form: daar zie ik verschillende negatieve waarden in “MoveScaled”.

HBoxTrypoTables HBox
MoveScaled(-2, -2)

en andere die onzichtbaar staan:

HBoxCombi HBox
Visible = False

Ik denk dat vooral die negatieve waarden het probleem zijn…

Privé in de class: $

Wat prive gezegd wordt in de klasse, blijft in de klasse

Ik weet het al van lang geleden (zie naamgeving over gambas syntax), maar ik heb nu nog eens nagekeken of het in gambas3 ook nog zo gebruikt wordt, en ja.

Naming Conventions

The naming conventions are not required by the compiler. But programs which use the following naming conventions are easier to read by other programmers who want to understand the program.
Variable names

All private variable names of a class start with $

The first letter is lower case and should depend on the type of the variable

Voordeel van het markeren van de private variabelen in de klasse, is dat je gemakkelijk kan zien wat naar buiten gaat (nl alles waar geen $ voorstaat). Handig en belangrijk als je extern waarden toegespeeld krijgt en die moet verwerken in een private var in de klasse:

Private Sub checkGivenMonthYear(Optional iMonthIn As Integer, Optional iYearIn As Integer) As Boolean
'
If (iYearIn)
$iYear = iYearIn

Van buiten de klasse mag je dus geen $var tegenkomen, dan weet je dat er iets fout is. De publieke variabelen hebben dus een gewone naam, van buitenaf zichtbaar, en geen $ teken.

Voorbeeld uit de Gambas 3.18 bronccode, FMain.class:

' Gambas class file
'
Public NoMessage As Integer
'
Private $hProjectTree As CProjectTree
'
Private $sKey As String
Private $bCtrl As Boolean
Private $bInRename As Boolean
'
Private frmWelcome As FWelcome

(dus niet voor een Form)

HSplit werkt niet meer

Gordijn kapot
Bij de laatste upgrade van mijn Linux+KDE systeem en bijhorende Gambas (naar 3.18.0), werkte één van mijn programma’s niet meer naar behoren. De verdeling van de gebieden op het scherm die met een HSplit van elkaar gescheiden zijn, zijn getroffen door een “bug”. Die HSplit werkt als een soort gordijn, je kan die vertikale lijn tussen twee gebieden “in de HSplit” vastnemen en naar links of naar rechts trekken, zodat een bepaald gebied vergroot en het andere automatisch verkleint.

Ik heb een aantal gridviews in de HSplit, en tot nu toe werkte dat perfect. Maar na die update gebeuren er eigenaardige dingen; als ik een vertikale lijn wil opschuiven naar links bv, verandert de vertikale lijn van een andere gridview van plaats op het scherm. Het lijkt of je een andere lijn vasthebt bij het verschuiven, bv de volgende splitter lijn.

Buiten gebruik?
In het menu valt me ook op dat de “HSplit” niet meer voorkomt, wel een “Splitter”.
Als ik een bestaande HSplit selecteer zie ik er een symbool van doorstreepte cirkel op staan, en krijg ik geen eigenschappen rechts. Voelt erg “depricated”? Maar daar wordt niets van vermeld op http://gambaswiki.org/wiki/comp/gb.qt4/vsplit.

Ik vind wel een verwijzing in de mailinglist:

Re: [Gambas-user] Unnecessary duplication?
User namens
Bruce Steers 27-06-2022
Naar Gambas Mailing List


It’s rare to actually remove anything. many things are depreciated like for example HSplit and VSplit changed to one single Splitter container but VSplit and HSplit are not gone and still work for programs using it.

Daaruit leid ik af dat ik de HSplit en de VSplit moet vervangen door “Splitter“. Aangezien Splitter algemener is zal je moeten aangeven wat de richting is (H/V).

Backward (in)compatible
En ook omgekeerd ondervind je problemen: als je met 3.14 een project opent van 3.18 waarin de nieuwe Splitter gebruikt wordt, krijg je een foutmelding.

ProjectName > Sources > FormName
Cannot open file.
Unknown control: Splitter

Daar kan je verder dan niet veel aan doen op dit systeem…

HSplit Parameters
Verder lijkt er ook iets foutgegaan te zijn met de parameters van het bewaren van de HSplit instellingen:

Hoe moet het nu juist? Hoe kan ik “compatibele” code maken voor 3.14?
'Try HSplit1.Settings = ["150,120,600,300,160"]
Try HSplit1.Settings = [150, 120, 600, 300, 160]
'Splitter1.Settings = Settings["Screen/Splitter", "150,600,300,160"]

In het settings bestand vind ik verschillende sporen:
Splitter="0,188,977,131,276"
Splitter.Layout=[189,283,364,562,0]

(wordt vervolgd als ik daar problemen mee ondervind)