Brian Long (www.blong.com)
Vertaling: A.G. van der Heijden
In dit eerste deel van een cursus over Borland's Kylix ontwikkelingsomgeving maakt Brian Long duidelijk hoe je Kylix moet installeren en hoe je GUI applicaties kunt maken.
Dit artikel verscheen voor het eerst in Linux Format nummer 19, oktober 2001.
Klik hier om de met dit artikel verbonden bestanden te downloaden.
Kylix is een component-gebaseerd RAD programma van Borland, ontworpen voor het bouwen van console en X applicaties voor Linux, en omvat een broncode editor, een grafisch formulier ontwerper, een ObjectPascal optimaliserende compiler, een Linux ELF linker en een geintegreerde debugger.
Kylix bestaat nu een aantal maanden. Indertijd in februari 2001 lanceerde Borland twee commerciele versies van Kylix (de Desktop Developer Edition en de Server Developer Edition), die database en webserver applicaties konden maken voor Linux. Met die versies kun je hetzij GPL software of commerciele software maken.
Uiteindelijk heeft Borland de Kylix Open Edition gelanceerd. Deze is beschikbaar voor download vanaf Borland's Web site en ook op CD. Dit is een populair product; op de eerste morgen dat het beschikbaar was, werd het 100.000 keer gedownload. Kylix Open Edition geeft u de mogelijkheid GPL software te schrijven in een vaste ontwikkelomgeving en deze lessenserie gaat over hoe u het programma kunt gebruiken en wat u ermee kunt doen.
Laten we eerst eens kijken naar de installatie van Kylix. Kylix en in mindere mate de applicaties gemaakt met Kylix hebben zekere behoeften, die vervuld moeten worden voor een succesvolle installatie kan plaatsvinden. Borland heeft bijpassende updates gemaakt zodat Kylix ook werkt op bepaalde speciale Linux distributies. Andere distributies verlangen (tot heden) dat u dergelijke update bestanden zelf opspoort.
Ondersteunde distributies voor Kylix 1 en Kylix 2 zijn:
Ondersteunde distributies voor Kylix 3 zijn:
Vanwege bepaalde punten met sommige algemene Linux libraries (dat wil zeggen dat Kylix's eisen niet nagekomen worden) is het noodzakelijk om een bijgeleverd controle programma te draaien voorafgaand aan de installatie. Het programma controleert of de kritieke libraries in een passende versie voorhanden zijn en u bij installatie niet in de problemen komt.
Kylix vereist:
Er is ook een punt met een onder Linux uitvoerbare lader, dat problemen veroorzaakt voor Kylix en de met Kylix gemaakte programma's. De moeilijkheid is verholpen in glibc 2.2, maar Kylix komt met patches die het probleem repareren in glibc 2.1.2 op de ondersteunde distributies (deze patches lijken niet verspreid te worden in de Kylix Open Edition download en moeten dus opgehaald worden van de Borland Web site of andere locaties).
Aangenomen dat uw CD gekoppeld is en het koppelingspunt is /mnt/cdrom, zal het onderstaande commande het pre-installatie test programma draaien.
cd /mnt/cdrom/borpretest
./testsystem
U ziet de uitvoer bij een passende distributie in Figuur 1. Als het programma echter meldt, dat een van de libraries niet recent genoeg is, zult u die moeten vernieuwen. Het bestand /mnt/cdrom/PREINSTALL legt de procedure uit voor het vernieuwen van de JPEG library en glibc op de ondersteunde distributies. Voor andere distributies zult u de vernieuwde libraries zelf moeten opsporen en installeren.
Figuur 1: Wat het pre-installatie test programma meldt op een passende distributie

Als de systeem libraries eenmaal geaccepteerd zijn kunt u verder met de installatie van Kylix zelf:
cd /mnt/cdrom
sh setup.sh
Als u de GTK bibliotheek op uw computer heeft geinstalleerd, draait het installatieprogramma als een GUI X applicatie (zie Figuur 2), anders draait hij als een gewoon console programma, met overigens precies dezelfde functionaliteit. Het bestand /mnt/cdrom/INSTALL bespreekt hoe u de software het best kunt installeren. In het kort wordt aanbevolen dat u als root inlogt om de installatie uit te voeren, maar dat u Kylix niet installeert onder de /root directory (installeer hem liever in /opt/kylix or /usr/local/kylix).
Figuur 2: Klaar om Kylix te installeren

Het link pad moet ingesteld worden op een directory van de computer, omdat daar de scripts geinstalleerd moeten worden die gebruikt worden om Kylix aan te roepen, alsmede het Kylix help systeem en ook de Kylix commando-regel compiler.
Als Kylix eenmaal is geinstalleerd, zou u X moeten herstarten om alle menus aangepast te krijgen. Zorg er daarbij voor dat u als gewoon gebruiker bent ingelogd. Meer nuttige informatie over Kylix kunt u vinden in /mnt/cdrom/README, terwijl informatie over het gebruiken van uw Kylix programma's staat in /mnt/cdrom/DEPLOY.
Kylix kan nu worden gestart, hetzij via het menu, of vanaf de commando regel met het commando startkylix. startkylix is een script bestand dat de bijpassende pad-informatie regelt voordat Kylix zelf wordt gestart.
De eerste keer dat u Kylix start, verschijnt een wit venster op het scherm waarin u verteld wordt dat de fonts worden aangemaakt. U kunt dat veilig negeren en u zult het venster normaliter niet meer terugzien. Als dit stukje huishoudelijke taak geregeld is, verschijnt de Kylix Integrated Development Environment (IDE) op het scherm (zie Figuur 3).
Figuur 3: De Kylix IDE wacht op gebruik

Er is nogal wat te weten over de IDE, dus laten we maar eens naar de verschillende vensters kijken. Het bovenste venster (Figuur 4) heeft niet echt een naam, en wordt dus aangeduid als het hoofdvenster (als u dit venster sluit, wordt tegelijk Kylix afgesloten). Het hoofdvenster bevat de belangrijkste menus (die vele submenus bevatten), en ook verschillende uitschakelbare en aanpasbare werkbalken. Deze balken bevatten een hele serie knoppen, die dienen als vervanging van de menu onderdelen. U kunt de balken overal op het hoofdvenster zetten, of u kunt ze loskoppelen (ze veranderen in aparte verplaatsbare vensters) door ze te slepen bij de verticale dubbele balk (die grabber wordt genoemd). U kunt ook aangeven welke knoppen u wilt zien en op welke manier ze moeten verschijnen.
Figuur 4: Het hoofdvenster van Kylix bevat menus, hulpbalken en het Component Palet

Wat nog overblijft op het hoofdvenster is de getabulariseerde afdeling met de naam Component Palet (dit deel kan ook losgekoppeld worden, als u dat wilt). Dit is een heel belangrijk venster, omdat het alle onderdelen toont die beschikbaar zijn voor het ontwerpen van formulieren in uw programma.
Een component is een programma object dat gebruikt kan worden bij het GUI ontwerp van Kylix, zoals een knop of een edit icoon. Als u uw muis boven de verschillende icoontjes van het Component Palet houdt, verschijnen er teksten met uitleg over de naam ervan. Elke component heeft een bijbehorend data type. Bijvoorbeeld de component 'button' is van het type TButton, en heeft een verklarende tekst die meldt Button; zo ook is de 'checkbox' component van het type TCheckBox en heeft de tekst CheckBox.
Kylix gaat vergezeld van een bibliotheek van componenten genaamd CLX, wat staat voor Component Library for Cross-platform (waarbij Cross uiteraard een X wordt in de afkorting). De Server Developer Edition heeft ongeveer 165 componenten, de Desktop Developer Edition heeft er ongeveer 130, terwijl de Open Edition er zo'n 50 heeft. Dat is nogal wat minder dan in de versies waarvoor u moet betalen, maar er zit een hoop potentie in deze componenten, dus vreest niet.
De 50 componenten van de Open Edition zijn verdeeld over vier tabbladen, of "pagina's". Net als de werkbalken is het Componenten Palet aanpasbaar (klik er met de rechtermuisknop op en kies Properties, of kies het Component menu en kies dan voor Configure Palette).
Een formulier is een algemene term voor hetzij een venster (een leeg formulier) of een dialoog (een standaard formulier). U ontwerpt alle formulieren op dezelfde manier, en u kunt ze vertonen in een leeg formulier of in een standaard formulier om het effect van een venster of een dialoog te krijgen.
Tenzij u een console programma ontwerpt, zullen de meeste Kylix programma's tenminste een formulier hebben. Elk formulier wordt visueel ontworpen middel de Form Designer door de componenten erop te plaatsen waarvan de startwaardes worden bepaald in de Object Inspector. U ziet een lege Form Designer (dat wil zeggen zonder componenten erop geplaatst) in het Figuur 3: het uiterlijk van het IDE scherm. Het is het grote venster met Form1 erop, gestippeld en wel.
De stippen geven het raster aan waar de componenten zichzelf positioneren als ze op het formulier worden geplaatst, een hulpje bij de uitlijning dus (elke raster eenheid komt op 8 pixels voor hoogte en breedte). U kunt de Form Designer aanpassen, en daarbij ook de dichtheid van het raster en de zichtbaarheid ervan op de Preferences pagina van de Environment Options dialoog (zie Figuur 5), te vinden op het Tools menu.
Figuur 5: Verander uw Kylix instellingen hier, als u wilt

Om de componenten op een formulier te plaatsen, klikt u op het bijbehorende icoon op het Component Palet en daarna op de Form Designer. Een copie van de component verschijnt dan op de Form Designer en u kunt deze slepen en vergroten of verkleinen zoals u wilt. De Form Designer zelf kan ook worden aangepast, omdat hij immers een formulier voorstelt in uw programma. U kunt net zoveel componenten op de Form Designer plaatsen als u wilt (zie Figuur 6).
Figuur 6: De Form Designer met een aantal componenten erop

De Object Inspector staat het uiterlijk van de IDE, links van de Form Designer. De Object Inspector toont de openbare eigenschappen van de gekozen component en geeft u de mogelijkheid de startwaardes daarvan aan te passen. Daarmee kunt u de eerste verschijning van uw formulieren passend maken aan uw wensen. Bijvoorbeeld kunt u de tekst van een knop aanpassen middels de Caption eigenschap.
Een enkele klik op een component in de Form Designer selecteert de betreffende component (de knop met de tekst Button2 is geselecteerd in het plaatje hierboven), waarmee u hem kunt verplaatsen, groter of kleiner maken of de properties ervan aanpassen (zie Figuur 7). U kunt ook verschillende componenten tegelijk selecteren, hetzij door ze te omcirkelen (trek een rechthoek op de Form Designer die alle geselecteerde componenten raakt of insluit) of door de eerste aan te klikken en de rest te Shift-klikken (druk de Shift toets in en klik vervolgens alle gewenste componenten).
Figuur 7: Button2's openbare eigenschappen

Niet alleen kunt u middels de Object Inspector de eigenschappen aanpassen, hij vertelt u ook de naam van de component en het type ervan. De instance list aan de bovenkant van de Object Inspector (zo genoemd omdat hij alle component copieen in de Form Designer opsomt, zodat u ze kunt selecteren) toont het type van de component, voorafgegaan door de naam ervan. De component naam kunt u ook lager in de Object Inspector zien als de waarde van de eigenschap Name. Omdat hij verschijnt als eigenschap op de Object Inspector, kunt u de naam ervan ook wijzigen net als elke andere eigenschap.
Net onder de instance lijst, zie u in de Object Inspector twee tabbladen, waarbij momenteel de Properties tab actief is. Het andere tabblad (Events, zoals te zien in Figuur 8) toont alle events die bij de gekozen component zouden kunnen voorkomen. Dit is het eerste mechanisme waarmee u Kylix programma's kunt maken; u schrijft de code die uitgevoerd wordt in reactie op component events (in routines aangeduid als event handlers). Bijvoorbeeld, als de gebruiker een TButton component indrukt, wordt zijn OnClick event gestart. Uw OnClick event handler voor de knop kan een formulier tonen, een andere toepassing lanceren, het programma beeindigen of wat u maar wilt.

U maakt event handlers door het dubbelklikken in de rechterkolom achter de betreffende event (of door de event te kiezen in de Object Inspector en het indrukken van Ctrl+Enter). U schrijft de event handler code in het andere venster dat standaard open gaat als Kylix start - de code editor (zie Figuur 9). Gewoonlijk bevindt hij zich achter de Form Designer, proberend niet op te vallen, totdat we wat code moeten schrijven (hij springt naar voren als u een nieuwe event handler aanmaakt). De editor kan meerdere bestanden tegelijk open hebben, en het is ook mogelijk om meer editors tegelijk geopend te hebben (View | New Edit Window). Het plaatje hierboven toont een nieuwe event handler voor Button1's OnClick event.
Figuur 9: De Kylix source editor

Met ontwikkelen van programma's met Kylix omvat het plaatsen van componenten op formulieren, en daarna het schrijven van de code voor de event handlers van die componenten en formulieren. De event handlers kunnen de objecten manipuleren door hun eigenschappen aan te passen, of door het aanroepen van hun methods (de subroutines gedefinieerd binnen elk object) of ze kunnen gebruik maken van enig ander onderdeel van de CLX bibliotheek. Ontwikkelprogramma's als Kylix volgen hiermee een PME component model, wat staat voor componenten die gestuurd worden via Properties, Methods en Events.
Genoeg inleidend gepraat - laten we een programma maken. Om een vers project te starten voor een uitvoerbare GUI applicatie, kiest u File | New Application. Kylix kan verschillende types uitvoer aanmaken:
We beginnen met het tijdloze Hello World programma, en gaan daarna verder met iets dat een beetje meer uitdagend is. Zet een knop op de Form Designer, en gebruik de Object Inspector (op de Properties pagina) om de Caption eigenschap in te stellen op: Hello World. Schakel nu om naar de Object Inspector's Events pagina en ga naar de OnClick event, die gestart wordt als de knop wordt ingedrukt (d.w.z. aangeklikt). Klik twee keer in de rechter kolom (of kies de event en druk op Ctrl+Enter) om een event handler aan te maken voor de event. Op de lege regel tussen begin en end voert u deze regel in:
ShowMessage('Hello World')
ShowMessage is een simpele CLX routine die een tekst produceert die overeenkomt met de titel van de applicatie (standaard de uitvoerbare naam). Om dit programma te testen kiest u Run | Run, of u drukt op F9 (of op de knop met de groene driehoek erop). Kylix zal uw broncode compileren en linken tot een uitvoerbaar programma en daarna dat programma starten. Het programma verschijnt als een grijs formulier met dezelfde omvang als de Form Designer die u gebruikte, met een knop erop. Als de knop wordt ingedrukt, verschijnt een berichtvenster met de woorden Hello World (getoond in Figuur 10).
Figuur 10: Ons eerste Kylix programma

U merkt ook dat bij het starten van het programma de Kylix Open Edition melding verschijnt en gedurende drie seconden blijft staan (getoond in Figuur 11). Merk op dat elke poging deze melding te veranderen in strijd is met de Kylix Open Edition licentie, maar het is nuttig te weten dat aanklikken ervan de tekst doet verdwijnen. Bovendien kan de -ns commandoregel parameter aan elke Open Edition applicatie worden doorgegeven, waardoor de melding helemaal niet verschijnt. Vanaf de IDE kunt u commandoregel argumenten opgeven door te kiezen voor Run | Parameters... en ze in te voeren in het veld Parameters .
Figuur 11: De Open Edition applicatie tekst (of plaagscherm, als u wilt)

Als u klaar bent met experimenteren met dit simpele programma, sluit het dan en de Kylix IDE komt weer op de voorgrond.
Ga nu terug naar de ShowMessage aanroep in de editor, en voeg er een aantal extra regels aan toe, zodat de event handler er als volgt uit ziet:
procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.Caption := DateToStr(Date);
Button1.Hide;
ShowMessage('Hello World')
end;
Naast het aanroepen van een algemene meldingsscherm routine, verandert de event handler van de knop nu ook de tekst in de huidige datum (door een datumstring aan de Caption eigenschap toe te voegen) en roept ook een method aan die de knop verbergt. Als u het programma weer draait (F9), zou u alleen maar in staat moeten zijn om de knop eenmaal in te drukken om de tekstbox te doen veschijnen, omdat hij verdwijnt als u dat gedaan heeft.
Dit triviale programma heeft alle wezenlijke elementen van een Kylix applicatie:
Dit zijn de zaden die in al onze Kylix applicaties vanaf nu zullen groeien. Maak u niet teveel zorgen over de Object Pascal syntax. We behandelen de belangrijkste delen daarvan terwijl deze lessenserie voortschrijdt.
Op dit punt kunt u dit project weggooien. File | Close All vraagt u het project te bewaren, maar als u op de No knopt drukt, zal Kylix de hele zaak laten vallen.
Het volgende project wordt een simpele tekst editor. We gaan na hoe iets dergelijks gemaakt moet worden in het volgende hoofdstuk, omdat we daar wel een nieuw hoofdstuk voor nodig hebben. Echter: de project bestanden kunnen gedownload worden door hier te klikken. Copieer de bestanden in een directory op uw computer en kies dan vanuit Kylix voor File | Open Project... en open vervolgens TextEditor.dpr.
Als u het programma draait zult u zien dat het een simpele tekst editor is, die u toestaat tekstbestanden te openen, bewerken en bewaren en ook nieuwe tekstbestanden aan te maken. Hierin zetten we de volgende keer onze tanden en we gaan er plaatjes en werkbalken en dergelijke aan toe voegen in de loop van de tijd. Bovendien kijken we in het volgende hoofdstuk naar de bestanden die voor Kylix projecten worden aangemaakt en gaan we ons bezig houden met het maken van enige echte code.
Figuur 12: Het project van hoofdstuk 2 is een tekst editor

Brian Long werkte eertijds voor Borland UK, waar hij een heel aantal verplichtingen had waaronder Technische Ondersteuning voor alle programmeer applicaties. Sinds hij in 1995 wegging, heeft Brian training en consultancy diensten verleend aan de Delphi en C++Builder gemeenschappen, en de zich nieuw vormende Kylix gemeenschap.
Als u training nodig hebt in deze producten, of oplossingen moet hebben voor problemen ermee, neem dan contact op, of bezoek Brian's Web site.
Behalve het schrijven van een Borland Pascal probleem-oplossend book gepubliceerd in 1994, is Brian een regelmatige columnist in The Delphi Magazine en heeft hij talloze artikelen gepubliceerd in Developer's Review, Computing, Delphi Developer's Journal en EXE Magazine. Hij werd genomineerd voor de Spirit of Delphi 2000 prijs.
In zijn vrije tijd (en tijdens het wachten op de compilatie van zijn C++ programma's) heeft Brian zichzelf de kunst van het jongleren aangeleerd en het maken van opblaasbare origami papieren kikkers.