Avatar billede c9steen Nybegynder
10. juni 2000 - 17:08 Der 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?
Avatar billede denniss Nybegynder
10. juni 2000 - 17:26 #1
Hjælpeform. skal have en uses form1

derefter burde du kunne skrive i hjælpeform.

form1.storudregning(bla bla bla)

også skal du sørge for at storudregning er i public delen. i toppen af form1.

Avatar billede c9steen Nybegynder
10. juni 2000 - 20:31 #2
functionen hedder:

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.

Lad lige dit svar være et svar ;-)
Avatar billede retep Nybegynder
10. juni 2000 - 21:20 #3
Arbejder funktionen på formen? Ellers kan du jo ligeså godt skrive den udenfor din form...

Hvis den arbejder på formen, ville jeg nok stadig skrive funktionen uden for formen, og tage en form med som indparameter...

function regData(f : TForm;str, val, rw, bool: string): string;

Mvh
Retep

Avatar billede sjensen Nybegynder
11. juni 2000 - 09:34 #4
c9steen,

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.



Avatar billede c9steen Nybegynder
11. juni 2000 - 23:16 #5
Mange tak for det udførlige svar :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester