lazarus/lcl/interfaces/cocoa/cocoawscommon.pas
dmitry eba9f81e8c cocoa: fix for CocoaEdit get/setting text
git-svn-id: trunk@22784 -
2009-11-26 05:38:19 +00:00

116 lines
2.6 KiB
ObjectPascal

unit CocoaWSCommon;
{$mode objfpc}{$H+}
{$modeswitch objectivec1}
interface
uses
MacOSAll, CocoaAll,
Controls,
WSControls,
CocoaPrivate, CocoaUtils, LCLMessageGlue;
type
{ TControlCallback }
TControlCallback = class(TCommonCallback)
public
Target : TControl;
constructor Create(AOwner: NSObject; ATarget: TControl);
procedure MouseDown(x,y: Integer); override;
procedure MouseUp(x,y: Integer); override;
procedure MouseClick(clickCount: Integer); override;
procedure MouseMove(x,y: Integer); override;
end;
{ TCocoaWSWinControl }
TCocoaWSWinControl=class(TWSWinControl)
published
class procedure SetText(const AWinControl: TWinControl; const AText: String); override;
class function GetText(const AWinControl: TWinControl; var AText: String): Boolean; override;
class function GetTextLen(const AWinControl: TWinControl; var ALength: Integer): Boolean; override;
end;
implementation
{ TControlCallback }
constructor TControlCallback.Create(AOwner: NSObject; ATarget: TControl);
begin
inherited Create(AOwner);
Target:=ATarget;
end;
procedure TControlCallback.MouseDown(x, y: Integer);
begin
LCLSendMouseDownMsg(Target,x,y,mbLeft, []);
end;
procedure TControlCallback.MouseUp(x, y: Integer);
begin
LCLSendMouseUpMsg(Target,x,y,mbLeft, []);
end;
procedure TControlCallback.MouseClick(clickCount: Integer);
begin
LCLSendClickedMsg(Target);
end;
procedure TControlCallback.MouseMove(x, y: Integer);
begin
LCLSendMouseMoveMsg(Target, x,y, []);
end;
{ TCocoaWSWinControl }
class procedure TCocoaWSWinControl.SetText(const AWinControl: TWinControl; const AText: String);
var
obj : NSObject;
begin
// sanity check
obj:=NSObject(AWinControl.Handle);
if not Assigned(obj) or not obj.isKindOfClass_(NSControl) then Exit;
SetNSControlValue(NSControl(obj), AText);
end;
class function TCocoaWSWinControl.GetText(const AWinControl: TWinControl; var AText: String): Boolean;
var
obj : NSObject;
begin
Result:=false;
// sanity check
obj:=NSObject(AWinControl.Handle);
Result:=Assigned(obj) and obj.isKindOfClass_(NSControl);
if not Result then Exit;
AText:=GetNSControlValue(NSControl(obj));
Result:=true;
end;
class function TCocoaWSWinControl.GetTextLen(const AWinControl: TWinControl; var ALength: Integer): Boolean;
var
obj : NSObject;
s : NSString;
begin
Result:=false;
// sanity check
obj:=NSObject(AWinControl.Handle);
Result:= Assigned(obj) and obj.isKindOfClass_(NSControl);
if not Result then Exit;
s:=NSControl(obj).stringValue;
if Assigned(s) then ALength:=s.length
else ALength:=0
end;
end.