Okay ich hab mal ein wenig rumgespielt, dabei kam dann das raus:
Delphi-Quellcode:
var Formatierung: TCharFormat2;
procedure TEditor.HochgestelltExecute(Sender: TObject);
begin
Formatierung.cbSize := SizeOf(Formatierung);
Formatierung.dwMask := SendMessage(Text.Handle, EM_GETCHARFORMAT, SCF_SELECTION, 0);
if Formatierung.dwMask = CFM_SuperScript
then Formatierung.dwMask := CFM_SuperScript
else begin
Formatierung.dwMask := CFM_SuperScript;
Formatierung.dwEffects := CFE_SuperScript;
end;
SendMessage(Text.Handle, EM_SETCHARFORMAT, SCF_SELECTION, DWORD(@Formatierung));
end;
Doch bei der Abfrage
if Formatierung.dwMask = CFM_SuperScript
Wird immer nur die Else-Anweisung behandelt. Das müsste doch bedeuten, dass in der Anweisung davor
Formatierung.dwMask := SendMessage(Text.Handle, EM_GETCHARFORMAT, SCF_SELECTION, 0);
der enstprechende Wert der selektierten Textes garnicht als Rückgabewert geliefert wird oder?