Brugernavn:




Kodeord: Husk
Forside Forum Artikler Downloads Søg
 

MEGET simpel editor i Delphi 6

Forord

Denne artikel tager udgangspunkt i Borland Delphi 6. Da jeg ikke kender meget til de enkelte versioner af Delphi, ved jeg ikke om den kan bruges i ældre/nyere versioner. Men lad os da bare komme i gang.

Jeg gider ikke starte med simple ’Hello World’ programmer, for det ville knap kræve en artikel at lave. Delphi er nemlig så dejligt let at gå til, så man hurtigt kan lave mere eller mindre avancerede programmer, bare ved at bruge lidt hjerne, samt den indbyggede dokumentation. Derfor vil vi lave en simpel (meget simpel) editor.

Start Delphi 6 op, vælg ”Files” og vælg ”Save project as”. Det er altid en god idé at gemme sit projekt før man rigtigt går i gang, så man senere kan gemme det hele, ved blot at trykke Ctrl + S. Du behøver ikke kalde dine filer noget specielt, bare brug standarden (Project1, Unit1 osv.).

Åbn din Unit1.dfm fil. Det er ikke den fil, der åbnede, da du startede Delphi 6. Den fil hedder Unit1.pas, og den skal vi først bruge senere. Koden i Unit1.dfm burde se nogenlunde sådan her ud:

  1. object Form1: TForm1
  2.   Left = 266
  3.   Top = 315
  4.   Width = 696
  5.   Height = 480
  6.   Caption = "Form1"
  7.   Color = clBtnFace
  8.   Font.Charset = DEFAULT_CHARSET
  9.   Font.Color = clWindowText
  10.   Font.Height = -11
  11.   Font.Name = "MS Sans Serif"
  12.   Font.Style = []
  13.   OldCreateOrder = False
  14.   PixelsPerInch = 96
  15.   TextHeight = 13
  16. End

Jeg vil forsøge at forklare koden (og strukturen) så godt jeg kan. Den er faktisk utrolig simpel, så hvis du har bare lidt kendskab til Delphi kan du springe dette afsnit over.

  • object Form1: TForm1

’object’ angiver, at vi nu vil oprette et nyt objekt. Et Delphi program er nemlig opbygget i objekter.
’Form1’ er navnet på vores objekt, og ’TForm1’ kan forklares som klassen til vores objekt. Hvis du lader Delphi 6 oprette din form (det vindue, programmet kører i ), vil den være af klassen ’TForm1’. Dette vil jeg dog ikke komme nærmere ind på, da det først rigtigt er vigtigt, hvis du skal bruge flere vinduer, eller hvis du selv vil kode det alt sammen fra bunden.

Resten er faktisk i stil med CSS. Det er bare en masse attributter, vi tildeler vores objekt. Dem kan du selv rode lidt med.

Til sidst står der ’End’. Det indikerer, at nu er vores objekt slut. Altså: object starter objektet, og end afslutter det. Simpelt! Hvis du har gemt dit projekt som jeg sagde, du skulle, er du køreklar nu, og kan trykke F9. Nu kører dit program. Eller dit vindue, skulle man måske hellere kalde det, men vi skal snart få gjort det mere interessant. Det burde nu se ud i stil med dette:


Menuer er en meget brugt ting i programmer. De er faktisk med i alle de programmer, jeg lige umiddelbart kan komme i tanker om. Åben for eksempel notesblokken. ’Filer’ er en del af programmets menu. Det smarte ved menuer er nemlig, at du kan give dine brugere mulighed for at udføre mange forskellige kommandoer, men det vil stadig fylde meget lidt. Alle kommandoerne er nemlig lagret i forskellige menufaner, som for eksempel Filer, Rediger, Vis, osv.. Derfor går vi i gang med at lave en menu.

  1. object Hovedmenu: TMainMenu
  2.   object Filer: TMenuItem
  3.     Caption = "&Filer"
  4.   end
  5.   object Formater: TMenuItem
  6.     Caption = "F&ormater"
  7.   end
  8.   object Funktioner: TMenuItem
  9.     Caption = "F&unktioner"
  10.   end
  11.   object Hjaelp: TMenuItem
  12.     Caption = "&Hjælp"
  13.   end
  14. end

Det er koden til vores menu. Det er faktisk det samme som koden til vores form, men vi gør brug af to nye klasser (objekttyper): TMainMenu og TMenuItem. Objekttyper starter som standard med T, medmindre det er nogle, du selv definerer, men dette vil jeg heller ikke komme videre ind på denne gang.
TmainMenu indikerer, at vi starter selve vores menu. Den har så vidt jeg ved ikke nogle attributter. Derfor går den direkte videre til den første TMenuItem.

Du undrer dig måske over, at alle vores TMenuItem filer står mellem TMainMenu og dens tilhørende end, men det er fordi, TMenuItem er en del af TMainMenu, for eksempel er Filer jo en del af vores menu (som vi kaldte ’Hovedmenu’). Man skriver jo heller ikke PHP koder uden først at omkranse dem med <? og ?> (eller hvordan du nu starter PHP) vel? ;-).

Det samme sker med selve menuen og vores formular. Derfor ser koden sådan her ud:

  1. object Form1: TForm1
  2.   Left = 75
  3.   Top = 75
  4.   Width = 350
  5.   Height = 250
  6.   Caption = "Form1"
  7.   Color = clBtnFace
  8.   Font.Charset = DEFAULT_CHARSET
  9.   Font.Color = clWindowText
  10.   Font.Height = -11
  11.   Font.Name = "MS Sans Serif"
  12.   Font.Style = []
  13.   OldCreateOrder = False
  14.   PixelsPerInch = 96
  15.   TextHeight = 13
  16.   Menu = Hovedmenu
  17.   object Hovedmenu: TMainMenu
  18.     object Filer: TMenuItem
  19.       Caption = "&Filer"
  20.     end
  21.     object Formater: TMenuItem
  22.       Caption = "F&ormater"
  23.     end
  24.     object Funktioner: TMenuItem
  25.       Caption = "F&unktioner"
  26.     end
  27.     object Hjaelp: TMenuItem
  28.       Caption = "&Hjælp"
  29.     end
  30.   end
  31. end

Bemærk, at lige inden vi starter menu objektet, tildeler vi vores form en attribut, kaldet ’Menu’. Den sætter vi lig navnet på vores menu, så ved programmet hvad den skal bruge som standard menu (ja, man kan godt skifte mellem flere menuer).

Nu er det tid at åbne vores Uni1.pas fil. Den skal se sådan her ud:

  1. unit Unit1;

  2. interface

  3. uses
  4.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5.   Dialogs, Menus;

  6. type
  7.   TForm1 = class(TForm)
  8.   Hovedmenu: TMainMenu;
  9.   Filer: TMenuItem;
  10.   Formater: TMenuItem;
  11.   Funktioner: TMenuItem;
  12.   Hjaelp: TMenuItem;
  13.   private
  14.     { Private declarations }
  15.   public
  16.     { Public declarations }
  17.   end;

  18. var
  19.   Form1: TForm1;

  20. implementation

  21. {$R *.dfm}

  22. end.

Jeg forklarer strukturen hen ad vejen, men jeg gider ærligt talt ikke forklare hver enkelte lille detalje i koden, da det er så grundlæggende, at kende til det når man programmerer Delphi, at jeg hellere vil henvise dig til www.google.com :-).

Men alle de objekter, vi oprettede i vores Uni1.dfm fil, smider vi ind under type sektionen. Det kan forklares sådan her:

objektnavn: objekttype.

Resten af koden skal du bare lade Delphi 6 om, det er noget den automatisk generérer.

Og hvis vi kører programmet (F9) …



Nu skal vi til det sjove; at lave et felt man kan skrive i. Til det skal vi bruge et objekt, kaldet en ’Memo’.
Åben endnu engang Uni1.dfm, og tilføj denne kode, så det bliver en del af formen, men ikke en del af menuen:

  1.   object Skrivefelt: TMemo
  2.     Left = 0
  3.     Top = 0
  4.   End

Kør dit program, og se resultatet. Det burde ligne det her:



I sandheden ikke noget kønt syn. Feltet passer ikke til hele vinduet, man kan ikke lave tabulatorindrykninger og der er ingen scrollbars. Men alt dette kan ændres med nogle få attributter.

  1.   object Skrivefelt: TMemo
  2.     Left = 0
  3.     Top = 0
  4.     Align = alClient
  5.     Font.Size = 10
  6.     Font.Name = "Courier New"
  7.     ScrollBars = ssVertical
  8.     WantTabs = True
  9.   End

Strukturen har vi jo gennemgået, så jeg forklarer kun hvad de enkelte attributter gør.

Left: Bestemmer hvor langt væk fra venstre side af formen, objektet skal placeres.
Top: Bestemmer hvor langt væk fra toppen af formen, objektet skal placeres.
Align: Bestemmer, hvad objektet skal ’lægge’ sig op ad:
alTop: Objektet lægger sig øverst
alBottom: Objektet lægger sig nederst
alClient: Objektet fylder al ledig plads.
Font: Sætter nogle egenskaber for skrifttypen. Font gør også brug af andre attributter. Jeg har brugt:
Size: Størrelsen på skrifttypen
Name: Navnet på skrifttypen
Scrollbars: Bestemmer hvilke scrollbar’s vores program skal vise:
ssVertical: Kun vertikal (lodret) scrollbar
ssHorizontal: Kun horisontal (vandret) scrollbar
ssBoth: Både vertikal og horisontal scrollbar
WantTabs: Om man skal kunne lave tabulator (tabs) indrykning i skrivefeltet.

Det er en del attributter, vi har med at gøre, men hvis du tænker noget med ’Alt det kan jeg slet ikke huske’, tænker du helt forkert. Delphi er både logisk og regelmæssigt, f. eks.:

ssVertical står selvfølgelig for ScrollbarsVertical, og alClient står for AlignClient. Ved at følge de regler kan du i de fleste tilfælde kode dine objekter helt selv.

Prøv at køre programmet igen.



Vi stopper her. Eller det gør artiklen i hvert fald, du gør klogt i selv at fortsætte. Dette kan vist knap nok kaldes en editor, eftersom den ikke har nogle funktioner, men som jeg sagde i starten: MEGET simpelt! Men da dette bestemt ikke er min sidste Delphi artikel, kan jeg vist godt tillade mig at sige, at nu leger du lige lidt med det du har lært, evt. læser nogle andre tutorials imens, og så giver vi sammen programmet nogle funktioner senere. Min næste artikel skal i hvert fald handle om at få programmet til at udføre specielle kommandoer. Men nok om det!

God fornøjelse ;-)
Sidst redigeret 13:43 02/06/2007
Oprettet af:

Delphi

Point modtaget: 0

Rate:
23:55 27/06/2006

Kommentarer

Giv din mening tilkende om denne artikel, eller læs andres.
Har du spørgsmål eller brug for hjælp til denne artikel henvises du til forummet.
Meget flot artikel, det er bare lidt en skam at der er så lidt der kan kode delphi. Jeg har godt nok ikke læst artiklen igennem, men kan man kompile programmet så man kan kører det uden af have delphi installeret?
Oprettet af:
  Mail
09:06 28/06/2006
Ja, det kan man sagtens. Men Delphi 6 har en indbygget compiler, som man ligeså godt kan bruge.
Oprettet af:
  Mail
12:55 28/06/2006
Vil ikke sige det er til begyndere som mig, kunne godt tænke mig at lære det men det er lidt for indviklet for mig,, Den får 4
Sidst redigeret 14:57 - 28/06/2006
Oprettet af:
  Mail
14:56 28/06/2006
Er det delphi 6 et program, hvis hvor kan man skaffe det?
Oprettet af:
  Mail
15:17 28/06/2006
Ja det er et program, som du laver dine programmer med hehe ... Men du kan selvfølgelig også vælge at kode det selv, det giver lidt flere muligheder...

Jeg ved ikke rigtigt hvor du kan få det, jeg fik det sendt af en ven over msn... Jeg mener du har min msn så jeg kan godt sende det til dig hvis du vil ? : )
Oprettet af:
  Mail
18:12 28/06/2006
Jo tak det vil jeg gerne,
Oprettet af:
  Mail
20:20 28/06/2006
Men kan man ikke også bare kode det i note pad og gemme det som en dfm fil?
Oprettet af:
  Mail
21:39 28/06/2006
Hvad koster programmet kunne godt tænke mig det 8)
Oprettet af:
  Mail
10:43 30/06/2006
Vil faktisk oss gerne have det.. Kan du sende til mig oss?
Oprettet af:
  Mail
15:09 30/06/2006
Jeg har en idé, hvad med at du lige satte det ind under downloads, det ville være meget lettere for dem som gerne vil have det :)
Oprettet af:
  Mail
16:39 01/07/2006
Du skal være oprettet og logget ind for at kommentere en artikel
Copyright © Rowl.dk v/ Michael Raagaard | 2005-12 | Alle rettigheder forbeholdes