Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Link in Delphi einbauen! (https://www.delphipraxis.net/3904-link-delphi-einbauen.html)

Trouble_Maker 4. Apr 2003 22:01


Link in Delphi einbauen!
 
Hiho alle,
so ich will ein Link in mein Delphi programm einbauen! Wie dies funktioniert weiss ich schon:

Code:
procedure TForm1.Label1Click(Sender: TObject);
begin
ShellExecute(Application.Handle, 'open',
             PChar(Label1.Caption), nil, nil,
             SW_ShowNormal);
dabei wird dann die Seite geöffnet, wie das label die Cation hat!

So: Jetzt will ich, dass wie im Internet-Explorer die Links untersrichen werden, sobald man darüberfährt!
ich habe das probiert:

Code:
procedure TForm1.Label1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
label1.Font.Style:=[fsUnderline];
end;
Aber danach bleibt dann das Label untersrichen!
Das will ich aber nicht!
Die Lösung ist bestimmt ganz einfach! Aber ich komme nicht drauf!
Danke

Trouble_Maker

flomei 4. Apr 2003 22:50

Ich hab probiert das mit OnMouseLeave zu machen:
Delphi-Quellcode:
procedure TForm1.undo_underline(Sender: TObject);
begin
if
Label1.Font.Style:=[fsUnderline]
then
Label1.Font.Style:=[fsNormal]
end;
Funktioniert aber leider noch nicht. Vielleicht kannst du das irgendwie so umstellen, dass es geht.

MfG Florian

Luckie 5. Apr 2003 02:55

Du mußt dein Label durch ein TStaticText ersetzen, da ich das Handle brauche und TLabel ist von TGraficControl abgeleitet und nicht von TWinControl und besitzt somit kein Handle. Es unterscheidet sich in der Handhabung aber nicht von einem TLabel.
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    StaticText1: TStaticText;
  private
    { Private-Deklarationen }
    procedure CMMOUSEENTER(var msg: TMessage); message CM_MOUSEENTER;
    procedure CMMOUSELEAVE(var msg: TMessage); message CM_MOUSELEAVE;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.CMMOUSEENTER(var msg: TMessage);
var
  pt : TPoint;
begin
  GetCursorPos(pt);
  if WindowFromPoint(pt) = StaticText1.Handle then
  begin
    StaticText1.Font.Color := clBlue;
    StaticText1.Font.Style := [fsUnderline];
  end;
end;

procedure TForm1.CMMOUSELEAVE(var msg: TMessage);
var
  pt : TPoint;
begin
  GetCursorPos(pt);
  if WindowFromPoint(pt) <> StaticText1.Handle then
  begin
    StaticText1.Font.Color := clBlack;
    StaticText1.Font.Style := [];
  end;
end;
Warum einfach, wenn es umstaändlich geht. Habe gerade gesehen ab D6 gibt es bei TLabel das Ereignis OnMouseEnter und OnMouseLeave. Brauchst du also nicht nachrüsten und kannst dein Label nehmen.

Daniel B 5. Apr 2003 07:42

Hallo,

ich hätte hier auch noch eine Komponente für Dich, ist aber nicht von mir!
TLinkLabel.

Grüsse, Daniel :hi:

flomei 5. Apr 2003 11:32

Sehr gute Komponente! Find ich gut! Gefällt mir! :bouncing4:

MfG Florian

sakura 5. Apr 2003 11:53

Es gibt übrigens noch die offizielle DP-LinkLabel Komponente

http://www.delphipraxis.net/download.php?id=265

...:cat:...

Trouble_Maker 5. Apr 2003 15:42

Hmm...
also habe den Code von Luckie ausprobiert!
Leider habe ich aber kein CM_MOUSEENTER und CMMOUSELEAVE !!!
(besitze Delphi 51) kann das sein, dass es das da noch nich gibt!
-
Und wie installiere ich diese TLinkLabel ???
hab keine Ahnung ^^

Kann mir das jemand erklären ?!?

Danke Trouble_Maker

Christian Seehase 5. Apr 2003 15:49

Moin TroubleMaker,

CM_MOUSEENTER/CM_MOUSELEAVE sind in der Unit Controls deklariert.
Die müsstest Du dann noch in die Uses Liste mit einbinden.
Wobei ich mich nur frage, warum das bei Dir nicht der Fall ist, denn diese Unit wird standardmässig mit eingebunden, wenn Du ein neues Formular erzeugst (z.B. über Datei\Neues Formular)

APP 5. Apr 2003 15:50

Hallo,
habe zu Hause auch D5, bei mir Funktioniert Luckies Code,
für CM_MOUSEENTER muß die Unit "Controls.pas" in USES eingebunden sein (sollte aber in jedem Form automatisch eingebunden sein).

Daniel B 5. Apr 2003 15:50

Hallo,
Zitat:

Zitat von Trouble_Maker
Und wie installiere ich diese TLinkLabel ???
hab keine Ahnung ^^

Kann mir das jemand erklären ?!?

Also, im Menü auf Komponenten\Komponente installieren, dann im kommenden Fenster auf der Reiter "In enues Package", dort wählst Du dann die Unit aus und vergibst einen Namen für das neue Package und dann auf OK klicken.

Wenn Du dieses Package erstellt hast, dann mach einen Doppelklich drauf. Anschliessen sieht man ein kleines Fenster mit 3 oder 4 grossen Icons, eins davon heisst Intallieren, das anklicken, dabei wird/wurde die Komponente installiert, anschliessend kommt noch eine Abfrage ob Du das Speichern willst oder nicht, da sagst Du dann einfach Nein und alles ist Fertig.

Grüsse, Daniel :hi:

APP 5. Apr 2003 15:54

Hallo,
zur Installation von TLinkLabel auf das Package "PkgLinkLabel.dpk" doppelklicken, dann in D5 auf "installieren" drücken, danach erscheint in der Kompo-Leiste ein Reiter 'Delphi-PRAXiS' wo Du die Komponente findest.

APP 5. Apr 2003 15:55

ich gebs auf, heute bin ich immer Zweiter :bounce1: :bounce2: :firejump:

Trouble_Maker 5. Apr 2003 15:59

hiho,
habs hinbekommen es zu installiern!

Aber wie kann ich jetzt es mit dieser Komponente einstellen, dass es ein Link wie im Internet ist ?
mit dem unterstrichenen, wenn die Maus darauf ist!

danke


Trouble_Maker

Daniel B 5. Apr 2003 16:00

Zitat:

Zitat von APP
Hallo,
zur Installation von TLinkLabel auf das Package "PkgLinkLabel.dpk" doppelklicken, dann in D5 auf "installieren" drücken, danach erscheint in der Kompo-Leiste ein Reiter 'Delphi-PRAXiS' wo Du die Komponente findest.

TLinkLabel hatte ich gepostet, das was sakura gepostet hat, heisst TDPLinkLabel. Nicht durcheinander bringen, es sind zwei verschiedene Komponenten!

Grüsse, Daniel :hi:

Daniel B 5. Apr 2003 16:03

Zitat:

Zitat von Trouble_Maker
Aber wie kann ich jetzt es mit dieser Komponente einstellen, dass es ein Link wie im Internet ist ?
mit dem unterstrichenen, wenn die Maus darauf ist!

Du musst es wie ein normales Label benutzen, einfach aufs Formular setzen und im OI bei Url die Url eingeben, alles andere macht die Komponente, Du musst nichts einstellen!

Und wenn Du bei Caption was eingibst, dann sieht es wie ein benannter Link aus, also sowas.

Grüsse, Daniel :hi:

Trouble_Maker 5. Apr 2003 16:20

hmm nein ich möchte es so machen, dass so machen:

Code:
label1.Font.Style:=[];
das das so ist!
und später, wenn man mit der Maus darüberfährt soll es unterstrichen werden!
also so :

Code:
label1.Font.Style:=[fsUnderline];
aber wie geht das ? Es geht ja nich mit onmousemove!!!

???

Trouble_Maker

Daniel B 5. Apr 2003 16:56

Delphi-Quellcode:
procedure TForm1.Label1MouseEnter(Sender: TObject);
begin
  Label1.Font.Style := [fsUnderline];
end;

procedure TForm1.Label1MouseLeave(Sender: TObject);
begin
  Label1.Font.Style := [fsItalic];
end;
Grüsse, Daniel :hi:

Trouble_Maker 5. Apr 2003 22:21

arg... das is wohl nich klar geworden!
Aber bei mir bei den Ereignissen, habe ich kein onmouseenter und onmouseleave !!!

Woran liegt das ?!?


Danke...

Luckie 5. Apr 2003 22:25

Also, ich kenne die Komponente nicht, aber sie sollte eigentlich ein OnMouseEnter und OnMouseLeave haben. Sollte das nicht der Fall sein, warum ersetzt du dein Label nicht durch ein TStaticText und nimmst meine Lösung?

Daniel B 5. Apr 2003 23:22

Zitat:

Zitat von Trouble_Maker
arg... das is wohl nich klar geworden!
Aber bei mir bei den Ereignissen, habe ich kein onmouseenter und onmouseleave !!!

Also, die Komponente die ich gepostet hatte, hat alle Eigenschaften und Funktionen wie das normale Label auch, ist ja auch davon abgeleitet, nur das es noch zusätzlich 2, 3 Eigenschaften zusätzlich hat. Also entweder ist bei installation was schief gegangen, oder Du siehst es einfach nicht, wobei ich da einfach mal auf "geistige aussetzer ab 23Uhr". ;) :twisted:
Beweise im Anhang!
Und wenn Du es immer noch nicht glauben willst, dann nimm doch einfach Luckies Lösung und gut is. :)

Grüsse, Daniel :hi:

Trouble_Maker 6. Apr 2003 10:08

ach.... irgendwie is das alles *******!

Ok der Bildbeweis is in Ordnung ! Aber trotzdem habe ich nich onmouseenter und onmouseleave! Weiss nich woran das liegt!

Und das mit dem StaticText kann ich auch nich machen, weil dort bei den Ereignissen auch kein cmmouseenter und cmmouseleave gibt! :-(

liegt das an meinem Delphi ???


Trouble_Maker

Daniel B 6. Apr 2003 10:17

Also ich denke das bei der Installation was scheif gegangen ist, oder Delphi selbst ne Macke hat und evtl. neu installiert werden muss.
Wie dem auch sei, folgendes ist mit dem Static auf jedenfall möglich.
Delphi-Quellcode:
procedure TForm1.StaticText1MouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
begin
  StaticText1.Font.Style := [fsUnderline];
end;
Grüsse, Daniel :hi:

sakura 6. Apr 2003 10:18

Also die ScreenShot bezogen sich auf die Komponente, die Daniel gepostet hatte. Was ist eigentlich das Problem mit dem DPLinkLabel. Das hat doch alle Eigenschaften für HoverColor, VisitedColor und LinkColor? Und ist entwickelt und getestet für alle Versionen ab Delphi 5.

...:cat:...

Luckie 6. Apr 2003 14:59

Zitat:

Zitat von Trouble_Maker
Und das mit dem StaticText kann ich auch nich machen, weil dort bei den Ereignissen auch kein cmmouseenter und cmmouseleave gibt! :-(

Wenn du jetzt neben mir sitzen würdest hättest du ein blaues Auge mehr.

Was meinst du warum ich die Klimmzüge mit:
Delphi-Quellcode:
procedure CMMOUSEENTER(...
Gemacht habe? Übernimm den Code inklusive den Prozedur-Deklarationen so wie er da ist und fertig is.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:01 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz