Glad to hear you got it working. One other tip for you: some programmers think it's good practice to only have one return within a function (not specifically VHDL - actually it was a C programmer that introduced me to the idea). So you use a temporary variable in your function and return this at the end (I've shown you this below).
This will make no difference to the operation of the function but as I said some people just consider it good practice to only have one return point to make the code more readable. Personally I think it depends on the particular code in question.
FUNCTION Integer2SevenSegment (i: IN INTEGER RANGE 0 to 15) RETURN
SevenSegment is
temp : SevenSgement;
begin
CASE i IS
WHEN 0 => temp := "0000001";
WHEN 1 => temp := "1001111";
WHEN 2 => temp := "0010010";
WHEN 3 => temp := "0000110";
WHEN 4 => temp := "1001100";
WHEN 5 => temp := "0100100";
WHEN 6 => temp := "0100000";
WHEN 7 => temp := "0001111";
WHEN 8 => temp := "0000000";
WHEN 9 => temp := "0001100";
WHEN 10=> temp := "1100000";
WHEN 11=> temp := "0110001";
WHEN 12=> temp := "1000010";
WHEN 13=> temp := "0110000";
WHEN 14=> temp := "0110000";
WHEN 15=> temp := "0111000";
END CASE;
return temp;
END Integer2SevenSegment;