Necromorph Posted December 10, 2010 Posted December 10, 2010 Ok, i just started using this these rich edit controls because of my last post about editing a rich text doc. there is a lot variables that are undified, but i think you get the point.(i get them from Acitive Directory Query) $obj_rtf = @AppDataDir & '\Microsoft\Signatures\' & $adObj_company & '_email_signature.rtf' $frm_main = GUICreate('', 0, 0) $ctrl_Edit = _GUICtrlRichEdit_Create($frm_main, '', 0, 0) _GUICtrlRichEdit_StreamFromFile($ctrl_Edit, $obj_rtf) _GUICtrlRichEdit_GotoCharPos($ctrl_Edit, 0) _GUICtrlRichEdit_SetCharAttributes($ctrl_Edit, '+bo') If $adObj_displayName > '' Then _GUICtrlRichEdit_InsertText($ctrl_Edit, $adObj_displayName & @LF) If $adObj_title > '' Then _GUICtrlRichEdit_InsertText($ctrl_Edit, $adObj_title & @LF) If $adObj_mail > '' Then _GUICtrlRichEdit_InsertText($ctrl_Edit, $adObj_mail & @LF) If $adObj_mobile > '' Then _GUICtrlRichEdit_InsertText($ctrl_Edit, $adObj_mobile & " mobile" & @LF) If $adObj_telephoneNumber > '' Then _GUICtrlRichEdit_InsertText($ctrl_Edit, $adObj_telephoneNumber & " direct" & @LF) _GUICtrlRichEdit_StreamToFile($ctrl_Edit, $obj_rtf) GUIDelete($frm_main) Now, the $adObj_mail, i want to be a link, but I cant get the _GUICtrlRichEdit_SetAttribute($ctrl_Edit, '+li') to work. if i open the document and go to the end of that line, and hit "enter" it makes it a link, i have tried removing the @LF at the end of the line, and making it a new one, but that doesnt help, i m just trying to figure out if this is even possiable. thanks a lot.
PsaltyDS Posted December 12, 2010 Posted December 12, 2010 Since you didn't post a runnable demo, I can only guess at the issue, but it works by setting a selection, then setting the attribute on that selection: #include <GuiConstants.au3> #include <GuiRichEdit.au3> $sRTF = @ScriptDir & "\Test1.rtf" $sLink = "www.autoitscript.com" $sText = "This is line one." & @CRLF & _ "This is line two." & @CRLF & _ "Line three is the link: <insert link here>" & @CRLF & _ "This is line four." & @CRLF & _ "This is line five." & @CRLF $hGUI = GUICreate('Test1.rtf', 400, 400) $hRichEdit = _GUICtrlRichEdit_Create($hGUI, $sText, 10, 10, 380, 340) $idButton = GUICtrlCreateButton("Create Link", 150, 360, 100, 30) GuiSetState() While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE _GUICtrlRichEdit_Destroy($hRichEdit) Exit Case $idButton $aPos = _GUICtrlRichEdit_FindTextInRange($hRichEdit, "<insert link here>") _GUICtrlRichEdit_SetSel($hRichEdit, $aPos[0], $aPos[1]) _GUICtrlRichEdit_ReplaceText($hRichEdit, $sLink) $aPos = _GUICtrlRichEdit_FindTextInRange($hRichEdit, $sLink) _GUICtrlRichEdit_SetSel($hRichEdit, $aPos[0], $aPos[1]) _GUICtrlRichEdit_SetCharAttributes($hRichEdit, "+li") EndSwitch WEnd Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law
Necromorph Posted December 13, 2010 Author Posted December 13, 2010 (edited) Thanks for the help, it does work in your script, the problem is that im using this technique to actuall edit an exsiting .rtf file. so if you add the _GUICtrlRichEdit_StreamToFile($hRichEdit, $sRTF) [after you use the button to change to link] and push it to a file, it still doesn't retain the "+li" attribute, but if you use "+bo" for bold, that works. im starting to think this isn't possiable #include <GuiConstants.au3> #include <GuiRichEdit.au3> $sRTF = @ScriptDir & "\test.rtf" $sLink = "www.autoitscript.com" $sText = "This is line one." & @CRLF & _ "This is line two." & @CRLF & _ "Line three is the link: <insert link here>" & @CRLF & _ "This is line four." & @CRLF & _ "This is line five." & @CRLF $hGUI = GUICreate('Test1.rtf', 400, 400) $hRichEdit = _GUICtrlRichEdit_Create($hGUI, $sText, 10, 10, 380, 340) $idButton = GUICtrlCreateButton("Create Link", 150, 360, 100, 30) GuiSetState() While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE _GUICtrlRichEdit_StreamToFile($hRichEdit, $sRTF) _GUICtrlRichEdit_Destroy($hRichEdit) Exit Case $idButton $aPos = _GUICtrlRichEdit_FindTextInRange($hRichEdit, "<insert link here>") _GUICtrlRichEdit_SetSel($hRichEdit, $aPos[0], $aPos[1]) _GUICtrlRichEdit_ReplaceText($hRichEdit, $sLink) $aPos = _GUICtrlRichEdit_FindTextInRange($hRichEdit, $sLink) _GUICtrlRichEdit_SetSel($hRichEdit, $aPos[0], $aPos[1]) _GUICtrlRichEdit_SetCharAttributes($hRichEdit, "+li") EndSwitch WEnd but thanks again. Edited December 13, 2010 by redLabel
PsaltyDS Posted December 13, 2010 Posted December 13, 2010 (edited) Hmm... this works, including the link in the saved file: #include <GuiConstants.au3> #include <GuiRichEdit.au3> $sRTF = @ScriptDir & "\test.rtf" $sLink = "www.autoitscript.com" $sText = "This is line one." & @CRLF & _ "This is line two." & @CRLF & _ "Line three is the link: <insert link here>" & @CRLF & _ "This is line four." & @CRLF & _ "This is line five." & @CRLF $hGUI = GUICreate('Test1.rtf', 400, 400) $hRichEdit = _GUICtrlRichEdit_Create($hGUI, $sText, 10, 10, 380, 340) _GUICtrlRichEdit_AutoDetectURL($hRichEdit, True) $idButton = GUICtrlCreateButton("Create Link", 150, 360, 100, 30) GUISetState() While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE If Not _GUICtrlRichEdit_StreamToFile($hRichEdit, $sRTF) Then MsgBox(16, "Error", "Save failed: @error = " & @error) _GUICtrlRichEdit_Destroy($hRichEdit) Exit Case $idButton $aPos = _GUICtrlRichEdit_FindTextInRange($hRichEdit, "<insert link here>") _GUICtrlRichEdit_SetSel($hRichEdit, $aPos[0], $aPos[1]) _GUICtrlRichEdit_ReplaceText($hRichEdit, $sLink) EndSwitch WEnd The _GuiCtrlRichEdit_AutoDetectURL() function creates a actual COM object link, not just color and underlining. P.S. Looks like you should also be able to create and/or copy a link in the Clipboard, then add it with _GUICtrlRichEdit_PasteSpecial(), but I don't have time to try it out. Edited December 13, 2010 by PsaltyDS Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law
Necromorph Posted December 13, 2010 Author Posted December 13, 2010 Good work, it works with a URL, but the main issue was to use it with an email address, and this doesn't work. But thanks a lot, though you have been most helpfull, i will still try to make this work.
PsaltyDS Posted December 13, 2010 Posted December 13, 2010 I beg ask manfully to differ. How did you format the email? Just change this line in my previous script: $sLink = "mailto:DontSpamMeBro@nospam.loc" Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law
Necromorph Posted December 15, 2010 Author Posted December 15, 2010 this does work, but if try to remove the "mailto:" part, it wrecks it. im telling you, this is impossable. ahah, but i will keep trying. thanks again
PsaltyDS Posted December 15, 2010 Posted December 15, 2010 How is it an email link if you don't put "mailto:" in front of it? I thought that was the point all along. Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law
Necromorph Posted December 15, 2010 Author Posted December 15, 2010 (edited) if you create an RTF doc and open it in word, and type "ThisIsAnEmail@ADomain.com" then hit enter, it will make it a link. and you don't need the "Mailto:" infront of it. if i use the above sample, it will say "mailto:ThisIsAnEmail@ADomain.com". im try to do this without opening the document, and sending the 'keys' followed by an Send('{ENTER}') or something and with no 'mailto:'. but maybe that is what i will have to do. Edited December 15, 2010 by redLabel
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now