10. juni 2000 - 17:08Der er
4 kommentarer og 1 løsning
"arv" af function til hjælpedialoger
I min Form1 har jeg oprettet en function, der foretager en større matematisk udregning. Tilsvarende function skal anvendes i en hjælpe-form.
Hvordan får jeg fat i den allerede optrettede function fra min hjælpeform, så jeg ikke skal gendanne de samme udregninger og således at evt. ændringer altid kun skal gennemføres ét og samme sted?
function regData(str, val, rw, bool: string): string;
Hvordan skal den initieres i Public delen og hvordan skal den så endelig hedde, hvor jeg laver de endelige udregninger? Så vidt jeg kan se, må det være et spørgsmål om, at den bliver en "offentlig forward" - håber udtrykket dækker.
i almindelighed er det en fordel at lave specielle funktioner i separate units, som du efterfølgende kan inkludere i dine programmer. Metoden med at lægge dem i en form, og så gøre dem brugbare fra andre forms er ikke altid hensigtsmæssig. Og specielt ikke når du senere vil bruge den samme funktion i et andet program.
Opret derfor en unit som du inkluderet i dit projekt. Eks.:
Unit funcProc;
Interface
Uses sysutils, windows,
function regData(str, val, rw, bool: string): string;
Implementation
function regData(str, val, rw, bool: string): string; begin // do your stuff og result := {resultat-strengen}; end;
End.
i din form1 sætter du så navnet "funcproc" ind i uses-clausen, enten i interface delen eller i implementeringsdelen. Det er ikke så vigtigt da den ikke indeholder variable der skal kunne læses/skrives fra andre units, men kun har en (eller flere?) funktioner der returnerer en værdi.
Funktionen kaldes derefter på helt normal vis fra din form1. Og hvis du har mange forskellige funktioner/procedurer i din unit, vil Delphi selv sørge for kun at flytte dem der rent faktisk bruges over i det exe-program du laver. Du kan derfor gsagtens have masser af forskellige funktioner/procedurer i samme unit, selvom de ikke alle bruges af det pågældende program.
På samme måde kan du med fordel lave globale variable du skal læse/skrive fra alle units, uanset hvornår disse "creates". Eks.
Unit GlobaleVars;
Interface
var streng1 : string; integer1 : integer;
Implementation
End.
Ved at inkludere GlobaleVars i din uses-clause i interface delen af dine forms, kan du læse/skrive i de 2 variable fra alle dine forms. Det eneste du skal huske er at du i hovedformen starter med at initialisere dem inde du begynder at læse/skrive i dem.
Men.. Med variable skal du være opmærksom på at Delphi tager pladsen i hukommelsen for alle variable, selvom de ikke bruges af det pågældende program, så her er det ikke hensigtsmæssigt bare at fylde en masse variable ind og lade alle dine programmer bruge samme unit. Lav istedet en unit til hvert program.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.