Avatar billede nbn Nybegynder
22. oktober 2000 - 17:34 Der er 12 kommentarer

Hvordan laver man et link?

Hvordan laver jeg http og e-mail links i Delphi 5.0?
Avatar billede lrj Nybegynder
22. oktober 2000 - 17:53 #1
Enten kan du brygge din egen komponent til det, eller hente en af de utallige der findes på nettet. Det er nemlig en klassisk start-komponent at lave når man starter på Delphi :)
Avatar billede nbn Nybegynder
22. oktober 2000 - 18:03 #2
Det er faktisk mit første program jeg har gang i:)
Hvor finder jeg så den komponent?
Avatar billede lrj Nybegynder
22. oktober 2000 - 18:24 #3
Delphi Super Page er en genial side til at hente komponenter fra.
Et mirror er her: http://community.borland.com/homepages/dsp/

Du kan finde andre med http://www.google.com - bare søg efter navnet på siden.

http://www.delphi3000.com er også kick-ass. Her kan du læse en artikel om netop dette:
http://www.delphi3000.com/article.asp?id=844
Avatar billede snowball Novice
22. oktober 2000 - 18:35 #4
Se nedenstående eksempel. I label\'en (eller en knap for den sags skyld) onclick event laver du bare en shellexecute som nedenstående !

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, shellapi;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    procedure Label1Click(Sender: TObject);
    procedure Label2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Label1Click(Sender: TObject);
begin
  ShellExecute(Handle,\'open\',PChar(\'http://www.eksperten.dk\'),pchar(\'\'),pchar(\'\'),SW_SHOWNORMAL);
end;

procedure TForm1.Label2Click(Sender: TObject);
begin
  ShellExecute(Handle,\'open\',PChar(\'mailto:test@test.dk\'),pchar(\'\'),pchar(\'\'),SW_SHOWNORMAL);
end;

end.

Snowball
Avatar billede borrisholt Novice
23. oktober 2000 - 15:55 #5
I tråd med snowballs svar vil jeg lige vise det følgende :

Placer 2 labels på den form. Lad label1 og label2 have samme mouseMoveEvent. Giv dem hvert deres onClick event. Og skriv så det følgende :


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    procedure Label1Click(Sender: TObject);
    procedure Label1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
    procedure FormCreate(Sender: TObject);
    procedure Label2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

uses
  ShellAPI;
procedure TForm1.Label1Click(Sender: TObject);
begin
  ShellExecute(handle,\'open\',PChar(\'mailto:\'+ (Sender as TLabel).Caption),\'\',\'\',SW_SHOWNORMAL);
end;

procedure TForm1.Label1MouseMove(Sender: TObject; Shift: TShiftState; X,  Y: Integer);
begin
  with (Sender as TLabel) do
  begin
    Font.Color := clBlue;
    Font.Style := [fsBold,fsUnderline];
    Cursor := crHandPoint;
  end;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,  Y: Integer);
begin
  Label1.Font.Color := clBlack;
  Label1.Font.Style := [fsBold];

  Label2.Font.Color := clBlack;
  Label2.Font.Style := [fsBold];
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Label1.Caption := \'Jens@Borrisholt.com\';
  Label2.Caption := \'http://Borrisholt.com\';
end;

procedure TForm1.Label2Click(Sender: TObject);
begin
  ShellExecute(handle,\'open\',PChar((Sender as TLabel).Caption),\'\',\'\',SW_SHOWNORMAL);
end;

end.


Så har du lidt WEB efekt over det ...

Se i øvrigt : http://www.eksperten.dk/spm/27023
Jens B
Avatar billede snowball Novice
23. oktober 2000 - 16:16 #6
En mindre detalje til Jens\'s kommentar: Du mangler lige ShellAPI under Uses ! Uden den kan man ikke bruge ShellExecute ! ;)

Snowball
Avatar billede borrisholt Novice
23. oktober 2000 - 16:25 #7
En mindere detalje tli SnowBall\'s kommentar :

Jeg havde husket

uses
  ShellAPI;

Den står bare lige neden under
var
  Form1 : TForm1;

:o)

Jens B
Avatar billede snowball Novice
23. oktober 2000 - 16:34 #8
Damn...Det havde jeg ikke lige set, sorry ;o)

Snowball
Avatar billede snowball Novice
23. oktober 2000 - 16:35 #9
Er der egentlig nogen forskel på om man placerer den under Uses eller som du har gjort det ???

Snowball
Avatar billede borrisholt Novice
23. oktober 2000 - 16:57 #10
Ja ! Det er der temmelig stor forskel på !

Hvis du har unti1, der bruger unit2 globalt (oppe fro oven) og du har unit2 der bruger unit1 globalt så får du den følgende compilerfejl :

[Fatal Error] Unit1.pas(7): Circular unit reference to \'Unit1\'

Det kan løses ved at sætte din uses klausul ned så den er privat for din unit. Det var der jeg satte den. Hvis din klasse definition ikke bruger noget fra unit2, er der ingen grund til at sætte din uses klausul global. På samme måde med ShellAPI.

Jens B
Avatar billede lsn Nybegynder
23. oktober 2000 - 20:58 #11

Borris holt >>
Hvor får du egentlig al den viden fra?
Hvor gammel er du egenlig, og hvor lang tid har du programmeret?

LSN
Avatar billede borrisholt Novice
24. oktober 2000 - 08:24 #12
LSN > Min viden opstår fra min erfaring som programmør. Jeg er 28 år gammel, og har været det halve af verden rundt ....

Jeg har 4 års erfaring med Delphi og 3 år med C++. Ud over det så kan jeg noget JavaScript og ASP på \"køkkenbrods kunstner niveau\", altså sådan noget lidt hjemme strikket noget.

Som du sikkert har obseveret så skriver jeg gerne i nyhedsgrupper. Jeg har tidligere været særdeles aktiv i nogle af Borlands nyhedsgrypper on hhv. Delphi og C++.

I øvrigt LSN .. Så hedder jeg BOrrisholt og ikke Borris Holt :-)

Jens B

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