Una simple observación:
Pese a lo que me suponía, lo he probado y funciona

(no es que desconfíe de ustedes

). Siempre supuse que como en el medio oriente se escribe de derecha a izquierda, lo que esté en un edit bdLeftToRight como "texto1" sería en bdRightToLeft "1otxet"... ¿Me explico?
Como verdaderamente es, los programas guardan el sus archivos / base de datos, los datos de derecha a izquierda, contrariamente a como se escribe en el resto del mundo, debe ser bastante engorroso compatibilizar los datos entre varios países.
De todos modos, me quedo con la solución anterior... me parece un poco mas "controlada"
Código:
TMiEdit = class(TCustomEdit)
...
private
procedure SetAlignment(const Value: TAlignment);
published
...
property Alignment: TAlignment read FAlignment write SetAlignment default taLeftJustify;
end;
...
procedure TMiEdit.CreateParams(var Params: TCreateParams);
const
Alignments: array[TAlignment] of DWord = (ES_LEFT, ES_RIGHT, ES_CENTER);
begin
inherited CreateParams(Params);
Params.Style := Params.Style or Alignments[FAlignment];
end;
...
procedure TMiEdit.SetAlignment(const Value: TAlignment);
begin
if FAlignment <> Value then
begin
FAlignment := Value;
RecreateWnd ;
end;
end;
Saludos!