Gordijn: Een HSplit om twee GridViews te schalen zoals in een spreadsheet

Doel:
Het scherm is in twee verdeeld: links en rechts een rooster met gegevens, ongeveer er uitziend als een rekenblad/spreadsheet.

De gegevens aan de linkse kant wil je altijd zien omdat ze vaste titels en gegevens van de rij bevatten, bv de naam van een persoon (naam, voornaam, geb.datum, in dienst datum), waarvan in de volgende kolommen gegevens te zien zijn, bv aanwezigheden in een maand.

Van het linkse rooster is de eerste kolom meestal genoeg, de andere gegevens zijn “verborgen” achter de data van het rechtse rooster. Maar af en toe wil je toch de andere gegevens raadplegen, bv even naar de geboortedatum kijken, en wil je het rooster wat breder maken. Het lijkt alsof je een gordijn opzijschuift.

Er zijn meer kolommen met gegevens dan het scherm breed is, dus het rechtse rooster kan horizontaal scrollen. Er zijn ook meer rijen dan het scherm kan weergeven, dus beide roosters scrollen ook vertikaal.

Je hebt dus twee gridviews nodig: GridView1 links en GridView2 rechts.
Met de HSplit kan je horizontaal een “schuiver” krijgen om twee elementen met een middengrip groter/kleiner te maken, horizontaal in dit geval. Maar om dat te kunnen is er een “hoger” element nodig, dat de twee gridviews omvat, en van waaruit de Split kan werken, hier een HBox.

Gebruik van HSplit met GridViews

In de IDE rechts bij eigenschappen (properties), tabblad “hierarchy” krijg je dan deze structuur (zie afbeelding).

Het vervelende is dat de twee grids hun eigen scrolbars hebben, en niet alleen horizontaal maar ook vertikaal afzonderlijk scrollen. Dan klopt de horizontale lijn van de gegevens niet meer.

Daar kan je wel manueel en mouw aan passen; bv het weergeven van log gegevens, linkse grid de titel of naam van een logitem, rechtse grid de gegevens of data die gelogd en weergegeven worden.

Als je in het linkse “names” grid naar beneden scrolt moet het rechtse data-grid meescrollen:

PUBLIC SUB grvwLogNames_Scroll()

  grvwLogData.ScrollY = grvwLogNames.ScrollY

END

En omgekeeerd ook natuurlijk; als je in de data scrolt moeten de namen meescrollen:

PUBLIC SUB grvwLogData_Scroll()

  grvwLogDataNames.ScrollY = grvwLogData.ScrollY

END

Bovendien is het handig dat een klik op het rechtse grid ook “werkt”, dwz eigenlijk hetzelfde doet als een klik op het linkse grid.

PUBLIC SUB grvwLogData_Click()

  grvwLogNames.Row = grvwLogData.Row
  grvwLogNames_Click

END

Gambas2 en Gambas3 op Fedora 15 – KDE

Ik gebruik een vers van DVD geïnstalleerde Fedora 15 (zonder updates) in KDE uitvoering.

In principe* kunnen Gambas2 en Gambas3 perfect naast elkaar draaien (* gelezen op de gambas mailinglist).

Als test selecteer ik de Gambas3 development environment met alle beschikbare onderdelen; ik klikte ze allemaal individueel aan om zeker alles te hebben.

Er werden automatisch een aantal bijkomende compenenten geselecteerd, bevestigd.

Ik installeer daarna ook Gambas2 bij, om eens te kijken of het conflicten geeft. Ook hier een aantal bijkomende packages voorgesteld, die ik bevestig (waaronder kde3 libs).

Na een paar keer net te lang wachten was ik toch eens op tijd voor het wachtwoord maar liep de installatie toch niet verder, dus ik sloot software installatie en startte het terug op.

Ik zoek op gambas2, krijg een lijst met alle gambas2 componenten. Zoals gezegd werkt CTRL-A niet (select all), en moet ieder pakket afzonderlijk aangeklikt worden. Ik zoek naar een verwijzing naar het complete pakket, of de IDE, dan wordt zoveel mogelijk mee geïnstalleerd: Gambas IDE, the complete gambas development environment.
Ik krijg een foutmelding dat een component dezelfde functionaliteit levert als een eerder geinstalleerde (nl bij Gambas3), en ik kan niet “skip” of “ignore” doen, alleen “ok”, wat eenvoudigweg afbreekt.

Ik verwijder de gambas3 scripter (die verdacht werd oorzaak te zijn van het overlappend pakket), en installeer daarna de gambas2 IDE (complete).

Gambas2 Examples en Gambas2 help worden niet automatisch mee-geïnstalleerd, selecteer apart en installeer.

Dan is het tijd voor een poging om de scripter van gambas3 terug te installeren: dat lukt niet (dezelfde foutmelding van overlapping). Misschien bestaat er nog een command-line manier om de installatie alsnog te forceren… mijn mijn experimentijd was om.

In het menu, onder “development” zijn nu zowel Gambas 2 (versie 2.23) als versie 3 (3.0 alfa; versienummer 2.99.5 – use at your own risk!) te starten.

Mail sturen vanuit Gambas

MailFromGambas Kies component “gb.net.smtp” in Project/Properties/Components.
Je krijgt dan beschikking over een smtp opject met volgende eigenschappen en methodes:

gb.net.smtp
 SmtpClient
   Add
   Alternative
   Bcc
   Cc
   From
   Host
   Port
   Send
   Subject
   To

De meeste eigenschappen kan je gewoon een tekstwaarde toewijzen, bv .Host = "..."
De lijst van de bestemmelingen wordt gegeven door de string .To.
Om een bestemmeling toe te voegen moet je To.Add("..") gebruiken, bv in een loop per adres dat je wil toevoegen.
Voor de inhoud van de mail .Add("..")
Attachments zijn halvelings voorzien maar lijken in 2.x versies (<2.21) niet altijd te werken (alleen te werken voor pure tekst).
Attachments hebben een type: IANN
Zie ook de documentatie van de gb.net.smtp module.

Een voorbeeld van code (die bij het schermvoorbeeld hoort):
Continue reading

Gambas in OpenSuse 11.1

Ik heb al een repository gevonden in de gbvalor reeks:

http://download.opensuse.org/repositories/home:/gbvalor/openSUSE_11.1/i586/

Toevoegen in het pakketbeheer (repository) in Yast2: in 1 keer plakken werkte niet (mogelijk vanwege de : in de url) dus opdelen ongeveer zo:

  • protocol http
  • server download.opensuse.org
  • directory repositories/home:/gbvalor/openSUSE_11.1/i586/

Bevestig de digitale sleutel van dit repository.

Zoeken naar software in Yast:

Zoek : “gambas2”

Een hele lijst met gambas2 onderdelen verschijnt. Klik rechts, select all.

Installeer; bevestig de afhankelijkheden (dependencies).

Resultaat:
Software menu, Development, gambas2 start Gambas 2.14

Update mei 2010:
* Aangezien dit de laatste openSuse versie is met de KDE 3.5 zou je voor deze versie kunnen kiezen, bv door een installatie van een net-install iso die je alsnog afhaalt van de opensuse site.
Als je na installatie in de repositories de “openSuse-Education” repository kiest, krijg je gambas versie 2.13 geïnstalleerd.

* Recenter: gbvalor
Ofwel de gbvalor repository toevoegen die ondertussen gambas versie 2.18 heeft:
http://download.opensuse.org/repositories/home:/gbvalor/openSUSE_11.1
en import de key.
Software management, zoek “gambas2”, de-installeer eventueel oudere versies; selecteer gambas2 nieuwe versie.

Volgorde tabs wijzigen in tabstrip?

TabStrip
Veronderstel dat je een tabstrip in elkaar stak zoals op de afbeelding. Maar nu is er een probleem; je wil dat gebruikers terechtkomen in de “algemene” tabstrip General. Helaas staat die achteraan, en de eerste wordt geopend.

  • Klik de “properties” kant van het scherm open (rechts) als dat nog niet gebeurd is. Klik bovenaan op Hierarchy. Daar zie je de onderdelen apart staan. Helaas zijn ze niet te selecteren om de volgorde te veranderen…
  • Ook klikken en slepen in de GUI gaat niet.

Oplossing gevonden:

Muiscursor boven het tabblad, rechtsklik; kies “Move tab”: “first” / “previous” / “next” / “last”, …Move First