Thema: Delphi TabControl und Events

Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#7

AW: TabControl und Events

  Alt 9. Jul 2018, 10:45
Zitat:
Billige Lösung: Nur die Tabs anzeigen, welche sichtbar sind / sein sollen und die Anderen auf Invisible.
Das scrollen sollte schon verfügbar sein denn man hat nicht immer genug platz um das Tab entsprechend zu vergrößern.
Das hinzufügen dynamischer Tabs ist nur ein Test denn das muss ja auch funktionieren.

Hmmm... mal schaun.

So wird das Tab und der Button darauf erstellt.
Das aussehen der Button vom TabSheet ist dann abhängig davon wie das BTN_Push.png aussieht das kann alle erdenkliche formen haben.
Delphi-Quellcode:
  TabInfo := CTRL_TabCreate;
  TabInfo.ImagePath := SKAERO_FOLDER + 'BTN_Push.png';
  TabInfo.Left := 230;
  TabInfo.Top := 268;
  TabInfo.Width := 300;
  TabInfo.Height := 250;
  TabInfo.DlgItemID := ID_TAB;
  TabInfo.ImageStateMax := 0;
  TabInfo.TabImagePath := SKAERO_FOLDER + 'TabFrame.png';
  TabInfo.CreateWindow(hMain);
  SKAERO_SetAnchorMode(TabInfo.Handle, ANCHOR_HEIGHT_WIDTH);
  SKAERO_SetZorder(TabInfo.Handle, HWND_TOP);

  TabInfo.InsertItem(TabInfo.Handle, 0, 'Hello World');
  TabInfo.SetCurSel(TabInfo.Handle, 0);
  TabHandle := TabInfo.AddTab(TabInfo.Handle, 0);

  btnTab0 := CTRL_PushButtonCreate;
  btnTab0.ImagePath := SKAERO_FOLDER + 'BTN_Push.png';
  btnTab0.Text := 'Button on Tab Hello World';
  btnTab0.Left := 20;
  btnTab0.Top := 20;
  btnTab0.Width := 180;
  btnTab0.Height := 75;
  btnTab0.DlgItemID := ID_BTN_TAB0;
  btnTab0.TextCol := SKAERO_BTNTEXTCOLOR;
  btnTab0.Label3D := 1;
  btnTab0.TextAlligment := Center;
  btnTab0.ImageStateMax := 0;
  btnTab0.CreateWindow(TabHandle);
  SKAERO_SetAnchorMode(btnTab0.Handle, ANCHOR_BOTTOM_RIGHT);
  SKAERO_SetZorder(btnTab0.Handle, HWND_TOP);
und so dynamisch erstellt.
Delphi-Quellcode:
ID_BTN_ADDTAB:
  begin
    ItemCount := TabInfo.GetItemCount(TabInfo.Handle);
    TabInfo.InsertItem(TabInfo.Handle, ItemCount + 1,
      PWideChar('Tab ' + IntToStr(ItemCount)));

    TabHandle := TabInfo.AddTab(TabInfo.Handle, ItemCount);
    AddCtrlToTab(TabHandle, ItemCount);

    SKAERO_UpdateWindow(WinHandle, False);
  end;
So kann man jetzt xbeliebige Controls im Tab erstellen.
Hier nur die ersten 2 die anderen bleiben leer.
Einmal einen Button und einmal eine Tackbar
Delphi-Quellcode:
procedure AddCtrlToTab(TabHandle: Integer; Item: Integer);
var
  myTip: PWideChar;
begin

  case Item of
    1:
      begin
        btnTab1 := CTRL_PushButtonCreate;
        btnTab1.ImagePath := SKAERO_FOLDER + 'BTN_Push.png';
        btnTab1.Text := 'Button on Tab 1';
        btnTab1.Left := 20;
        btnTab1.Top := 40;
        btnTab1.Width := 120;
        btnTab1.Height := 75;
        btnTab1.DlgItemID := ID_BTN_TAB1;
        btnTab1.TextCol := SKAERO_BTNTEXTCOLOR;
        btnTab1.Label3D := 1;
        btnTab1.ImageStateMax := 0;
        btnTab1.CreateWindow(TabHandle);
        SKAERO_SetAnchorMode(btnTab1.Handle, ANCHOR_BOTTOM_RIGHT);
        SKAERO_SetZorder(btnTab1.Handle, HWND_TOP);
      end;
    2:
      begin
        SKAERO_SplitColorARGB(SKAERO_AEROCOLOR, Alpha, Red, Green, Blue);
        trbTab := CTRL_TrackBarCreate;
        trbTab.ImageThumbPath := SKAERO_FOLDER + 'BTN_Track_H.png';
        trbTab.Left := 38;
        trbTab.Top := 40;
        trbTab.Width := 142;
        trbTab.Height := 14;
        trbTab.DlgItemID := ID_TRACK_TAB;
        trbTab.MinVal := 0;
        trbTab.MaxVal := 255;
        trbTab.Val := Alpha;
        trbTab.LineVisible := true;
        trbTab.TrackColor := SKAERO_TRACKHICOLOR;
        trbTab.ProgressColor := SKAERO_TRACKPROGRESSCOLOR;
        trbTab.ParentWindow := MainHandle;
        trbTab.CreateWindow(TabHandle);
        SKAERO_SetAnchorMode(trbTab.Handle, ANCHOR_BOTTOM);
        SKAERO_SetZorder(trbTab.Handle, HWND_TOP);
        myTip := 'Only Test';
        CTRL_ToolTipCreate(trbTab.Handle, myTip);
      end;
  end;
end;
gruss

Geändert von EWeiss ( 9. Jul 2018 um 11:37 Uhr)
  Mit Zitat antworten Zitat