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