Re: RichEdit Attributes Bold, Italic, Underline

new topic     » goto parent     » topic index » view thread      » older message » newer message

Antonio Alessi wrote:
> 
> Alan Hollingsworth wrote:
> > 
> > Hello everyone,
> > 
> > I'm new to Euphoria have been working with it for about a month and a half.
> > I've gone through the documentation and examples and explored the user 
> > contributed code from the Euphoria website. I'm trying to learn to use the 
> > RichEdit Control. Here is my question:
> > 
> > Instead of using the font dialog to change attributes like bold, italic,
> > underline
> > I want to use a seperate button for each and toggle these attributes on/off
> > for
> > either selected text or from the insertion point while editing text.
> > 
> > Nothing I try seems to work. Is there a way of doing this, Or am I better
> > off
> > 
> > just using the font dialog instead?
> > 
> > Any help would be much appriciated.
> > 
> > Alan
> 
> 
> Hello Alan,
> 
> if you use the win32lib.ew, using the font dialog could not help you anymore,
> 
> since two pieces should still be missing from the routine: Derek said it will
> 
> be updated next. If you download the dEbUg_magic_box from the RDS contrib.
> you will find inside the setFont_fix.ew with the needed patches to complete.
> 
> Thereafter, to directly change RichEdit text attributes is not so difficult;
> 
> what's always difficult is to start knowing how to..
> ____________________________________
> 
> }}}
<eucode>
> function inRange( integer bg, integer en, integer item)
> 
>     return bg< item and item< en
>     
> end function
> --- ========
> function GetTextFont( integer self)
> object font
>  
>     font = struct_CHARFORMAT( 0,0,0,0,0,0,0, "")
>     VOID = sendMessage( self, EM_GETCHARFORMAT, 1, font)
>     font = fetch_CHARFORMAT( font)
>     return {font[9], font[4]/20, font[3], font[6]}
>  
> end function
> 
> --- ======== these are my handlers for a popup menu, 
> --- ======== THAT YOU CAN USE FOR BUTTONS
> 
> constant LOGeffects = 
>     {BoldFnt, ItalicF, BulletA, Underln, LeftAli, CentAli, RigtAli, StrikeT}
> </eucode>
{{{
 
>        
> --- I have added in my procedure a routine that checks the existance of any
> 
> --- attribute before setting it, so that it can be switched off if already 
> --- present, i.e. like to toggle a Bold button, switching a Bold text on/off
> 
> --- with the single control command. Briefly, my routine works like this:
> 
> }}}
<eucode>       
> procedure Popup_RichEdLOG( integer self, integer event, sequence prm)
> object font
>     
>     LOGchanged = find( self, LOGeffects)
>     if inRange( 5, 7, LOGchanged) then
>      font = {0, 2, 6}                          
> --   TA_LEFT = 0, TA_RIGHT = 2, TA_CENTER = 6,
>      setAlignment( LOGlist, font[LOGchanged])
>       
>     elsif LOGchanged = 3 then      
>      setBullet( LOGlist)
>         
>     else                                       -- 1,2,4,8
> 
>      font = GetTextFont( LOGlist)
>  
>      if and_bits( LOGchanged, font[3]) then    -- if already exist
>       LOGchanged = -LOGchanged                 -- will be deactivated
>      end if
>      setFont( LOGlist, {font[1], font[4]}, font[2], LOGchanged +font[3])
>  
>     end if
>  
> end procedure
> --- =========
> </eucode>
{{{
 
> 
> Hope this can help.
> 
> Antonio A.
> 
> 
>  } when you understand Euphoria, it's like to fly! }

Thank you Antonio! This should get me started in the right direction.

Alan

new topic     » goto parent     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu