mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-04 18:00:24 +02:00
android: initial work on button click
git-svn-id: trunk@31929 -
This commit is contained in:
parent
d9dfbdb699
commit
633c24d840
@ -159,18 +159,15 @@ type
|
||||
constructor Create();
|
||||
end;
|
||||
|
||||
function HandleMessage(AFirstInt: Integer): Boolean;
|
||||
|
||||
implementation
|
||||
|
||||
const
|
||||
{ Constants }
|
||||
|
||||
{ TDisplayMetrics }
|
||||
{ TDisplay }
|
||||
{ TWindowManager }
|
||||
{ TViewGroup_LayoutParams }
|
||||
FILL_PARENT = $FFFFFFFF;
|
||||
MATCH_PARENT = $FFFFFFFF;
|
||||
WRAP_CONTENT = $FFFFFFFE;
|
||||
{ TView }
|
||||
VISIBLE = 0;
|
||||
INVISIBLE = 4;
|
||||
@ -193,6 +190,11 @@ const
|
||||
{ TAbsSpinner }
|
||||
{ TSpinner }
|
||||
|
||||
function HandleMessage(AFirstInt: Integer): Boolean;
|
||||
|
||||
implementation
|
||||
|
||||
const
|
||||
{ IDs }
|
||||
|
||||
// TDisplayMetrics
|
||||
@ -226,9 +228,9 @@ const
|
||||
amkUI_TTextView_Create = $0010A000;
|
||||
amkUI_TTextView_setText = $0010A001;
|
||||
amkUI_TTextView_setOnClickListener = $0010A002;
|
||||
amkUI_TTextView_OnClickListener_Start = $0010A002;
|
||||
amkUI_TTextView_OnClickListener_Finished = $0010A002;
|
||||
amkUI_TTextView_setTextSize = $0010A002;
|
||||
amkUI_TTextView_OnClickListener_Start = $0010A003;
|
||||
amkUI_TTextView_OnClickListener_Finished = $0010A004;
|
||||
amkUI_TTextView_setTextSize = $0010A005;
|
||||
// TEditText
|
||||
amkUI_TEditText_Create = $0010B000;
|
||||
amkUI_TEditText_setText = $0010B001;
|
||||
|
@ -141,14 +141,8 @@ begin
|
||||
begin
|
||||
lInt := ReadInt(); // Android Message subtype
|
||||
android_all.HandleMessage(lInt);
|
||||
{ case lInt of
|
||||
amkUI_TextView_OnClickCallback_Start:
|
||||
begin
|
||||
lPascalPointer := ReadInt();
|
||||
TTextView(lPascalPointer).callOnClickListener();
|
||||
vAndroidPipesComm.SendMessage(amkUICommand, amkUI_TextView_OnClickCallback_Finished);
|
||||
end;
|
||||
amkUI_MenuItem_setOnMenuItemClickListener_Start:
|
||||
case lInt of
|
||||
{ amkUI_MenuItem_setOnMenuItemClickListener_Start:
|
||||
begin
|
||||
lInt := ReadInt();
|
||||
lMenuItem := TMenuItem(FindItemIdInList(MenuItems, lInt));
|
||||
@ -156,8 +150,8 @@ begin
|
||||
lInt := lMenuItem.callOnMenuItemClickListener();
|
||||
vAndroidPipesComm.SendMessage(amkUICommand, amkUI_MenuItem_setOnMenuItemClickListener_Finished);
|
||||
vAndroidPipesComm.SendInt(lInt);
|
||||
end;
|
||||
end; }
|
||||
end;}
|
||||
end;
|
||||
end;
|
||||
amkTimer: // A Timer Callback
|
||||
begin
|
||||
|
@ -37,11 +37,14 @@ uses
|
||||
type
|
||||
TAndroidComboBoxStrings = class;
|
||||
|
||||
{ TAndroidView }
|
||||
|
||||
TAndroidView = class
|
||||
public
|
||||
LCLObject: TWinControl;
|
||||
ParentGroupView: TViewGroup;
|
||||
MainView: TView;
|
||||
function DeliverMessage(var Msg; const AIsInputEvent: Boolean = False): LRESULT;
|
||||
end;
|
||||
|
||||
TAndroidViewGroup = class(TAndroidView)
|
||||
@ -67,6 +70,7 @@ type
|
||||
params: TAbsoluteLayout_LayoutParams;
|
||||
constructor Create(const AObject: TCustomButton; const AParams: TCreateParams);
|
||||
destructor Destroy; override;
|
||||
procedure buttonClickCallback(v: TView);
|
||||
end;
|
||||
|
||||
{ TAndroidCheckBox }
|
||||
@ -141,6 +145,31 @@ type
|
||||
|
||||
implementation
|
||||
|
||||
{ TAndroidView }
|
||||
|
||||
function TAndroidView.DeliverMessage(var Msg; const AIsInputEvent: Boolean
|
||||
): LRESULT;
|
||||
begin
|
||||
Result := LRESULT(AIsInputEvent);
|
||||
if LCLObject = nil then Exit;
|
||||
|
||||
try
|
||||
if LCLObject.HandleAllocated then
|
||||
begin
|
||||
LCLObject.WindowProc(TLMessage(Msg));
|
||||
Result := TLMessage(Msg).Result;
|
||||
end;
|
||||
except
|
||||
{if AIsInputEvent and (LCLObject = nil) and (PtrUInt(Widget) = 0) and
|
||||
QtWidgetSet.IsValidHandle(HWND(Self)) then
|
||||
begin
|
||||
raise Exception.CreateFmt('%s.DeliverMessage(): error in input event %d ',
|
||||
[ClassName, TLMessage(Msg).Msg]);
|
||||
end else}
|
||||
Application.HandleException(nil);
|
||||
end;
|
||||
end;
|
||||
|
||||
{ TAndroidComboBoxStrings }
|
||||
|
||||
procedure TAndroidComboBoxStrings.Put(Index: Integer; const S: string);
|
||||
@ -204,7 +233,7 @@ begin
|
||||
|
||||
spinner := android_all.TSpinner.Create;
|
||||
MainView := spinner;
|
||||
params := TAbsoluteLayout_LayoutParams.Create(AObject.Width, AObject.Height, AObject.Left, AObject.Top);
|
||||
params := TAbsoluteLayout_LayoutParams.Create(AObject.Width, WRAP_CONTENT, AObject.Left, AObject.Top);
|
||||
ParentGroupView.addView(MainView, TViewGroup_LayoutParams(params));
|
||||
params.Free;
|
||||
end;
|
||||
@ -228,7 +257,7 @@ begin
|
||||
MainView := textview;
|
||||
Str := AObject.Caption;
|
||||
textview.setText(Str);
|
||||
params := TAbsoluteLayout_LayoutParams.Create(AObject.Width, AObject.Height, AObject.Left, AObject.Top);
|
||||
params := TAbsoluteLayout_LayoutParams.Create(AObject.Width, WRAP_CONTENT, AObject.Left, AObject.Top);
|
||||
ParentGroupView.addView(MainView, TViewGroup_LayoutParams(params));
|
||||
params.Free;
|
||||
end;
|
||||
@ -252,7 +281,7 @@ begin
|
||||
MainView := checkbox;
|
||||
Str := AObject.Caption;
|
||||
checkbox.setText(Str);
|
||||
params := TAbsoluteLayout_LayoutParams.Create(AObject.Width, AObject.Height, AObject.Left, AObject.Top);
|
||||
params := TAbsoluteLayout_LayoutParams.Create(AObject.Width, WRAP_CONTENT, AObject.Left, AObject.Top);
|
||||
ParentGroupView.addView(MainView, TViewGroup_LayoutParams(params));
|
||||
params.Free;
|
||||
end;
|
||||
@ -264,12 +293,17 @@ end;
|
||||
|
||||
function TAndroidCheckBox.GetState: TCheckBoxState;
|
||||
begin
|
||||
|
||||
if checkbox.isChecked() then Result := cbChecked
|
||||
else Result := cbUnchecked;
|
||||
end;
|
||||
|
||||
procedure TAndroidCheckBox.SetState(const AState: TCheckBoxState);
|
||||
begin
|
||||
|
||||
case AState of
|
||||
cbUnchecked: checkbox.setChecked(False);
|
||||
cbChecked: checkbox.setChecked(True);
|
||||
cbGrayed: checkbox.setChecked(True);// Android does not support cbGrayed
|
||||
end;
|
||||
end;
|
||||
|
||||
{ TAndroidEdit }
|
||||
@ -286,7 +320,7 @@ begin
|
||||
MainView := edittext;
|
||||
Str := AObject.Caption;
|
||||
edittext.setText(Str);
|
||||
params := TAbsoluteLayout_LayoutParams.Create(AObject.Width, AObject.Height, AObject.Left, AObject.Top);
|
||||
params := TAbsoluteLayout_LayoutParams.Create(AObject.Width, WRAP_CONTENT, AObject.Left, AObject.Top);
|
||||
ParentGroupView.addView(MainView, TViewGroup_LayoutParams(params));
|
||||
params.Free;
|
||||
end;
|
||||
@ -310,8 +344,8 @@ begin
|
||||
MainView := btn;
|
||||
Str := AObject.Caption;
|
||||
btn.setText(Str);
|
||||
// btn.setOnClickListener(buttonClickCallback);
|
||||
params := TAbsoluteLayout_LayoutParams.Create(AObject.Width, AObject.Height, AObject.Left, AObject.Top);
|
||||
btn.setOnClickListener(@buttonClickCallback);
|
||||
params := TAbsoluteLayout_LayoutParams.Create(AObject.Width, WRAP_CONTENT{AObject.Height}, AObject.Left, AObject.Top);
|
||||
ParentGroupView.addView(MainView, TViewGroup_LayoutParams(params));
|
||||
params.Free;
|
||||
end;
|
||||
@ -321,6 +355,15 @@ begin
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
procedure TAndroidButton.buttonClickCallback(v: TView);
|
||||
var
|
||||
Msg: TLMessage;
|
||||
begin
|
||||
FillChar(Msg, SizeOf(Msg), #0);
|
||||
Msg.Msg := LM_CLICKED;
|
||||
DeliverMessage(Msg);
|
||||
end;
|
||||
|
||||
{ TCarbonWidget }
|
||||
|
||||
constructor TAndroidWindow.Create(const AObject: TCustomForm;
|
||||
|
Loading…
Reference in New Issue
Block a user