#define VS local static const char
The #define will be substituted in at compile time. So as far as memory usage goes

#define MYSTRING "hello world"
DisplayData(MYSTRING);


and

DisplayData("hello world");


are completely identical.

but 

static const char theme[] = "hello world";
DisplayData(theme);


Will store the text in memory and then call DisplayData with a pointer to that memory location. This will require one memory pointers worth of memory extra (unless that is the compiler is being smart that day and realizes it can substitute in the string and save a few bytes).

However if you are using the same string twice or more then things are different.

The static const will only include the string once and then point to it each time, each reference to the string adds only a couple of bytes to the code size.
If you #define the string then every time it is referenced the whole string is inserted into the code at a cost of n+1 bytes where n is the string length.