Relativ ny i delphi

Tags:    delphi

Hejsa, godt at se at der er sådan et forum her. Jeg er relativt ny i Delphi, bruger version 5, og har programmeret det meste af mit liv - dog er dette mit først forsøg på ægte OOP. Jeg har hentet nogle tutorials rundt omkring for at lære syntaxen og reglerne i Delphi (er så småt ved at have forstået det meste, tror jeg), og søger på nettet efter svar, hvis der er noget jeg ikke kan finde ud af. Jeg er af den opfattelse, at den bedste måde at lære et nyt programmeringssprog på er at kaste sig ud i det - jeg er derfor allerede begyndt at lave et projekt, jeg sidenhen vil offentliggøre.

Projektet i sig selv er meget nemt og simpelt og jeg vil ikke gå nærmere i detaljer med det her. Jeg vil i stedet gerne spørge, hvordan man gør to ting (jeg tror løsningen kan være lidt forskellig):

1) Et klik på et objekt vil jeg gerne have til at åbne computerens default browser og starte op på en af mig defineret hjemmeside

2) Have nogle links i en frame/form, folk kan trykke på, så de kommer til den hjemmeside (html style - men jeg kan ikke ret meget html)

Takker ydmygst for evt. hjælp ;)



Hej,

For at starte computerens browser op på en bestemt side, skal du bruge denne kommando på objektet:

ShellExecute(handle,'open',pchar('www.hjemmeside.dk'),nil,nil,sw_normal);

...og så skifter du selvfølgelig www.hjemmeside.dk ud med siden du ønsker at åbne.
Denne kommando virker kun, hvis du tilføjer følgende linie under "uses" i toppen af programmet's unit: ShellAPI
Altså så det kommer til at se sådan ud:
uses
StdCtrls, Buttons, osv. osv, ShellAPI

Du kan evt. også skrive
Close;
under kommandoen, så programmet lukker efter det har åbnet siden.

For at lave links, kan du tage en label (under "Standard") og dobbeltklikke på den og bruge samme kommando som før. Så kan du skifte hvad der skal stå i den label under "Caption" ude til venstre, og evt. skifte farven eller skrifttypen under "Font".

Håber det kan hjælpe dig!! :)



Hej,

For at starte computerens browser op på en bestemt side, skal du bruge denne kommando på objektet:

ShellExecute(handle,'open',pchar('www.hjemmeside.dk'),nil,nil,sw_normal);

...og så skifter du selvfølgelig www.hjemmeside.dk ud med siden du ønsker at åbne.
Denne kommando virker kun, hvis du tilføjer følgende linie under "uses" i toppen af programmet's unit: ShellAPI
Altså så det kommer til at se sådan ud:
uses
StdCtrls, Buttons, osv. osv, ShellAPI

Du kan evt. også skrive
Close;
under kommandoen, så programmet lukker efter det har åbnet siden.

For at lave links, kan du tage en label (under "Standard") og dobbeltklikke på den og bruge samme kommando som før. Så kan du skifte hvad der skal stå i den label under "Caption" ude til venstre, og evt. skifte farven eller skrifttypen under "Font".

Håber det kan hjælpe dig!! :)

Husk http:// :)
-
neuroman? det' da mig :D
Aloha - Er du fresh???



Hej,

For at starte computerens browser op på en bestemt side, skal du bruge denne kommando på objektet:

ShellExecute(handle,'open',pchar('www.hjemmeside.dk'),nil,nil,sw_normal);

...og så skifter du selvfølgelig www.hjemmeside.dk ud med siden du ønsker at åbne.
Denne kommando virker kun, hvis du tilføjer følgende linie under "uses" i toppen af programmet's unit: ShellAPI
Altså så det kommer til at se sådan ud:
uses
StdCtrls, Buttons, osv. osv, ShellAPI

Du kan evt. også skrive
Close;
under kommandoen, så programmet lukker efter det har åbnet siden.

For at lave links, kan du tage en label (under "Standard") og dobbeltklikke på den og bruge samme kommando som før. Så kan du skifte hvad der skal stå i den label under "Caption" ude til venstre, og evt. skifte farven eller skrifttypen under "Font".

Håber det kan hjælpe dig!! :)


Tak - det virkede perfekt, lad mig lige se om jeg forstår syntaxen (det ved jeg, jeg ikke gør):

ShellExecute - lige ud af landevejen...
handle - så vidt jeg kan læse mig til noget med, hvilket vindue der modtager alt muligt. Hvad gør præcis denne værdi, og hvilke andre værdier findes?

open - den er jeg med på :)
pchar('bla') - pointeren til den fil, der skal køres. Hvorfor en PChar? Jeg er ikke sikker på jeg har forstået forskellen mellem en string og en PChar...

nil nr. 1: Ingen parametre skal sendes til det program, der skal køres...

nil nr. 2: Intet default directory...

sw_normal: Iflg min hjælp-oversigt over ShellExecute burde den SW_SHOWNORMAL men det her virker fint... Noget med hvordan applikationen skal vises?

Til sidst - hvis jeg i forvejen har en browser åben og klikker på noget med denne kommando i, bliver der ikke åbnet en ny browser, men den gamle browser redirigeres til den nye hjemmeside. Nogen måde jeg kan ændre dette på? (Jeg er klar over, at det muligvis er en parameter til http-kommandoen, der ikke er en delphi kommando, men derfor kan det jo godt være, I ved det...)

Tusind mange tak for hjælpen. Jeg fandt ud af, at jeg også kunne skrive 'mailto: bla@bla.bla' - smukt!




ShellExecute - lige ud af landevejen...
handle - så vidt jeg kan læse mig til noget med, hvilket vindue der modtager alt muligt. Hvad gør præcis denne værdi, og hvilke andre værdier findes?


Du er på rette vej. Et handle er et håndtag til en hvilken som helt klasse. Oftest bruges et handle
i forbindelse med Visuelle klasser f.eks. Kombobokse, Forme etc.
Jeg kan ikke præcist huske hvad ShellExecute anvender "håndtaget" til, men jeg vil tro at det
er fordi at alle "Child" vinduer bør have en "Parent". Det er så Forælderens opgave at lukke "barnet"
ned igen (ShellExecute(Handle, "close" ... ?) . Hvis du f.eks skriver NIL i stedet har det nye vidue ikke nogen forælder og kan derfor ikke lukkes af den applikation der åbnede det.


open - den er jeg med på :)
pchar('bla') - pointeren til den fil, der skal køres. Hvorfor en PChar? Jeg er ikke sikker på jeg har forstået forskellen mellem en string og en PChar...


PChar er ikke en pointer til den fil der skal køres. PChar er en pointer til en "C" streng, altså en
streng der er termineret med et NULL tegn (0). ShellExecute er en Windows API funktion, og da
alle API funktioner anvender "C" variable i deres kald er du nødtil at konvertere dine variable
til "C" style. PChar("Et eller andet") er altså en nødvendig typecasting da ShellExecute ikke vil
acceptere en almindelig Pascal "String" som argument, da pascal strenge er et array af karaterer.
Puha den var styg ;-)


sw_normal: Iflg min hjælp-oversigt over ShellExecute burde den SW_SHOWNORMAL men det her virker fint... Noget med hvordan applikationen skal vises?


Jeps right again.. prøv for sjov SW_MAXIMIZED.


Final words....

Det ShellExecute gør er det samme som sker hvis du f.eks dobbeltklikker på en .XLS fil.
I så tilfælde kigger Windows i registreringsdatabasen under HKEY_CLASSES_ROOT og finder ud af hvilket program der er "associeret" med .XLS extensionen. Derpå startes det associerede program med filnavnet som argument.
Det samme sker hvis du højreklikker på et filobjekt og vælger "open" menu punktet. Bemærk at
menuen varierer alt efter hvilken type fil du har fat i. Der kan altså være andre muligheder end "open".
Grunden til at ovenstående overhovedet virker er altså kun fordi der næsten altid er en registreret
en applikation til HTML filer.

Tænk en gang hvilke muligheder det giver.
Du kan f.eks registrere dine egne fil extensioner og dermed starte dine egne programmer med
et dobbeltklik på dine filer.

Håber du kan bruge det her til noget

Im off to fight evil where ever it may show its ugly face |-)



t