34
34
qtwidgets, qtobjects, qtproc, QtWSControls,
36
LMessages, LCLMessageGlue, LCLProc,
37
SysUtils, Classes, Controls, Graphics, Forms, StdCtrls, ExtCtrls, LCLType,
37
SysUtils, Classes, Controls, Graphics, Forms, ExtCtrls, LCLType,
40
40
WSExtCtrls, WSProc, WSLCLClasses;
46
TQtWSCustomPage = class(TWSCustomPage)
48
class function CreateHandle(const AWinControl: TWinControl;
49
const AParams: TCreateParams): TLCLIntfHandle; override;
50
class procedure UpdateProperties(const ACustomPage: TCustomPage); override;
53
{ TQtWSCustomNotebook }
55
TQtWSCustomNotebook = class(TWSCustomNotebook)
57
class function CreateHandle(const AWinControl: TWinControl;
58
const AParams: TCreateParams): TLCLIntfHandle; override;
60
class procedure AddPage(const ANotebook: TCustomNotebook;
61
const AChild: TCustomPage; const AIndex: integer); override;
62
class procedure MovePage(const ANotebook: TCustomNotebook;
63
const AChild: TCustomPage; const NewIndex: integer); override;
64
class procedure RemovePage(const ANotebook: TCustomNotebook;
65
const AIndex: integer); override;
67
class function GetCapabilities: TNoteBookCapabilities; override;
68
class function GetDesignInteractive(const AWinControl: TWinControl; AClientPos: TPoint): Boolean; override;
69
class function GetTabIndexAtPos(const ANotebook: TCustomNotebook; const AClientPos: TPoint): integer; override;
70
class function GetTabRect(const ANotebook: TCustomNotebook; const AIndex: Integer): TRect; override;
71
class procedure SetPageIndex(const ANotebook: TCustomNotebook; const AIndex: integer); override;
72
class procedure SetTabCaption(const ANotebook: TCustomNotebook; const AChild: TCustomPage; const AText: string); override;
73
class procedure SetTabPosition(const ANotebook: TCustomNotebook; const ATabPosition: TTabPosition); override;
74
class procedure ShowTabs(const ANotebook: TCustomNotebook; AShowTabs: boolean); override;
75
class procedure UpdateProperties(const ANotebook: TCustomNotebook); override;
80
45
TQtWSPage = class(TWSPage)
229
185
Result := TLCLIntfHandle(QtFrame);
234
{------------------------------------------------------------------------------
235
Method: TQtWSCustomPage.CreateHandle
239
Allocates memory and resources for the control and shows it
240
------------------------------------------------------------------------------}
241
class function TQtWSCustomPage.CreateHandle(const AWinControl: TWinControl;
242
const AParams: TCreateParams): TLCLIntfHandle;
247
WriteLn('Trace:> [TQtWSCustomPage.CreateHandle]');
250
QtPage := TQtPage.Create(AWinControl, AParams);
253
// Returns the Handle
254
Result := TLCLIntfHandle(QtPage);
257
WriteLn('Trace:< [TQtWSCustomPage.CreateHandle] Result: ', IntToStr(Result));
261
class procedure TQtWSCustomPage.UpdateProperties(const ACustomPage: TCustomPage);
263
ImageList: TCustomImageList;
267
ImageList := TCustomNoteBook(ACustomPage.Parent).Images;
269
if Assigned(ImageList) then
271
ImageIndex := TCustomNoteBook(ACustomPage.Parent).GetImageIndex(ACustomPage.PageIndex);
272
if (ImageIndex >= 0) and (ImageIndex < ImageList.Count) then
274
Bmp := TBitmap.Create;
276
ImageList.GetBitmap(ACustomPage.ImageIndex, Bmp);
277
TQtPage(ACustomPage.Handle).setIcon(TQtImage(Bmp.Handle).AsIcon);
285
{ TQtWSCustomNotebook }
287
{------------------------------------------------------------------------------
288
Method: TQtWSCustomNotebook.CreateHandle
292
Allocates memory and resources for the control and shows it
293
------------------------------------------------------------------------------}
294
class function TQtWSCustomNotebook.CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle;
296
QtTabWidget: TQtTabWidget;
299
WriteLn('TQtWSCustomNotebook.CreateHandle');
301
QtTabWidget := TQtTabWidget.Create(AWinControl, AParams);
302
QtTabWidget.setTabPosition(QTabWidgetTabPositionMap[TCustomNoteBook(AWinControl).TabPosition]);
303
QtTabWidget.setTabsClosable(nboShowCloseButtons in TCustomNotebook(AWinControl).Options);
304
QtTabWidget.AttachEvents;
306
// Returns the Handle
308
Result := TLCLIntfHandle(QtTabWidget);
311
class procedure TQtWSCustomNotebook.AddPage(const ANotebook: TCustomNotebook;
312
const AChild: TCustomPage; const AIndex: integer);
314
QtTabWidget: TQtTabWidget;
317
WriteLn('TQtWSCustomNotebook.AddPage');
319
QtTabWidget := TQtTabWidget(ANotebook.Handle);
320
QtTabWidget.setUpdatesEnabled(False);
321
QtTabWidget.insertTab(AIndex, TQtPage(AChild.Handle).Widget,
322
GetUtf8String(AChild.Caption));
323
QtTabWidget.setUpdatesEnabled(True);
324
TQtPage(AChild.Handle).ChildOfComplexWidget := ccwTabWidget;
325
TQtWsCustomPage.UpdateProperties(AChild);
328
class procedure TQtWSCustomNotebook.MovePage(const ANotebook: TCustomNotebook;
329
const AChild: TCustomPage; const NewIndex: integer);
331
TabWidget: TQtTabWidget;
335
Page := TQtPage(AChild.Handle);
336
TabWidget := TQtTabWidget(ANotebook.Handle);
337
Index := AChild.PageIndex;
339
Index := ANoteBook.IndexOf(AChild);
341
TabWidget.BeginUpdate;
342
TabWidget.setUpdatesEnabled(false);
343
TabWidget.removeTab(Index);
344
TabWidget.insertTab(NewIndex, Page.Widget, Page.getIcon, Page.getText);
345
TabWidget.setUpdatesEnabled(true);
346
if TabWidget.getCurrentIndex <> NewIndex then
347
TabWidget.setCurrentWidget(Page);
351
class procedure TQtWSCustomNotebook.RemovePage(const ANotebook: TCustomNotebook;
352
const AIndex: integer);
354
TabWidget: TQtTabWidget;
357
WriteLn('TQtWSCustomNotebook.RemovePage');
359
TabWidget := TQtTabWidget(ANotebook.Handle);
360
TabWidget.setUpdatesEnabled(false);
361
TabWidget.removeTab(AIndex);
362
TabWidget.setUpdatesEnabled(true);
365
class function TQtWSCustomNotebook.GetCapabilities: TNoteBookCapabilities;
367
Result := [nbcShowCloseButtons];
370
class function TQtWSCustomNotebook.GetDesignInteractive(
371
const AWinControl: TWinControl; AClientPos: TPoint): Boolean;
373
TabWidget: TQtTabWidget;
379
if not WSCheckHandleAllocated(AWinControl, 'GetDesignInteractive') then
381
TabWidget := TQtTabWidget(AWinControl.Handle);
382
TabBar := TabWidget.TabBar;
383
p := QtPoint(AClientPos.x, AClientPos.y);
384
TabIndex := QTabBar_tabAt(QTabBarH(TabBar.Widget), @p);
385
Result := (TabIndex >= 0) and (TabWidget.getCurrentIndex <> TabIndex);
388
class function TQtWSCustomNotebook.GetTabIndexAtPos(
389
const ANotebook: TCustomNotebook; const AClientPos: TPoint): integer;
391
TabWidget: TQtTabWidget;
395
TabWidget := TQtTabWidget(ANotebook.Handle);
396
NewPos := AClientPos;
397
R := TabWidget.TabBar.getGeometry;
398
case ANoteBook.TabPosition of
399
tpTop: if NewPos.Y < 0 then NewPos.Y := R.Bottom + NewPos.Y;
400
tpLeft: if NewPos.X < 0 then NewPos.X := R.Left + NewPos.X;
401
tpRight: NewPos.X := R.Right - NewPos.X;
402
tpBottom: NewPos.Y := R.Bottom - NewPos.Y;
404
Result := TabWidget.tabAt(NewPos);
407
class function TQtWSCustomNotebook.GetTabRect(const ANotebook: TCustomNotebook;
408
const AIndex: Integer): TRect;
410
TabWidget: TQtTabWidget;
412
Result := Rect(-1, -1, -1, -1);
413
if not WSCheckHandleAllocated(ANotebook, 'GetTabRect') then
415
TabWidget := TQtTabWidget(ANotebook.Handle);
416
Result := TabWidget.TabBar.GetTabRect(AIndex);
417
case ANoteBook.TabPosition of
418
tpTop: OffsetRect(Result, 0, -Result.Bottom);
419
tpLeft: OffsetRect(Result, -Result.Right, 0);
420
tpRight: OffsetRect(Result, Result.Left, 0);
421
tpBottom: OffsetRect(Result, Result.Top, 0);
425
class procedure TQtWSCustomNotebook.SetPageIndex(
426
const ANotebook: TCustomNotebook; const AIndex: integer);
428
TabWidget: TQtTabWidget;
430
if not WSCheckHandleAllocated(ANotebook, 'SetPageIndex') then
432
TabWidget := TQtTabWidget(ANotebook.Handle);
433
TabWidget.setCurrentIndex(AIndex);
436
class procedure TQtWSCustomNotebook.SetTabCaption(
437
const ANotebook: TCustomNotebook; const AChild: TCustomPage;
438
const AText: string);
442
Index := AChild.PageIndex;
444
Index := ANotebook.IndexOf(AChild);
445
TQtTabWidget(ANotebook.Handle).setTabText(Index, GetUtf8String(AText));
448
class procedure TQtWSCustomNotebook.SetTabPosition(
449
const ANotebook: TCustomNotebook; const ATabPosition: TTabPosition);
451
TQtTabWidget(ANotebook.Handle).SetTabPosition(QTabWidgetTabPositionMap[ATabPosition]);
454
class procedure TQtWSCustomNotebook.ShowTabs(const ANotebook: TCustomNotebook;
457
TabWidget: TQtTabWidget;
459
TabWidget := TQtTabWidget(ANotebook.Handle);
460
if TabWidget.TabBar <> nil then
461
TabWidget.ShowTabs := AShowTabs;
464
class procedure TQtWSCustomNotebook.UpdateProperties(const ANotebook: TCustomNotebook);
466
TQtTabWidget(ANotebook.Handle).setTabsClosable(nboShowCloseButtons in ANotebook.Options);
469
188
{ TQtWSCustomRadioGroup }
471
190
{------------------------------------------------------------------------------