cocoa: adding support for TEdit alignment and background color. #32796

git-svn-id: trunk@56878 -
This commit is contained in:
dmitry 2017-12-30 18:05:42 +00:00
parent a67f8825a2
commit a69353463f

View File

@ -122,8 +122,13 @@ type
published
class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
// WSControl functions
class procedure SetColor(const AWinControl: TWinControl); override;
// WSEdit functions
class function GetSelStart(const ACustomEdit: TCustomEdit): integer; override;
class function GetSelLength(const ACustomEdit: TCustomEdit): integer; override;
class procedure SetAlignment(const ACustomEdit: TCustomEdit; const NewAlignment: TAlignment); override;
{class procedure SetCharCase(const ACustomEdit: TCustomEdit; NewCase: TEditCharCase); override;
class procedure SetEchoMode(const ACustomEdit: TCustomEdit; NewMode: TEchoMode); override;
@ -277,6 +282,7 @@ procedure ListBoxSetStyle(list: TCocoaListBox; AStyle: TListBoxStyle);
procedure TextViewSetWordWrap(txt: NSTextView; lScroll: NSScrollView; NewWordWrap: Boolean);
function AlignmentLCLToCocoa(al: TAlignment): NSTextAlignment;
procedure TextViewSetAllignment(txt: NSTextView; align: TAlignment);
procedure TextFieldSetAllignment(txt: NSTextField; align: TAlignment);
implementation
@ -680,9 +686,20 @@ begin
else field:=NSTextField(AllocSecureTextField(AWinControl, AParams));
NSCell(field.cell).setWraps(false);
NSCell(field.cell).setScrollable(true);
TextFieldSetAllignment(field, TCustomEdit(AWinControl).Alignment);
Result:=TLCLIntfHandle(field);
end;
class procedure TCocoaWSCustomEdit.SetColor(const AWinControl: TWinControl);
var
field: TCocoaTextField;
begin
field := GetTextField(AWinControl);
if not Assigned(field) then Exit;
field.setBackgroundColor( ColorToNSColor(AWinControl.Color));
end;
class function TCocoaWSCustomEdit.GetSelStart(const ACustomEdit: TCustomEdit): integer;
var
field : TCocoaTextField;
@ -711,6 +728,16 @@ begin
Result:=txt.selectedRange.length;
end;
class procedure TCocoaWSCustomEdit.SetAlignment(const ACustomEdit: TCustomEdit;
const NewAlignment: TAlignment);
var
field: TCocoaTextField;
begin
field := GetTextField(ACustomEdit);
if not Assigned(field) then Exit;
TextFieldSetAllignment(field, NewAlignment);
end;
class procedure TCocoaWSCustomEdit.SetPasswordChar(const ACustomEdit: TCustomEdit; NewChar: char);
begin
if (NewChar<>#0) xor TCocoaTextField(ACustomEdit.Handle).isKindOfClass_(NSSecureTextField) then
@ -961,6 +988,12 @@ begin
txt.setAlignment( AlignmentLCLToCocoa(align) );
end;
procedure TextFieldSetAllignment(txt: NSTextField; align: TAlignment);
begin
//todo: for bidi modes, there's "NSTextAlignmentNatural"
txt.setAlignment( AlignmentLCLToCocoa(align) );
end;
class function TCocoaWSCustomMemo.GetTextView(AWinControl: TWinControl): TCocoaTextView;
var
lScroll: TCocoaScrollView;