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 nicht "klickbar" mit WMNCHitTest (https://www.delphipraxis.net/63842-link-nicht-klickbar-mit-wmnchittest.html)

th3lol 23. Feb 2006 15:58


Link nicht "klickbar" mit WMNCHitTest
 
Hi Leute,

benutze
Delphi-Quellcode:
procedure TForm1.WMNCHitTest(var M: TWMNCHitTest);
begin
  inherited;
  if M.Result = htClient then M.Result := htCaption;
end;
weil ich keine Titelleiste hab und die Form trotzdem bewegen will.
Nun hab ich auf der Form in einem Label einen Link. Das Label hat folgende einstellungen:
Delphi-Quellcode:
label1.Caption:='http://www.meineDomain.de';
label1.Font.Color:=clBlue;
label1.Font.Style:=[fsUnderline];
label1.Cursor:=crHandPoint;
Per
Delphi-Quellcode:
  ShellExecute(Application.Handle,'open',PChar(swDLlink2.Caption), nil, nil,SW_ShowNormal);
will ich die seite aufrufen.

Leider lässt mich
Delphi-Quellcode:
procedure TForm1.WMNCHitTest(var M: TWMNCHitTest);
nicht auf den Link.


Frage:
Gibt es eine Möglichkeit, dass das Label eine höhere priorität hat als der WMNCHitTest sodass ich auf den Link komme?



Gruß

th3lol 24. Feb 2006 16:19

Re: Link nicht "klickbar" mit WMNCHitTest
 
Gibt es denn hier keinen Profi der sich mit sowas auskennt?
ich _BRAUCH_ das! :(

meinetwegen lad ich den dann auch auf :cheers: ein :)

plzzzzzzzzzzzz



Gruß

jfheins 24. Feb 2006 16:44

Re: Link nicht "klickbar" mit WMNCHitTest
 
Was machsst du denn in der Message-Prozedur und wie/wann rufst du die Seite auf ?

th3lol 24. Feb 2006 17:05

Re: Link nicht "klickbar" mit WMNCHitTest
 
mein borderstyle ist none. daher hab ich mit "Fenster auch im Client-Bereich verschieben" (http://www.dsdt.info/tipps/?id=17) die Form beweglich gemacht.
sie wird also immer aufgerufen, sobald ich in die form klicke.

wenn da nun ein button ist, dann kann ich den wunderbar anklicken. listbox's und co gehen ebenfalls. aber halt das label will sich nicht hervorheben und somit wird dann beim klick auf den link nicht die shellexecute durchgeführt sondern halt immer noch
Delphi-Quellcode:
procedure WMNCHitTest(var M: TWMNCHitTest);
verständlich genug?


Gruß

jfheins 24. Feb 2006 17:18

Re: Link nicht "klickbar" mit WMNCHitTest
 
Und wenn du stattdessen einen TStaticText nimmst ?

Flocke 24. Feb 2006 17:59

Re: Link nicht "klickbar" mit WMNCHitTest
 
Du musst nur eine Zeile hinzufügen:
Delphi-Quellcode:
procedure TForm1.WMNCHitTest(var M: TWMNCHitTest);
begin
  inherited;
  if M.Result = htClient then
    if ControlAtPos(ScreenToClient(SmallPointToPoint(M.Pos)), false) = nil then
      M.Result := htCaption;
end;

th3lol 25. Feb 2006 20:23

Re: Link nicht "klickbar" mit WMNCHitTest
 
Geht immer noch nicht.

Weder verändert sich der Cursor beim MouseOver noch passiert irgendwas wenn ich auf den Link klicke.

Gibts noch weitere Lösungsvorschläge?



Gruß

Christian Seehase 25. Feb 2006 22:11

Re: Link nicht "klickbar" mit WMNCHitTest
 
Moin th3lol,

ich habe das mal etwas abgewandelt, bezüglich der Darstellung des Links:

Delphi-Quellcode:
procedure TForm1.WMNCHitTest(var M: TWMNCHitTest);
begin
inherited;
  if M.Result = htClient then
    if ControlAtPos(ScreenToClient(SmallPointToPoint(M.Pos)), false) = nil then
      M.Result := htCaption;
end;

procedure TForm1.Label1MouseEnter(Sender: TObject);
begin
  label1.Font.Color:=clBlue;
  label1.Font.Style:=[fsUnderline];
  Cursor:=crHandPoint;
end;

procedure TForm1.Label1MouseLeave(Sender: TObject);
begin
  label1.Font.Color:=clBlack;
  label1.Font.Style:=[];
  Cursor:=crDefault;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  label1.Caption:='http://www.meineDomain.de';
end;

procedure TForm1.Label1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  ShowMessage('Geht doch');
end;
Und das funktioniert bei mir so mit D7.

SirThornberry 26. Feb 2006 00:14

Re: Link nicht "klickbar" mit WMNCHitTest
 
eine bessere Möglichkeit wäre einfach im MouseDown der Form folgendes zu schreiben:
Delphi-Quellcode:
ReleaseCapture;
perform(WM_SysCommand, $F012, 0);
dadurch wird das verschieben des forms eingeleitet. Wenn jedoch ein label an der stelle ist wird kein verschieben eingeleitet weil das MouseDown des Forms nie aufgerufen wird.

th3lol 26. Feb 2006 01:04

Re: Link nicht "klickbar" mit WMNCHitTest
 
Moin!
Danke für eure Hilfe!

SirThornberry hat mir letzlich die Lösung verraten. Hab den Code auch bei den Bildern eingefügt, die das Programm quasi gestalten, jetzt funktioniert alles bestens.

Von Christian Seehase hab ich auch noch einge sachen übernommen, jedoch nur der "optik" des quellcodes wegen - es hat auch schon vorher funktioniert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:02 Uhr.

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