
Arvidsson Thomas
Magnusson Håkan

Developing of PAM-dialogue in Visual Basic 5.0
together with a comparison of
Visual Basic 5.0, Delphi 3.0, Symantec Visual Café
Arvidsson Thomas
Magnusson Håkan
Detta examensarbete är utfört vid Ingenjörshögskolan i Jönköping inom ämnesområdet datateknik. Arbetet är ett led i den treåriga högskoleingenjörsutbildningen. Författarna svarar själva för framförda åsikter, slutsatser och resultat.
Handledare: Gustavsson Thomas
Omfattning: 10 p (C-nivå)
Datum: 1999-09-07
Arkiveringsnummer:
Abstract
This report will show how we have put together and described what conclusion we have come to in our examination report.
You can say that this examination report consists of two different parts. One part considers the development of PAM-dialogue that is a text based order system. By leads of the text based system we have take out a model for the PAM-dialogue. The developing have had been made in Visual Basic 5.0.
The other part consists of a comparison of three developing tools, Visual Basic 5.0, Delphi 3.0 and Symantec Visual Café 1.0.
When we did the comparison we developed a small application in Visual Basic for a start and when we have had progressed, we tried to do the same application in the two other tools. When we developed the applications we used the Wizards to create the applications for us. These Wizards are very helpful what ever you would like to create.
The conclusion that we have come to in the comparison part is that Visual Basic and Delphi are tools of very high standard, when it comes to user friendliness and effectivity. If we had to choose one of these tools, we would prefer the Delphi tool. That makes Delphi a winner is that we have experienced that Delphi is more powerful than the others are.
Symantec Visual Café 1.0 is not the same generation as the other two, so the comparison feels a bit wrong to do. But we have discovered that this tool is a bit tricky to build big applications in. For small applications and applets it is a very nice tool to work with.
Sammanfattning
Denna rapport visar hur vi sammanställt och redovisat vad vi kommit fram till med vårt examensarbete.
Man kan säga att examensarbetet omfattar två delar. En del behandlar utvecklingen av PAM dialogen vilken är ett textbaserat ordersystem. Det vi gjort är att med ledning av det textbaserade systemet tagit fram en grafisk modell. Utvecklingen har skett i Visual Basic 5.0.
Den andra delen handlar om en jämförelse av tre grafiska utvecklingsverktyg, Visual Basic 5.0, Delphi 3.0 och Symantec Visual Café 1.0.
I jämförelsen har vi gjort små applikationer i vart och ett av de tre verktygen, detta för att se hur pass mycket hjälp man får av de wizarder som finns.
Det vi kommit fram till rörande jämförelsen är att både VB 5.0 och Delphi håller mycket hög klass beträffande användarvänlighet och kraftfullhet. Man kan säga att om man skulle utse ett av dessa två skulle nog Delphi vara det vi skulle satsa på. Det som gör Delphi till vinnare är att vi upplever det som något mer kraftfullare samt att det är något lättare att komma igång med, eftersom man känner igen sig från tidigare versioner.
Vad beträffar Symantec Visual Café 1.0 så är inte det samma generation som de båda andra verktygen, därför känns det inte riktigt rätt att jämföra detta med de andra två. Men det vi kommit fram till är att det är ett ganska svårbemästrat verktyg när det kommer till att skapa större applikationer. Men för små applikationer eller applets är det ett utmärkt verktyg.
Innehållsförteckning
1. Mål *
2. Planering och genomförande *
2.1. Introduktion *
2.2. Inledning *
2.2.1. Analysfas *
2.3. Under tidens gång *
2.4. Avslutningsfas *
3. Resultat *
3.1. Pam *
3.2. Skrivbordet *
3.2.1. Multiple-Document Interface (MDI) *
3.2.2. Formulär *
3.2.3. Inloggning *
3.3. Jämförelse *
3.3.1. Visual Basic 5.0 *
3.3.2. Delphi 3.0 *
3.3.3. Symantec Visual Café *
3.4. Sammanfattning av resultatet *
4. Diskussion *
4.1. Diskussion om PAM *
4.2. Diskussion om Jämförelsen *
5. Referenser *
6. Sökord *
7. Bilagor *
Bilaga 1 Visual Basic 5.0 *
Bilaga 2 Symantec visual café *
Bilaga 3 Delphi 3.0 *
Bilaga 4 Källkod PAM *
7.1.1. Form login *
7.1.2. Form Main *
7.1.3. Form Treelist *
7.1.4. Form Specifikation *
7.1.5. Form Registrering *
7.1.6. Form Kund *
Detta arbete tas fram i samarbete med ABB infosystems.
Målet är att skapa en grafisk användarmiljö utifrån ett befintligt textbaserat gränssnitt. Verktyget för att utveckla applikationen skulle vara Visual Basic 5.0. Målet har också varit att närmare studera och utröna vad som går att göra för att öka användarvänligheten, med tanke på att utvecklingen har utgått från ett befintligt system. Ett delmål med arbetet har varit att ta fram en ny dialog till ett befintligt order och ekonomistyrningssystem hos ABB infosystems. Kravet från ABB's sida har inte varit att ta fram en version av dialogen i vart och ett av de ovan nämnda verktygen, utan endast en modell i verktyget VB 5.0.
Ett annat mål har varit att göra en utvärdering av VB 5.0 och dess möjligheter mot de möjligheter som står att få hos konkurrerande verktyg som Delphi 3.0 och Symantec Visual Café 1.0.
När det var dags att börja se sig om efter examensarbete så kontaktades en del intressanta företag för att höra om det fanns något intressant att erbjuda. Det fanns också en del egna idéer som kunde tänkas utvecklas. Efter att ha varit runt bland företagen i regionen så visade det sig att en av dessa idéer stämde ganska väl överens med de förslag som ABB infosystems kunde erbjuda. Deras idé var att ta fram en ny modell till sitt befintliga system "PAM dialogen".
ABB infosystems önskade också en jämförelse av Visual Basic, Delphi och Visual Café.
Då det bestämts att erbjudandet från ABB skulle antas, kontaktades företaget för vidare upplysningar om vad arbetet skulle innebära mer exakt.
Det upprättades en muntlig kravspecifikation från ABB och handledaren Lars Einarsson.
Då bekantskap med handledaren hade instiftats över en kopp kaffe och wienerbröd så drogs de riktlinjer upp utifrån vilka, utvecklingen av PAM dialogen skulle utföras. Det bestämdes även att en utvärdering av tre grafiska verktyg, Visual Basic5.0, Delphi3.0 och Visual Café 1.0. Denna utvärdering vara en bekräftelse på deras beslut om att anta VB 5.0, som deras nya plattform, var riktigt beslut. Eftersom bekantskap med VB 5.0 från vår sida saknades, var det nödgat att införskaffa denna kunskap om detta programspråk.
I den utvärdering som skulle göras mellan de ovan nämnda verktygen så blev det nödvändigt att skaffa fram dessa programvaror samt då också litteratur om vart och ett av de tre verktygen. För att få en uppfattning av vad de olika verktygen kunde prestera så gjordes en ganska omfattande litteratursökning dels på bibliotek och via Internet. Här visade det sig att litteraturen till de verktyg som valts var omöjlig att uppbringa hos både företaget och biblioteket. Den enda möjlighet hade varit att köpa dessa hos någon bokhandel men eftersom en students kassa är starkt begränsad valdes att läsa några äldre böcker till valda verktyg. Den mesta informationen om verktygen blev överkomlig via Internet.
För att komma igång studerades ett äldre Pam-system. Utifrån detta gamla PAM system skulle en ny applikation utvecklas i Visual Basic 5.0.
För att få en förståelse för hur det gamla systemet var uppbyggt, så tillhandahölls en äldre användarmanual och kod till den grafiska applikationen som låg ovanpå det textbaserade systemet vilket utgör själva Pam-systemet.
Av handledaren ficks tydliga instruktioner för hur ABB hade tänkt sig att systemet skulle se ut för att det skulle fungera ute hos sina kunder.

Figur 1 Objektmodellen som vi arbetat efter
Objektmodellen som arbetet har utgått ifrån är en grov modell och är ej komplett. Den PAM dialog som utvecklats endast är ett förslag till hur den nya dialogen skulle kunna se ut, fanns ingen anledning till att förfina objektmodellen. Eftersom dialogen är ett utvärderingsförslag så finns inte alla formulär med, då detta endast skulle innebära ett repetitivt arbete.
Man önskade vidare att den layout som fanns i den tidigare versionen skulle bibehållas i så stor utsträckning som möjligt. Detta för att de vana användarna inte skulle behöva någon speciell inkörningstid. Man ville också förenkla dokumenthanteringen vid registreringar och ändringar.
Då VB 5.0 fanns tillgängligt föll det sig naturligt att utvecklingen av dialogen skedde vid hemmets härd.
Under tiden det tagit att färdigställa produkten så har det hela tiden hållits en god kontakt med handledaren på ABB. Detta för att på så vis få ytterligare information om hur det befintliga systemet är uppbyggt och samt få feedback på det arbete som gjorts och för att se om det varit några andra idéer som kommit fram under tiden som projektet löpt. Och i så fall vad och hur det ska se ut och hur det ska appliceras.
Det har framkommit en del önskemål under tiden om hur programmet bör vara utformat för att det ska bli en produkt som är användarvänlig och lätt tillgänglig.
För att göra en rättvis bedömning av dessa tre verktyg så har det tagits fram små modeller för vad man kan göra i ett verktyg, och sedan testat om det varit lika enkelt eller svårare i de två andra verktygen. Den första lilla modellen gjordes med VB 5.0 (se Bilaga 1) och sedan gjordes samma databaskoppling i de andra två verktygen(se Bilaga 2 -3). Modellerna togs fram med hjälp av de befintliga wizarderna för databaskoppling..
När programmeringen avslutats så överlämnades programmet till ABB för att de skulle kunna göra en utvärdering av det framkomna resultatet.
Då slutet närmade sig så var det ju dags att ta tag i rapporten som skulle färdigställas. rapporten har skrivit på under hela arbetets gång, det som skrivits har i princip bara varit stödanteckningar, dessa anteckningar har sedan legat till grund för rapporten.
Det program som vi utvecklat för ABB's räkning är en vidareutveckling av ett befintligt ekonomistyrningssystem. Det befintliga systemet är ett textbaserat client/server system, för att hantera fakturor order mm. Man har tidigare gjort en grafisk applikation av systemet vilket var en direktkonvertering av textsystemet.
I och med att vi inte har haft tillgång till den databas som programmet ska jobba mot så har vi inte kunnat genomföra alla de finesser som VB 5.0 möjliggör. Man hade då kunnat använda sig av de olika "wizarder" som finns för att t.ex. koppla en databas till programmet.
ABB ville att programmet skulle ha en egen arbetsyta som kunde appliceras på hela skärmytan.
Skrivbordet är huvudformulär och är ett SDI (Singel Document Interface) formulär, i detta formulär ryms sedan de MDI formulär som skapas allt efter behov.
Figur 2 Skrivbordsyta i Pam dialogen
När man använder sig av MDI så tillåts man att skapa en applikation som innehåller multiplar av ett eller flera olika formulär i ett och samma huvudformulär. Det är då viktigt att alla fönster som är skapade i ett och samma huvudfönster hänger samman, så att när man minimerar huvudfönstret så minimeras alla fönster som är skapade inom huvudformuläret, detta är en fördel om man använder sig av flera program samtidigt
I och med att programmet är MDI baserat så kan ett flertal olika fönster vara öppna samtidigt, detta för att underlätta fönsterhanteringen. MDI gör att det finns möjlighet att ha flera fönster av samma typ öppna samtidigt. När användaren klickar på knappen för nytt dokument så skapas ett nytt fönster ett så kallat barnfönster av t.ex. projektregistrering. Varje förekommande dokument får på detta sätt ett eget fönster, vilket gör att användaren kan arbeta med flera dokument samtidigt. Varje nytt fönster får ett eget namn, i detta fallet får fönstret samma nummer som det ordernummer som dokumentet har. Om man känner till ett visst ordernummer så kan man fylla i det och på sätt få fram det dokumentet som har just det ordernummret, detta är bra om man vill ändra på något. En annan fördel med MDI i detta fallet är att man kan göra flera registreringar efter varandra utan att behöva uppdatera databasen, om det skulle visa sig att man behöver ändra något innan man uppdaterar databasen. Genom att klicka på databasknappen så sparas dokumentet i databasen

Varje formulärhuvud ges det specifika ordernummer som ges till varje ny order för att man enkelt ska hitta det fönster som avses.
Det finns tre olika typer av formulär:

Figur 4 Formuläret för Projektregistrering




Vid uppstartsförfarandet ges man en möjlighet att logga in sig till databasen, denna möjlighet kan man även komma åt inifrån programmet. Användarens identitet hämtas från systemet och användaren får ange sitt lösenord som finns lagrat i databasen. Programmet jämför sedan de ID-uppgifter och det lösenord som finns lagrade i databasen. ID't som finns i databasen bestämmer då vilka rättigheter den specifika användaren har. Detta för att ge rätt rättigheter till rätt användare.

Michal Le Duc,. skriver i sin artikel Delphi 3.0 och Visual Basic 5.0 Versioner värda en uppgradering (Datateknik 97-12) att "Den nya integrerade utvecklingsmiljön med många hjälpfunktioner, möjligheten att kompilera tillämpningar och skapa egna ActiveX-objekt gör att Visual Basic flyttar fram sina positioner ordentligt.". Möjligheten att skapa egna mer avancerade lösningar än tidigare kommer VB´s prestanda i närheten av C++ och Delphi. Eftersom stödet för utveckling av 16-bitars tillämpningar har utgått så kan man bara utveckla 32-bitars versioner.
När man öppnar VB 5.0 visas dess nya Gallery-fönster som ger dig som användare möjligheten att utgå från ett antal mallar/guider. I VB 5.0 är numera alla fönster i ett projekt inneslutna i ett huvudfönster, enligt Windowsstandarden Multiple Document Interface (MDI), vilket är positivt.
Som utvecklare behöver man inte längre hålla reda på vilka egenskaper varje objekt har. Visual Basic känner av detta och visar en lista med alla egenskaper, konstanter och funktioner som finns tillgängliga för varje objekt. Om man som utvecklare känner sig osäker på vilken syntax ett visst kommando har behöver inte hjälpen startas. Om man väntar någon sekund kommer det upp en ruta där syntaxen visas.
De här två funktionerna är till stor glädje för utvecklaren. Dessutom finns det mängder av småförbättringar och finesser i utvecklingsmiljön. De kontroller som finns kan till exempel sorteras under olika flikar, och det finns ett speciellt fönster som visar var det aktuella fönstret hamnar på skärmen vid olika upplösningar.
En stor nyhet i Visual Basic 5.0 är kompilatorn i den går det att generera den gamla typen av P-kod. Kompilatorn ger snabbare kod men med P-kod blir programmet å andra sidan upp till 30 procent mindre.
Microsoft säger att programmen blir 20 gånger snabbare, eller i vissa fall till och med ännu snabbare, jämfört med Visual Basic 4.0.
De guider/wizarder, se bilaga 1, som vi nämnde inledningsvis underlättar skapandet av nya program. Som programutvecklare svarar man på ett antal frågor om hur programmet ska se ut och om det ska finnas en informationsruta om programmet, vilka menyer som ska finnas med och om det ska dyka upp en så kallad splash-screen när programmet startar eller ej. En splash-screen är det lilla fönster som dyker upp medan programmet laddas in, och där information om programmet visas.
Man kan även ange att alla textsträngar ska läggas i en resursfil så att de enkelt kan ändras i efterhand, till exempel om programmet ska översättas till ett annat språk. Om man väljer detta alternativ så ska man vara medveten om att menyraden består av sifferkombinationer i stället för ord. En nackdel är att det inte finns någon editor för att redigera de resursfiler som skapats, detta får då göras i någon annan texteditor t.ex. Notepad. Om så önskas kan även en web-läsare läggas in i programmet, till exempel för att komma åt företagets informationssida.
Visual Basic 5.0 skapar sedan alla filer och formulär som behövs, och utan att ha skrivit en enda rad kod har utvecklaren ett komplett skåp att lägga in sina funktioner i. Programmet är komplett med menyer, statusrad och verktygsrad.

Figur 10 Visual Basic 5.0 gränssnitt
VB 5.0 innehåller numera funktioner som fanns i Delphi 2.0 för att automatiskt omplacera objekt i förhållande till varandra som i ett ritprogram. Det var annars ibland tidskrävande att få rätt storlek på objekt och mellanrum mellan objekt inom ett formulär tidigare.
Både Visual Basic 5.0 och Delphi 3.0 kan skapa ActiveX-komponenter och Active Documents som kan bäddas in i HTML-dokument. Det innebär att browser's med stöd för ActiveX kan köra nämnda tillämpningar i nedladdade HTML-dokument. I Microsoft Internet Explorer finns detta stöd inbyggt medan Netscape kräver en tilläggsmodul. För dokument med ActiveX-teknologi skapade i Visual Basic krävs dock, i motsats till Delphi, ett körbibliotek omfattande 1,5 Mbyte. Körbiblioteket installeras i och för sig automatiskt i samband med installationen av Office 97. Allt detta visar på ökad dominans av Microsoft teknologi, även Borland har fått anpassa sig.
Visual Component Library-objekt kan ändras antingen genom objektorienterad teknik (arv) eller genom att källkoden ändras. De komponenter som levereras i Visual Basic är kompilerade i andra språk, företrädesvis C++. Endast deras publika egenskaper kan ändras. Det innebär dessutom att alla ActiveX-komponenter som anropas i ett Visual Basic projekt måste distribueras till och registreras i klientmaskinerna.
Tillverkare: Microsoft, USA
Leverantör: Microsoft AB, tel. 08-752 56 00, fax. 08-750 51 58
Det finns tre versioner att välja mellan. Learning Edition, Professional Edition och Enterprise Edition. Den senare versionen innehåller bland annat SQL-tillägg, Visual SourceSafe 5.0, SQL Server 6.5 och Transaction Server.
Kräver: Windows 95 eller Windows NT Workstation 4.0 eller senare eller Windows 3.1, 486DX/66 MHz processor eller bättre rekommenderas, 16 Mbyte internminne i Windows 95, minst 35 Mbyte skivminne och som mest 345 Mbyte för Enterprise Edition inkl. Books Online.
Delphi håller ställningarna gentemot Visual Basic prestandamässigt samt genom att det både ger tillgång till kraftfulla högnivåfunktioner som Visual Basic och möjlighet att gå på djupet till exempel i Windows API:er (Application Programming Interface), Delphis objekt och till och med assemblerkod. Det går dessutom att utveckla 16-bitars och 32-bitars tillämpningar med samma källkod inom vissa gränser.
När man öppnar Delphi 3.0 så får man inte några wizarder utan man får ett tomt formulär. Detta formulär kan man använda till att bygga sin applikation på, antingen att plocka in komponenter direkt på eller att använda wizarder för smidigare uppbyggnad för den som önskar. Annars kan man bygga applikationen från början med hjälp av en wizard, se bilaga 3. Det finns ett antal mallar/guider. I Delphi 3.0 är alla fönster i ett projekt inneslutna i ett huvudfönster, enligt Windowsstandarden Multiple Document Interface (MDI), vilket är mycket bra om man vill jobba med flera program samtidigt.
För att underlätta för utvecklaren har Delphi 3.0 en funktion som heter kodmallar (Code Templates).Dessa kan lätt plockas in i koden, man ställer markören där man vill infoga kodmallen och ger ett speciellt kommando så får man en popup-meny där man kan välja det man vill ha. Som standard ingår 22 mallar, till exempel för klassdeklaration och if-satser men det går även att lägga in egna mallar.
Enligt Torun Lidfeldt's artikel Delphi 3.0 skriver koden själv (Datateknik 97-08) " Delphi 3.0 stödjer nu Microsofts objektmodeller COM och DCOM fullt ut..."", detta innebär att ActiveX komponenter som är utvecklade i Delphi 3.0 också kan köras i Visual Basic 5.0 och tvärtom (eller andra verktyg med stöd för ActiveX). Allt som utvecklats i Delphi kan automatiskt omvandlas till ActiveX-komponenter eller COM-objekt. Därmed blir återanvändbarheten stor, enligt Borland bygger 60 procent av Delphi-utvecklarna sina egna återanvändbara komponenter idag. Object Pascal är ett annat tillägg som finns i Delphi 3.0 för att skapa objektgränssnitt i detta avseende. Det innebär att alla objekt skapade i Delphi 3.0 kan kompileras och registeras som ActiveX COM objekt.
Delphi 3.0 har inbyggt stöd för pekare. Det ger till exempel effekt i högre prestanda vid stränghantering men även andra fördelar som pekare till komplexa strukturer och objekt. Delphi stödjer callback-funktioner, vilket används flitigt vid Windowsprogrammering.
De kodningswizarder som finns i Delphi 3.0 påminner mycket om de som finns i Microsofts Visual Basic 5.0. I varje moment i kodningen hjälper Delphi till med syntaxen genom att föreslå olika alternativ, och visa vilka typer av parametrar som kan användas.

Figur 11 Delphi 3.0 Gränssnitt
När man för första gången kör Delphi så upplever man att det är ett kraftfullt verktyg. Delphi är det bästa av de tre verktygen, för att hantera skalbarheten på de fönster som utvecklas.
I både Delphi 3.0 och VB 5.0 finns guider som stöd i utvecklingen av ActiveX-objekt. Delphi skiljer sig dock från Visual Basic bland annat genom att även erbjuda objekt för serverdelen av en Internet lösning, till exempel webserver tillämpningar samt klasser som hanterar HTTP, CGI, ISAPI och HTML.
I dagens komplexa (objektorienterade) utvecklingssystem går en hel del tid åt att leta fram objektnamn, -egenskaper och parametrar samt till att använda dessa rätt. Därför är det välkommet att både Delphi 3.0 och VB 5.0 erbjuder extra hjälp med detta: om man skriver in ett objektnamn följt av punkt poppar en lista med objektets egenskaper upp på skärmen, och för ett funktionsanrop får man istället se parametrarna.
Delphi förblir det tekniskt överlägsna verktyget om man behöver gå djupare i Windowsprogrammering.
Tillverkare: Borland, USA
Leverantör: Borland International, http://www.borland.com
Det finns ett flertal versioner att välja mellan. Desktop, Developer och Client/server versionen. Den senare versionen innehåller bland annat Interbase Server för NT (två användare). 16-bitars Delphi1.0 ingår i alla versioner.
Kräver: Windows 95 eller Windows NT Workstation 4.0 eller senare, 486DX/66 MHz processor eller bättre, 16 Mbyte internminne eller mer rekommenderas, cirka 60 Mbyte skivminne krävs för en kompakt installation. Man bör ha ett ledigt skivminne omkring 110 Mbyte för en normal installation.
Utvecklingsmiljön i Symantecs Visual Café är ganska lik Visual Basic och Delphi. Bland annat hjälper en Interaction Wizard programmeraren att skriva kod av typen "om användaren klickar på denna knapp ska textfältet bredvid tömmas". Alla komponenter har också sina egenskaper listade i ett fönster vid sidan om, precis som i Visual Basic. Man kan importera eget skrivna visuella komponenter.
Visual Café gör det väldigt enkelt att utveckla databas kopplade web-sidor, där man använder Rapid Application Development (RAD), plus alla de verktyg som behövs för att utveckla en databasapplet eller databasapplikation dynamiskt.

Figur 12 Visual Café Pro gränssnitt
Det finns ett bra hjälpmedel för vanligt förekommande händelser Interaction Wizard, denna kommer man även åt med knappen, som har två kontakter på sig, längst ner till vänster i figur 12.
Visual Café 1.0
Tillverkare: Symantec
Leverantör: LinSoft, tel 013-11588 kan köpas som uppgradering från Café
Internetadress: http://www.symantec.com/product/index_devtools.html
Krav: Windows 95 eller Windows NT 486DX/66 MHz processor eller bättre, 16 Mbyte internminne eller mer rekommenderas
Under tiden som arbetet med att ta fram det förslag till dialog som presenterats ovan så har det visat sig att det inte är så lätt att göra om något som redan existerar. Dels ska man tänka på nya användare som ska komma in i användandet så fort som möjligt. Och behöver då kanske lite extra information om de olika funktionerna som finns i systemet då de dyker upp. Detta ska då vägas emot den vana användaren som upplever all onödig information som besvärande.
I den jämförelse som gjorts så kan det påpekas att val av verktyg kan vara en fråga om att ha ett helt koncept från samma leverantör för att få enhetlighet. Då det visat sig att både Visual Basic och Delphi håller likvärdig klass, kan det vara svårt att avgöra vad som är bäst för det ena eller andra utvecklingsföretaget. Det är också en fråga om vad för slags verktyg man använt tidigare.
När det gäller användarvänligheten, så har vi kommit fram till att det bästa sättet att få en programprodukt användarvänlig är att skapa två varianter en för den vana användaren och en för den mer oerfarna. Om man gör en version som vi gjort och i denna version ska ta hänsyn till båda användartyperna, kan det ge upphov till många och heta diskussioner om och huruvida man skall gå tillväga för att få en produkt som alla trivs med. Vidare kan man ju tänka sig att det skulle kunna finnas någon parameter som man kunde ställa om, för de två olika användartyperna. Men denna parameter kommer att innebära ett intensivt programmerande för extremt lite nytta.
För att avgöra vilket verktyg som är bäst för att utveckla applikationer i, så kunde man ha gjort en PAM-dialog i vart och ett av de tre verktygen. Om den befintliga databasen hade varit tillgänglig hos ABB kunde en mer omfattande test av verktygen utförts, t.ex. kunde man ha testat olika söktider, utvecklingshastighet mm.
I jämförelse med de största traditionella visuella verktygen, Visual Basic och Delphi så befinner sig dock inte Café 1.0 verktyget i samma klass. Eftersom Symantec har kommit med en nyare version av Café så är det inte riktigt relevant att jämföra detta verktyg med de andra två. Vi kan förmoda att det nyare verktyget från Symantec har betydligt högre klass än det tidigare verktyget. Att vi inte testat den nyare versionen beror på att vi inte haft tillgång till det.
När man utvecklar i Café 1.0 verktyget så fick vi erfara i ett tidigare projekt, där vi försökte utveckla en dynamisk databas applikation, att det kan bli problem när man är två eller flera som programmerar på olika maskiner. För när man ska länka ihop projektet så visade det sig att programmet inte godtog att man förde in bitar av projektet från annat håll. Vi misstänker att det här verktyget är mer avsett för applets än för databasapplikationer, då applikationerna tenderar att bli så stora att det rekommenderade minnesbehovet blir fullt långt innan man är klar med en liten applikation.
Java är annars ett mycket trevligt och enkelt språk att utveckla applikationer i. Vi kan förmoda att tillverkarna av de traditionell verktygen kommer att få se upp i framtiden, då vi anser att Java är ett mycket lätt programmeringsspråk att utveckla applikationer i.
Vi anser efter denna utvärdering att Delphi höjer sig över mängden i många avseenden.
Vi tycker att Delphi har bäst stöd för:
Visual Basic 5.0 är en mycket stark konkurrent till Delphi och ABB har förmodligen inte gjort något dåligt val, vi kan inte klart utsäga detta då vi inte har tillgång till ABB's alla parametrar, som spelar in vid val av en ny plattform.
Figurförteckning
Figur 1 Objektmodellen som vi arbetat efter *
Figur 2 Skrivbordsyta i Pam dialogen *
Figur 3 MDI exempel *
Figur 4 Formuläret för Projektregistrering *
Figur 5 Materialspecifikation *
Figur 6 Kundformulär *
Figur 7 Trädstruktur *
Figur 8 Splashscreen *
Figur 9 Login formulär *
Figur 10 Visual Basic 5.0 gränssnitt *
Figur 11 Delphi 3.0 Gränssnitt *
Figur 12 Visual Café Pro gränssnitt *
Figur 13 New Project *
Figur 14 Introduction *
Figur 15 Interface type *
Figur 16 Menus *
Figur 17 Standard forms *
Figur 18 Internet Connectivity *
Figur 19 Data Access Forms *
Figur 20 Select tables *
Figur 21 Application name *
Figur 22 Application *
Figur 23 Run Application *
Figur 24 New Project *
Figur 25 Project Wizard *
Figur 26 Project type *
Figur 27 dbANYWHERE server *
Figur 28 Data Source *
Figur 29 User Authentication *
Figur 30 Database Table *
Figur 31 Database Columns *
Figur 32 Components and Labels *
Figur 33 Database Operations *
Figur 34 Finish *
Figur 35 Form Designer *
Figur 36 Application *
Figur 37 New Item *
Figur 38 Database Form Options *
Figur 39 Table Name *
Figur 40 Database Fields *
Figur 41 Field Arrange *
Figur 42 Label Arrange *
Figur 43 Finish *
Figur 44 Edit Application *
Figur 45 Run Application *
Visual Basic 5.0
Denna bilaga visar hur man på ett enkelt vis kan göra en databaskoppling med hjälp av de wizarder som finns att tillgå i Visual Basic 5.0.
Författare: Arvidsson Thomas
Magnusson Håkan
Handledare: Gustavsson Thomas
Välj <File> <New Project>

Här ges möjlighet att välja vilken typ av wizard man vill ha för att skapa en tillämpning.


Figur 15 Interface type
I detta fallet har vi valt singeldokument. Om man väljer MDI så innebär det att programmet blir likt ett skrivbord, där ett flertal fönster kan vara öppna samtidigt.

På denna sida väljer du vilka standard menyer som skall ingå.

Välj här vilka typer av formulär du vill ha med i ditt program.

Figur 18 Internet Connectivity
Här kan du lägga till en enkel webbrowser.

Här kan du välja om du vill koppla mot en databas.
Vilken databastyp som skall kopplas och vilken databas man vill använda.

Välj vilka tabeller eller frågor vill du använda.
Figur 21 Finished
Här namnger du din applikation, du kan även här ange om du vill ha en sammanfattande rapport om vad som behöver göras efter det att wizarden är slutförd.

Det skapade projektet i redigeringsläge.

Det skapade projektet körd mot databasen.
Symantec visual café
Denna bilaga visar hur man på ett enkelt vis kan göra en databaskoppling med hjälp av de wizarder som finns att tillgå i Symantec Visual Café
Författare: Arvidsson Thomas
Magnusson Håkan
Handledare: Gustavsson Thomas
Välj <File> <New Project>

Här ges möjlighet att välja vilken typ av wizard man vill ha för att skapa en tillämpning.


Här kan du välja om du vill göra en applikation eller en applet.

På denna sida väljer du dbAnyWhere Server

Välj här vilken databas som du vill använda i applikationen. Denna databas måste vara kopplad i ODBC för att kunna fungera.

Här kan du skapa en användare och ge denne ett lösenord.

Här väljer du vilken tabell du vill koppla till din applikation.

Välj vilka kolumner som du vill använda i din databas.

Figur 32 Components and Labels
Här kan du välja de komponenter som du vill ha med du kan även skapa aliasnamn på kolumnerna.

Här väljer man vilka databasoperationer man vill ha med i applikationen. För varje alternativ som du väljer till kommer det att visas en knapp i det skapade fönstret.

Nu har du kommit till slutförandet av den grundapplikation som du skapat med hjälp av wizarden.

Figur 35 Form Designer
Här visas det färdiga resultatet av wizarden. Du kan nu börja använda den färdiga applikationen, du kan också göra förändringar eller göra tillägg för att göra din applikation mera komplett.

Här ses nu det databasformulär som vi skapat med hjälp av wizarden. Vi kan nu gå vidare och göra ytterligare fler finesser.
Delphi 3.0
Denna bilaga visar hur man på ett enkelt vis kan göra en databaskoppling med hjälp från en av alla de wizarder som finns att tillgå i Delphi 3.0
Författare: Arvidsson Thomas
Magnusson Håkan
Handledare: Gustavsson Thomas
Välj <File> <New >

Här ges möjlighet att välja vilken typ av wizard man vill ha för att skapa en tillämpning.

Figur 38 Database Form Options
Här väljer du hur vilken typ av databasformulär som du vill ha.

På den här sidan väljer man tabell som skall användas.

På denna sida väljer du vilka fält som ska vara med från den tabell du valt på föregående sida, man behöver inte välja att ta med alla fält.

Välj här den typ av presentation som du vill ha på din tabell.

Här väljer du hur den beskrivande texten som tillhör varje fält ska placeras.

Är man belåten med det man gjort i wizarden så klickar man på finish och då kompileras den kod som utgör applikationen.

Vi har nu kommit så lång med applikationen att det går köra den som den är, men för den som inte är nöjd kan ju utöka eller förbättra applikationen.

Vi har nu skapat en liten enkel databastabell väldigt smidigt.
Källkod pam
Denna bilaga visar källkoden till de händelser som finns i PAM dialogen.
Författare: Arvidsson Thomas
Magnusson Håkan
Handledare: Gustavsson Thomas
Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpbuffer As String, nSize As Long) As Long
Public OK As Boolean
Private Sub Form_Load()
Dim sBuffer As String
Dim lSize As Long
sBuffer = Space$(255)
lSize = Len(sBuffer)
Call GetUserName(sBuffer, lSize)
If lSize > 0 Then
txtUserName.Text = Left$(sBuffer, lSize)
Else
txtUserName.Text = vbNullString
End If
End Sub
Private Sub cmdCancel_Click()
OK = False
Me.Hide
End Sub
Private Sub cmdOK_Click()
'To Do - create test for correct password
'check for correct password
If txtPassword.Text = "" Then
OK = True
Me.Hide
Else
MsgBox "Invalid Password, try again!", , "Login"
txtPassword.SetFocus
txtPassword.SelStart = 0
txtPassword.SelLength = Len(txtPassword.Text)
End If
End Sub
Option Explicit
Private Declare Function OSWinHelp% Lib "user32" Alias "WinHelpA" (ByVal hwnd&, ByVal HelpFile$, ByVal wCommand%, dwData As Any)
Function LoadNewSpecifikation() 'MaterialSpecifikation
Dim frmM As frmSpecifikation
Set frmM = New frmSpecifikation
frmM.Caption = "Materialspecifikation "
frmM.Show
End Function
Private Sub LoadNewProjektregistrering()
Dim frmP As frmProjektregistrering
Set frmP = New frmProjektregistrering
frmP.Caption = "Projektregistrering "
frmP.Show
End Sub
Private Sub MDIForm_Load()
Me.Left = GetSetting(App.Title, "Settings", "MainLeft", 1000)
Me.Top = GetSetting(App.Title, "Settings", "MainTop", 1000)
Me.Width = GetSetting(App.Title, "Settings", "MainWidth", 6500)
Me.Height = GetSetting(App.Title, "Settings", "MainHeight", 6500)
End Sub
Private Sub MDIForm_Unload(Cancel As Integer)
If Me.WindowState <> vbMinimized Then
SaveSetting App.Title, "Settings", "MainLeft", Me.Left
SaveSetting App.Title, "Settings", "MainTop", Me.Top
SaveSetting App.Title, "Settings", "MainWidth", Me.Width
SaveSetting App.Title, "Settings", "MainHeight", Me.Height
End If
End Sub
Private Sub mnuKund_Click()
frmKund.Show
End Sub
Private Sub tbToolBar_ButtonClick(ByVal Button As ComctlLib.Button)
Select Case Button.Key
Case "Login"
mnuLogin_Click
Case "Öppna"
mnuTreelist_Click
Case "Sök"
mnuKund_Click
End Select
End Sub
Private Sub mnuLogin_Click()
frmLogin.Show
End Sub
Private Sub mnuFileExit_Click()
Unload Me
End Sub
Private Sub mnuMaterialspecifikation_Click()
LoadNewSpecifikation
End Sub
Private Sub mnuProjektregistrering_Click()
LoadNewProjektregistrering
End Sub
Private Sub mnuTreelist_Click()
frmTreeList.Show
End Sub
Private Sub mnuViewOptions_Click()
frmOptions.Show
End Sub
Private Sub mnuViewStatusBar_Click()
If mnuViewStatusBar.Checked Then
sbStatusBar.Visible = False
mnuViewStatusBar.Checked = False
Else
sbStatusBar.Visible = True
mnuViewStatusBar.Checked = True
End If
End Sub
Private Sub mnuViewToolbar_Click()
If mnuViewToolbar.Checked Then
tbToolBar.Visible = False
mnuViewToolbar.Checked = False
Else
tbToolBar.Visible = True
mnuViewToolbar.Checked = True
End If
End Sub
Private Sub mnuHelpContents_Click()
Dim nRet As Integer
'if there is no helpfile for this project display a message to the user
'you can set the HelpFile for your application in the
'Project Properties dialog
If Len(App.HelpFile) = 0 Then
MsgBox "Unable to display Help Contents. There is no Help associated with this project.", vbInformation, Me.Caption
Else
On Error Resume Next
nRet = OSWinHelp(Me.hwnd, App.HelpFile, 3, 0)
If Err Then
MsgBox Err.Description
End If
End If
End Sub
Private Sub mnuHelpSearch_Click()
Dim nRet As Integer
'if there is no helpfile for this project display a message to the user
'you can set the HelpFile for your application in the
'Project Properties dialog
If Len(App.HelpFile) = 0 Then
MsgBox "Unable to display Help Contents. There is no Help associated with this project.", vbInformation, Me.Caption
Else
On Error Resume Next
nRet = OSWinHelp(Me.hwnd, App.HelpFile, 261, 0)
If Err Then
MsgBox Err.Description
End If
End If
End Sub
Private Sub mnuWindowArrangeIcons_Click()
Me.Arrange vbArrangeIcons
End Sub
Private Sub mnuWindowCascade_Click()
Me.Arrange vbCascade
End Sub
Private Sub mnuWindowTileHorizontal_Click()
Me.Arrange vbTileHorizontal
End Sub
Private Sub mnuWindowTileVertical_Click()
Me.Arrange vbTileVertical
End Sub
Private Sub mnuViewRefresh_Click()
'To Do
MsgBox "Refresh Code goes here!"
End Sub
Private Sub mnuFileOpen_Click()
frmTreeList.Show
End Sub
Private Sub mnuHelpAbout_Click()
frmAbout.Show
End Sub
Private Sub Form_Load()
Me.Left = 0
Me.Top = 0
Me.Width = 3800
Me.Height = 2700
Dim nodX As Node ' Create a 4 root nodes.
TreeView1.ImageList = ImageList1 ' Specify ImageList
frmTreeList.Caption = "Trädstruktur"
' Mapp Nivå 1 Orderhantering
'------------------------------------------------------------------------
Set nodX = TreeView1.Nodes.Add(, , "O", "Orderhantering", 1, 2)
nodX.Expanded = False
nodX.ExpandedImage = 2
' Mapp Nivå 2 Orderregistrering
Set nodX = TreeView1.Nodes.Add(1, tvwChild, , "Orderregistrering", 1, 2)
nodX.Expanded = False
nodX.ExpandedImage = 2
' Formulär Orderregistrering
Set nodX = TreeView1.Nodes.Add(2, tvwChild, , "Materialspecifikation", 3)
Set nodX = TreeView1.Nodes.Add(2, tvwChild, , "Projektregistrering", 3)
' Mapp Nivå 1 Ekonomi
'------------------------------------------------------------------------
Set nodX = TreeView1.Nodes.Add(, , "E", "Ekonomi", 1, 2)
nodX.Expanded = False
nodX.ExpandedImage = 2
' Mapp Nivå 1 Management
'------------------------------------------------------------------------
Set nodX = TreeView1.Nodes.Add(, , "M", "Management", 1, 2)
nodX.Expanded = False
nodX.ExpandedImage = 2
' Mapp Nivå 1 Systemadmin
'------------------------------------------------------------------------
Set nodX = TreeView1.Nodes.Add(, , "S", "Systemadmin", 1, 2)
nodX.Expanded = False
nodX.ExpandedImage = 2
End Sub
Option Explicit
Private Sub LoadNewSpecifikation()
ProgressBar1.Visible = False
Dim frmM As frmSpecifikation
Set frmM = New frmSpecifikation
frmM.Show
End Sub
Private Sub DBGridSecifikation_GotFocus()
Dim Col1, Col2 As Column
Set Col1 = DBGridSecifikation.Columns(0)
Set Col2 = DBGridSecifikation.Columns(1)
Col1.Caption = "Antal "
Col2.Caption = "Specifikation"
Col2.Value = "Dator PII 2000"
'sbStatusBar.Panels(1).Text = ""
End Sub
Private Sub Form_Load()
ProgressBar1.Visible = False
Me.Left = 0
Me.Top = 0
Me.Width = 7875
Me.Height = 5220
End Sub
Private Sub Ordernummer_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyReturn:
Ordernummer_KeyReturn
SQL_Get_Ordernummer
Ordernummer_LostFocus
DBGridSecifikation.SetFocus
Case vbKeyTab:
End Select
End Sub
Private Sub SQL_Get_Ordernummer()
' to do statuslist "skriv en SQL-sats för att söka reda på ordernummret i Databasen på server"
Dim Counter As Integer
Dim Workarea(250) As String
ProgressBar1.Min = LBound(Workarea)
ProgressBar1.Max = UBound(Workarea)
ProgressBar1.Visible = True
ProgressBar1.Value = ProgressBar1.Min 'Set the Progress's Value to Min.
For Counter = LBound(Workarea) To UBound(Workarea) 'Loop through the array.
Workarea(Counter) = "Initial value" & Counter 'Set initial values for each item in the array.
ProgressBar1.Value = Counter
sbStatusBar.Panels(1).Text = "Söker efter ordernummret i Databasen. Vänta "
Next Counter
ProgressBar1.Visible = False
ProgressBar1.Value = ProgressBar1.Min
End Sub
Private Sub Ordernummer_KeyReturn()
Me.Caption = ""
Me.Caption = "Materialspecifikation Ordernummer:" & Ordernummer
End Sub
Private Sub Ordernummer_LostFocus()
'sbStatusBar.Panels(1).Text = ""
'DBComboProjektLedare.SetFocus
End Sub
Private Sub tbToolBar_ButtonClick(ByVal Button As ComctlLib.Button)
Select Case Button.Key
Case "Nytt Blad"
mnuNyttBlad_Click
Case "Skriv ut"
mnuFilePageSetup_Click
' mnuFilePrint_Click
Case "Uppdatera"
mnuUppdateraDatabas_Click
End Select
End Sub
Private Sub mnuNyttBlad_Click()
LoadNewSpecifikation
End Sub
Private Sub mnuFilePageSetup_Click()
'MSComDlg.ShowPrinter
'CommonDialog.PrinterDefault
End Sub
Private Sub mnuFilePrint_Click()
'To Do
MsgBox "Print Code goes here!"
End Sub
Private Sub mnuUppdateraDatabas_Click()
'sbStatusBar1.Panels(1).Text = " Uppdaterar Databasen på serveren. Vänta...."
' "to do: skriv en SQL-sats"
End Sub
Private Sub LoadNewProjektregistrering()
ProgressBar1.Visible = False
Dim frmP As frmProjektregistrering
Set frmP = New frmProjektregistrering
frmP.Show
End Sub
Private Sub cmd_Allmlevbest_btn_Click()
sbStatusBar.Panels(1).Text = "Söker efter Allmänna leveransbestämmelser i databasen för aktuell kod"
frmAllmlevbest.Show
End Sub
Private Sub cmdExelChart_Click(Index As Integer)
frmExelChart.Show
End Sub
Private Sub cmdExelSheet_Click(Index As Integer)
frmExelSheet.Show
End Sub
Private Sub cmdMSChart_Click(Index As Integer)
With frmMSChart.MSChart1
.chartType = VtChChartType3dBar ' Displays a 3d chart with 8 columns and 8 rows data.
.ColumnCount = 8
.RowCount = 8
For Column = 1 To 8
For Row = 1 To 8
.Column = Column
.Row = Row
.Data = Row * 10
Next Row
Next Column
' Use the chart as the backdrop of the legend.
.ShowLegend = True
.SelectPart VtChPartTypePlot, index1, index2, index3, index4
.EditCopy
.SelectPart VtChPartTypeLegend, index1, index2, index3, index4
.EditPaste
End With
frmMSChart.Show
End Sub
Private Sub DBComboProjektLedare_GotFocus()
' sbStatusBar.Panels(1).Text = ""
End Sub
Private Sub Form_Load()
ProgressBar1.Visible = False
Me.Left = 0
Me.Top = 0
Me.Width = 9330
Me.Height = 7200
End Sub
Private Sub Ordernummer_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyReturn:
Ordernummer_KeyReturn
SQL_Get_Ordernummer
Ordernummer_LostFocus
End Select
End Sub
Private Sub SQL_Get_Ordernummer()
' to do statuslist "skriv en SQL-sats för att söka reda på ordernummret i Databasen på server"
Dim Counter As Integer
Dim Workarea(250) As String
ProgressBar1.Min = LBound(Workarea)
ProgressBar1.Max = UBound(Workarea)
ProgressBar1.Visible = True
ProgressBar1.Value = ProgressBar1.Min 'Set the Progress's Value to Min.
For Counter = LBound(Workarea) To UBound(Workarea) 'Loop through the array.
Workarea(Counter) = "Initial value" & Counter 'Set initial values for each item in the array.
ProgressBar1.Value = Counter
sbStatusBar.Panels(1).Text = "söker efter ordernummret i Databasen. Vänta "
Next Counter
ProgressBar1.Visible = False
ProgressBar1.Value = ProgressBar1.Min
DBComboProjektLedare = "Lars Einarsson"
End Sub
Private Sub Ordernummer_KeyReturn()
Me.Caption = ""
Me.Caption = "Projektregistrering Ordernummer:" & Ordernummer
End Sub
Private Sub Ordernummer_LostFocus()
DBComboProjektLedare.SetFocus
End Sub
Private Sub tbToolBar_ButtonClick(ByVal Button As ComctlLib.Button)
Select Case Button.Key
Case "Nytt Blad"
mnuNyttBlad_Click
Case "Skriv ut"
mnuFilePageSetup_Click
' mnuFilePrint_Click
Case "Uppdatera"
mnuUppdateraDatabas_Click
End Select
End Sub
Private Sub mnuNyttBlad_Click()
LoadNewProjektregistrering
End Sub
Private Sub mnuFilePageSetup_Click()
mnuFilePrint_Click
End Sub
Private Sub mnuFilePrint_Click()
MsgBox "Print Code goes here!"
End Sub
Private Sub mnuUppdateraDatabas_Click()
sbStatusBar.Panels(1).Text = " Uppdaterar Databasen på serveren. Vänta...."
' "to do: skriv en SQL-sats"
End Sub
Private Declare Function OSWinHelp% Lib "user32" Alias "WinHelpA" (ByVal hwnd&, ByVal HelpFile$, ByVal wCommand%, dwData As Any)
Private Sub Choice_Click(Index As Integer)
MsgBox "SQL sats efter Val"
End Sub
Private Sub Exit_Click(Index As Integer)
Unload Me
End Sub
Private Sub Form_Load()
Me.Left = 0
Me.Top = 0
Me.Width = 9285
Me.Height = 4575
End Sub
Private Sub Help_Click(Index As Integer)
Dim nRet As Integer
'if there is no helpfile for this project display a message to the user
'you can set the HelpFile for your application in the
'Project Properties dialog
If Len(App.HelpFile) = 0 Then
MsgBox "Unable to display Help Contents. There is no Help associated with this project.", vbInformation, Me.Caption
Else
On Error Resume Next
nRet = OSWinHelp(Me.hwnd, App.HelpFile, 3, 0)
If Err Then
MsgBox Err.Description
End If
End If
End Sub
Private Sub Seak_Click(Index As Integer)
MsgBox "Sök efter valda data i databasen ", vbInformation, Me.Caption
End Sub