1{$MainForm customdrawnwsforms.pp}
2
3{ TCDWSCustomForm }
4
5// For non-mobile forms, so no implementation in LCL-CustomDrawn-Android
6class function TCDWSCustomForm.DoCreateHandle(const AWinControl: TWinControl;
7  const AParams: TCreateParams): TLCLIntfHandle;
8begin
9end;
10
11class procedure TCDWSCustomForm.DoShowHide(const AWinControl: TWinControl);
12begin
13end;
14
15{------------------------------------------------------------------------------
16  Method: TCDWSCustomForm.CreateHandle
17  Params:  None
18  Returns: Nothing
19
20  Creates a Windows CE Form, initializes it according to it´s properties and shows it
21 ------------------------------------------------------------------------------}
22class function TCDWSCustomForm.CreateHandle(const AWinControl: TWinControl;
23  const AParams: TCreateParams): TLCLIntfHandle;
24var
25  AForm: TCustomForm absolute AWinControl;
26begin
27  {$ifdef VerboseCDForms}
28  DebugLn(Format(':>[TCDWSCustomForm.CreateHandle] AWinControl=%x Name=%s: %s',
29    [PtrInt(AWinControl), AWinControl.Name, AWinControl.ClassName]));
30  {$endif}
31
32  Result := TLCLIntfhandle(AddNewForm(TCustomForm(AWinControl)));
33
34  {$ifdef VerboseCDForms}
35  DebugLn(Format(':<[TCDWSCustomForm.CreateHandle] Result=%x',
36    [Result]));
37  {$endif}
38end;
39
40class procedure TCDWSCustomForm.DestroyHandle(const AWinControl: TWinControl);
41begin
42
43end;
44
45class procedure TCDWSCustomForm.SetBorderIcons(const AForm: TCustomForm;
46 const ABorderIcons: TBorderIcons);
47begin
48end;
49
50class procedure TCDWSCustomForm.SetFormBorderStyle(const AForm: TCustomForm;
51          const AFormBorderStyle: TFormBorderStyle);
52begin
53  RecreateWnd(AForm);
54end;
55
56class procedure TCDWSCustomForm.SetBounds(const AWinControl: TWinControl;
57    const ALeft, ATop, AWidth, AHeight: Integer);
58begin
59  {$ifdef VerboseCDForms}
60  DebugLn(Format('[TCDWSCustomForm.SetBounds] AWinControl=%x ALeft=%d ATop=%d AWidth=%d AHeight=%d',
61    [PtrInt(AWinControl), ALeft, ATop, AWidth, AHeight]));
62  {$endif}
63end;
64
65class procedure TCDWSCustomForm.SetIcon(const AForm: TCustomForm; const Small, Big: HICON);
66begin
67end;
68
69class procedure TCDWSCustomForm.SetShowInTaskbar(const AForm: TCustomForm;
70  const AValue: TShowInTaskbar);
71begin
72end;
73
74class procedure TCDWSCustomForm.ShowModal(const ACustomForm: TCustomForm);
75begin
76end;
77
78class procedure TCDWSCustomForm.ShowHide(const AWinControl: TWinControl);
79var
80  lForm: TCDNonNativeForm;
81begin
82  {$ifdef VerboseCDForms}
83  DebugLn(Format(':>[TCDWSCustomForm.ShowHide] AWinControl=%x Handle=%x',
84    [PtrInt(AWinControl), PtrInt(AWinControl.Handle)]));
85  {$endif}
86  lForm := TCDNonNativeForm(AWinControl.Handle);
87  if AWinControl.Visible then
88  begin
89    {$ifdef VerboseCDForms}
90    DebugLn(':<[TCDWSCustomForm.ShowHide] Showed');
91    {$endif}
92    ShowForm(lForm);
93
94    // if this is the first time we are showing the form adjust its layout
95    if not lForm.LayoutAutoAdjusted then
96    begin
97      DebugLn(Format('[TCDWSCustomForm.ShowHide] First form layout adjustment '
98       + 'lOldDPI=%d lNewDPI=%d lOldFormWidth=%d lNewFormWidth=%d',
99       [lForm.LCLForm.DesignTimePPI, Screen.PixelsPerInch, lForm.LCLForm.Width, Screen.Width]));
100      lForm.LayoutAutoAdjusted := True;
101      lForm.LCLForm.AutoAdjustLayout(lapAutoAdjustWithoutHorizontalScrolling,
102        lForm.LCLForm.DesignTimePPI,
103        Screen.PixelsPerInch, lForm.LCLForm.Width, Screen.Width);
104      LCLIntf.InvalidateRect(HWND(lForm), nil, False);
105      // if necessary adjust the form coordinates
106      if not (lForm.LCLForm.BorderStyle in [bsDialog, bsNone]) then
107      begin
108        lForm.LCLForm.Left := 0;
109        lForm.LCLForm.Top := 0;
110      end;
111    end;
112  end
113  else
114  begin
115    HideForm(lForm);
116    {$ifdef VerboseCDForms}
117    DebugLn(':<[TCDWSCustomForm.ShowHide] Hided');
118    {$endif}
119  end;
120end;
121
122class function TCDWSCustomForm.GetText(const AWinControl: TWinControl; var AText: String): Boolean;
123begin
124  AText := '';
125end;
126
127class function TCDWSCustomForm.GetTextLen(const AWinControl: TWinControl; var ALength: Integer): Boolean;
128var
129  lText: string;
130begin
131  Result := GetText(AWinControl, lText);
132  ALength := Length(lText);
133end;
134
135class procedure TCDWSCustomForm.SetText(const AWinControl: TWinControl; const AText: String);
136//var
137//  javamethod: jmethodID;
138begin
139{  javamethod := CurEnv->GetMethodID(clazz, "callFromCPP", "()V");
140  if (javamethod == 0) {
141      LOGI("GetMethodID error");
142      return;
143  }
144  env->CallVoidMethod(obj, javamethod);  }
145end;
146
147class function TCDWSCustomForm.GetClientBounds(const AWincontrol: TWinControl; var ARect: TRect): Boolean;
148begin
149end;
150
151class function TCDWSCustomForm.GetClientRect(const AWincontrol: TWinControl; var ARect: TRect): Boolean;
152begin
153end;
154
155
156