Seite 1 von 1

Mailto auf der Oberfläche [ERLEDIGT]

Verfasst: Do, 01. Mär 2018 16:43
von Manfred
wie kann man einen mailto Link auf den Bildschirm bringen im Programm? Ich habe im Moment keine Ahnung, wie das klappen könnte. So wie auf Webseiten. Man klickt den Text an und es wird der Standardmailclient geöffnet mit einer Mailadresse im Empfänger eingetragen.

Re: Mailto auf der Oberfläche

Verfasst: Do, 01. Mär 2018 17:04
von Martin Altmann
Hmm,
mach doch ein Static mit der Mailadresse und setze den lbclick-Slot entsprechend: Dort rufst Du einfach mittels API (ShellExecuteA) und als Parameter entsprechend mailto: mit der selben Mailadresse auf.

Viele Grüße,
Martin

Re: Mailto auf der Oberfläche

Verfasst: Do, 01. Mär 2018 17:31
von Tom
Mit eXpress++ sogar noch einfacher

Code: Alles auswählen

@ 1,1 DCSAY 'Mail senden an '+cMailAdd SIZE 30,1 HYPERLINK {||MailSenden(cMailAdd)}  COLOR GRA_CLR_BLUE,XBPSYSCLR_TRANSPARENT
Plus: Es wird unterstrichen, also als Link erkennbar!

Re: Mailto auf der Oberfläche

Verfasst: Do, 01. Mär 2018 17:33
von Manfred
ja Tom, Danke. Ich Schnarchnase. Express++ war das Zauberwort.

Re: Mailto auf der Oberfläche

Verfasst: Do, 01. Mär 2018 17:39
von Martin Altmann
Um es optisch perfekt zu machen, nimmst du für den Text Blau als Farbe und unterstrichen als Attribut.
Außerdem belegst Du noch die Slots für :enter() und :leave() und änderst in erstem den Mauszeiger auf eine Hand (kannst Du als Ressource vom Type ico einlinken in Deiner .arc-Datei und dann mittels :setPointer( , <NUMBER_OF_RESSOURCE>, XBPWINDOW_POINTERTYPE_ICON ) aktivieren). In dem zweiten Slot änderst Du den Mauszeiger einfach wieder zurück auf Standard (mittels :setPointer( , XBPSTATIC_SYSICON_DEFAULT, XBPWINDOW_POINTERTYPE_SYSPOINTER ) )

Yup - eXpress++ macht das sicherlich auch nicht viel anders.

Viele Grüße,
Martin

Re: Mailto auf der Oberfläche [ERLEDIGT]

Verfasst: Do, 01. Mär 2018 17:51
von Tom
Yup - eXpress++ macht das sicherlich auch nicht viel anders.
Nee. Exakt genauso. 8)

Re: Mailto auf der Oberfläche [ERLEDIGT]

Verfasst: Fr, 02. Mär 2018 0:33
von DelUser01
geht das auch so auf einem normalen XbpDialog?
Ohne Button, nur Text, unterstrichen, blau und anklickbar?

Re: Mailto auf der Oberfläche [ERLEDIGT]

Verfasst: Fr, 02. Mär 2018 5:56
von Jan
Ich mach das so wie oben beschrieben: Enfach einen Text als :caption eines XbpStatic ausgeben in blau und unterstrichen. Zusätzlich baue ich den Cursor um auf Pfeil, damit das auch darüber sofort erkennbar ist. Und beim Anklicken starte ich per RunShell das Mailprogramm und übergeben dort direkt die Empfängeradresse und den Betreff.

Das sieht dann z. B. so aus:

Code: Alles auswählen

oXbp := XbpStatic():new(oDlg:drawingArea, , {10, 210}, {250, 20}, {{XBP_PP_FGCLR, GRA_CLR_ BLUE}})
oXbp:caption := "mail@ichbins.de"
oXbp:options := XBPSTATIC_TEXT_WORDBREAK+XBPSTATIC_TEXT_TOP+XBPSTATIC_TEXT_CENTER
oXbp:SetPointer( , 200, XBPWINDOW_POINTERTYPE_POINTER)
oXbp:lbClick := {|| RunShell("/C start MAILTO:mail@ichbins.de?subject=Anfrage" , ;
                             , ;
                             .T., ;
                             .T.)}
oXbp:create()
Jan

Re: Mailto auf der Oberfläche [ERLEDIGT]

Verfasst: Fr, 02. Mär 2018 8:04
von DelUser01
OK - hab's jetzt auch begriffen. Das Text-Static wird ja beim anklicken auch erkannt.

Pointer/Cursor-Zeichen umschalten:
Das mit dem Umschalten des Cursors hatte ich früher schon bei CR, später bei Hybrid eingebaut. Irgendwann ging es nur noch manchmal, inzwischen gar nicht mehr. Nur noch die Ballon-Info. Vermutlich habe ich die Implementierung unter Hybrid falsch eingebaut, da muss ich nochmal dran, sonst erkennt man das mit dem anklickbaren Text nicht richtig...

Re: Mailto auf der Oberfläche [ERLEDIGT]

Verfasst: Do, 18. Jun 2020 8:52
von Manfred
hm,
habe das hier nochmal ausgegraben. Ist irgendwie in Vergessenheit geraten. Das hier:

Code: Alles auswählen

@ nX,nY DCSAY "mailto:" + cMailAdresse;
               COLOR GRA_CLR_BLUE,XBPSYSCLR_TRANSPARENT;
           HYPERLINK {|| RunShell("/C mailto:" + cMailadresse,"Rundll32.exe",.T.,,.T.)};
           SAYCENTER;
                SIZE 0
wird zwar so angezeigt wie gewünscht, aber durch Anklicken erreiche ich gar nichts. Wo denke ich falsch?

Re: Mailto auf der Oberfläche [ERLEDIGT]

Verfasst: Do, 18. Jun 2020 9:00
von Tom

Code: Alles auswählen

@ 0,0 DCSAY "meine@hotline.de" COLOR GRA_CLR_BLUE SAYSIZE 0 HYPERLINK {||RunShell("url.dll,FileProtocolHandler mailto:meine@hotline.de","RunDLL32.EXE",.T.,.T.)}