230
229
FNoteBook.PageIndex:=AValue;
233
constructor TTabControlNoteBookStrings.Create(TheTabControl: TCustomTabControl);
232
constructor TTabControlNoteBookStrings.Create(TheTabControl: TTabControl);
235
234
inherited Create(TheTabControl);
236
FNoteBook := TNoteBook{%H-}.Create(nil);
235
FNoteBook := TCustomTabControl{%H-}.Create(nil);
237
236
FNoteBook.ControlStyle := FNoteBook.ControlStyle + [csNoDesignSelectable];
238
237
FNoteBook.Parent := TabControl;
239
238
FNoteBook.OnGetImageIndex := @NBGetImageIndex;
240
239
FNoteBook.OnChanging := @NBChanging;
241
FNoteBook.OnPageChanged := @NBPageChanged;
240
FNoteBook.OnChange := @NBPageChanged;
242
241
TabControlBoundsChange;
329
328
ARect.Right:=Max(Min(ARect.Right,ARect.Right-BorderWidth),ARect.Left);
332
function TCustomTabControl.GetDisplayRect: TRect;
331
function TTabControl.GetDisplayRect: TRect;
334
333
Result:=ClientRect;
335
334
AdjustDisplayRect(Result);
338
function TCustomTabControl.GetHotTrack: Boolean;
337
function TTabControl.GetHotTrack: Boolean;
340
339
Result:=TTabControlStrings(FTabs).HotTrack;
343
function TCustomTabControl.GetMultiLine: Boolean;
342
function TTabControl.GetMultiLine: Boolean;
345
344
Result:=TTabControlStrings(FTabs).MultiLine;
348
function TCustomTabControl.GetMultiSelect: Boolean;
347
function TTabControl.GetMultiSelect: Boolean;
350
349
Result:=TTabControlStrings(FTabs).MultiSelect;
353
function TCustomTabControl.GetOwnerDraw: Boolean;
352
function TTabControl.GetOwnerDraw: Boolean;
355
354
Result:=TTabControlStrings(FTabs).OwnerDraw;
358
function TCustomTabControl.GetRaggedRight: Boolean;
357
function TTabControl.GetRaggedRight: Boolean;
360
359
Result:=TTabControlStrings(FTabs).RaggedRight;
363
function TCustomTabControl.GetScrollOpposite: Boolean;
362
function TTabControl.GetScrollOpposite: Boolean;
365
364
Result:=TTabControlStrings(FTabs).ScrollOpposite;
368
function TCustomTabControl.GetTabHeight: Smallint;
367
function TTabControl.GetTabHeight: Smallint;
370
369
Result:=TTabControlStrings(FTabs).TabHeight;
373
function TCustomTabControl.GetTabIndex: Integer;
372
function TTabControl.GetTabIndex: Integer;
375
374
Result:=TTabControlStrings(FTabs).TabIndex;
378
function TCustomTabControl.GetTabWidth: Smallint;
377
function TTabControl.GetTabWidth: Smallint;
380
379
Result:=TTabControlStrings(FTabs).TabWidth;
383
procedure TCustomTabControl.SetHotTrack(const AValue: Boolean);
382
procedure TTabControl.SetHotTrack(const AValue: Boolean);
385
384
TTabControlStrings(FTabs).HotTrack:=AValue;
388
procedure TCustomTabControl.SetImages(const AValue: TCustomImageList);
387
procedure TTabControl.SetImages(const AValue: TCustomImageList);
390
389
if FImages = AValue then Exit;
391
390
if FImages <> nil then
392
391
FImages.RemoveFreeNotification(Self);
392
FImages := TImageList(AValue);
394
393
if FImages <> nil then
395
394
FImages.FreeNotification(Self);
396
395
TTabControlStrings(FTabs).Images := FImages;
399
procedure TCustomTabControl.SetMultiLine(const AValue: Boolean);
398
procedure TTabControl.SetMultiLine(const AValue: Boolean);
401
400
TTabControlStrings(FTabs).MultiLine:=AValue;
404
procedure TCustomTabControl.SetMultiSelect(const AValue: Boolean);
403
procedure TTabControl.SetMultiSelect(const AValue: Boolean);
406
405
TTabControlStrings(FTabs).MultiSelect:=AValue;
409
procedure TCustomTabControl.SetOwnerDraw(const AValue: Boolean);
408
procedure TTabControl.SetOwnerDraw(const AValue: Boolean);
411
410
TTabControlStrings(FTabs).OwnerDraw:=AValue;
414
procedure TCustomTabControl.SetRaggedRight(const AValue: Boolean);
413
procedure TTabControl.SetRaggedRight(const AValue: Boolean);
416
415
TTabControlStrings(FTabs).RaggedRight:=AValue;
419
procedure TCustomTabControl.SetScrollOpposite(const AValue: Boolean);
418
procedure TTabControl.SetScrollOpposite(const AValue: Boolean);
421
420
TTabControlStrings(FTabs).ScrollOpposite:=AValue;
424
procedure TCustomTabControl.SetStyle(const AValue: TTabStyle);
423
procedure TTabControl.SetStyle(const AValue: TTabStyle);
426
425
if FStyle=AValue then exit;
431
procedure TCustomTabControl.SetTabHeight(const AValue: Smallint);
430
procedure TTabControl.SetTabHeight(const AValue: Smallint);
433
432
TTabControlStrings(FTabs).TabHeight:=AValue;
436
procedure TCustomTabControl.SetTabPosition(const AValue: TTabPosition);
435
procedure TTabControl.SetTabPosition(const AValue: TTabPosition);
438
437
if FTabPosition=AValue then exit;
439
438
FTabPosition:=AValue;
479
procedure TCustomTabControl.DrawTab(ATabIndex: Integer; const Rect: TRect;
482
if Assigned(FOnDrawTab) then
483
FOnDrawTab(Self,TabIndex,Rect,Active)
485
Canvas.FillRect(Rect);
488
function TCustomTabControl.GetImageIndex(ATabIndex: Integer): Integer;
478
function TTabControl.GetImageIndex(ATabIndex: Integer): Integer;
490
480
Result := ATabIndex;
491
481
if Assigned(FOnGetImageIndex) then
492
482
FOnGetImageIndex(Self, ATabIndex, Result);
495
procedure TCustomTabControl.Loaded;
485
procedure TTabControl.Loaded;
497
487
inherited Loaded;
500
procedure TCustomTabControl.CreateWnd;
490
procedure TTabControl.CreateWnd;
503
493
inherited CreateWnd;
507
procedure TCustomTabControl.DestroyHandle;
497
procedure TTabControl.DestroyHandle;
510
500
inherited DestroyHandle;
514
procedure TCustomTabControl.Notification(AComponent: TComponent;
504
procedure TTabControl.Notification(AComponent: TComponent;
515
505
Operation: TOperation);
517
507
inherited Notification(AComponent, Operation);
522
procedure TCustomTabControl.SetTabIndex(Value: Integer);
512
procedure TTabControl.SetTabIndex(Value: Integer);
524
514
TTabControlStrings(FTabs).TabIndex:=Value;
527
procedure TCustomTabControl.UpdateTabImages;
517
procedure TTabControl.UpdateTabImages;
529
519
TTabControlStrings(FTabs).UpdateTabImages;
532
procedure TCustomTabControl.ImageListChange(Sender: TObject);
522
procedure TTabControl.ImageListChange(Sender: TObject);
534
524
TTabControlStrings(FTabs).ImageListChange(Sender);
537
procedure TCustomTabControl.DoSetBounds(ALeft, ATop, AWidth, AHeight: integer);
527
procedure TTabControl.DoSetBounds(ALeft, ATop, AWidth, AHeight: integer);
539
529
inherited DoSetBounds(ALeft, ATop, AWidth, AHeight);
540
TTabControlStrings(FTabs).TabControlBoundsChange;
531
TTabControlStrings(FTabs).TabControlBoundsChange;
543
class function TCustomTabControl.GetControlClassDefaultSize: TSize;
534
class function TTabControl.GetControlClassDefaultSize: TSize;
545
536
Result.CX := 200;
546
537
Result.CY := 150;
549
procedure TCustomTabControl.Paint;
540
procedure TTabControl.PaintWindow(DC: HDC);
544
DCChanged := (not FCanvas.HandleAllocated) or (FCanvas.Handle <> DC);
546
FCanvas.Handle := DC;
550
if DCChanged then FCanvas.Handle := 0;
554
procedure TTabControl.Paint;
553
558
Details: TThemedElementDetails;
555
//DebugLn(['TCustomTabControl.Paint Bounds=',dbgs(BoundsRect),' ClientRect=',dbgs(ClientRect),' CientOrigin=',dbgs(ClientOrigin)]);
563
//DebugLn(['TTabControl.Paint Bounds=',dbgs(BoundsRect),' ClientRect=',dbgs(ClientRect),' CientOrigin=',dbgs(ClientOrigin)]);
556
564
// clear only display area since button area is painted by another control
558
566
ARect := ClientRect;
559
567
AdjustDisplayRectWithBorder(ARect);
561
569
Details := ThemeServices.GetElementDetails(ttPane);
562
ThemeServices.DrawElement(Canvas.Handle, Details, ARect);
570
ThemeServices.DrawElement(lCanvas.Handle, Details, ARect);
564
572
InflateRect(ARect,BorderWidth,BorderWidth);
565
Canvas.Frame3d(ARect, BorderWidth, bvRaised);
573
lCanvas.Frame3d(ARect, BorderWidth, bvRaised);
567
575
if (csDesigning in ComponentState) and (Caption <> '') then
569
577
ARect:=GetDisplayRect;
570
TS := Canvas.TextStyle;
578
TS := lCanvas.TextStyle;
571
579
TS.Alignment:=taCenter;
572
580
TS.Layout:= tlCenter;
573
581
TS.Opaque:= false;
574
582
TS.Clipping:= false;
575
Canvas.TextRect(ARect, ARect.Left, ARect.Top, Caption, TS);
583
lCanvas.TextRect(ARect, ARect.Left, ARect.Top, Caption, TS);
579
procedure TCustomTabControl.AdjustDisplayRectWithBorder(var ARect: TRect);
587
procedure TTabControl.AdjustDisplayRectWithBorder(var ARect: TRect);
581
589
TabAreaSize: LongInt;
622
630
SetInitialBounds(0, 0, CX, CY);
624
632
FTabControlCreating:=false;
634
FCanvas := TControlCanvas.Create;
635
TControlCanvas(FCanvas).Control := Self;
627
destructor TCustomTabControl.Destroy;
638
destructor TTabControl.Destroy;
630
642
FreeThenNil(FTabs);
631
643
FreeThenNil(FImageChangeLink);
632
644
inherited Destroy;
635
function TCustomTabControl.IndexOfTabAt(X, Y: Integer): Integer;
647
function TTabControl.IndexOfTabAt(X, Y: Integer): Integer;
637
649
Result:=TTabControlStrings(FTabs).IndexOfTabAt(X,Y);
640
function TCustomTabControl.GetHitTestInfoAt(X, Y: Integer): THitTests;
652
function TTabControl.GetHitTestInfoAt(X, Y: Integer): THitTests;
642
654
Result:=TTabControlStrings(FTabs).GetHitTestInfoAt(X,Y);
645
function TCustomTabControl.IndexOfTabWithCaption(const TabCaption: string
657
function TTabControl.IndexOfTabWithCaption(const TabCaption: string
656
function TCustomTabControl.TabRect(Index: Integer): TRect;
668
function TTabControl.TabRect(Index: Integer): TRect;
658
670
Result:=TTabControlStrings(FTabs).TabRect(Index);
661
function TCustomTabControl.RowCount: Integer;
673
function TTabControl.RowCount: Integer;
663
675
Result:=TTabControlStrings(FTabs).RowCount;
666
procedure TCustomTabControl.ScrollTabs(Delta: Integer);
678
procedure TTabControl.ScrollTabs(Delta: Integer);
668
680
TTabControlStrings(FTabs).ScrollTabs(Delta);
671
procedure TCustomTabControl.BeginUpdate;
683
procedure TTabControl.BeginUpdate;
673
685
if FTabs=nil then exit;
674
686
TTabControlStrings(FTabs).BeginUpdate;
675
//debugln('TCustomTabControl.BeginUpdate ',dbgs(IsUpdating));
687
//debugln('TTabControl.BeginUpdate ',dbgs(IsUpdating));
678
procedure TCustomTabControl.EndUpdate;
690
procedure TTabControl.EndUpdate;
680
692
if FTabs=nil then exit;
681
693
TTabControlStrings(FTabs).EndUpdate;
682
//debugln('TCustomTabControl.EndUpdate ',dbgs(IsUpdating));
694
//debugln('TTabControl.EndUpdate ',dbgs(IsUpdating));
683
695
if not TTabControlStrings(FTabs).IsUpdating then begin
684
696
if FOnChangeNeeded then Change;
688
function TCustomTabControl.IsUpdating: boolean;
700
function TTabControl.IsUpdating: boolean;
690
702
Result:=(FTabs<>nil) and TTabControlStrings(fTabs).IsUpdating;