AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TabControl und Events

Ein Thema von EWeiss · begonnen am 9. Jul 2018 · letzter Beitrag vom 10. Jul 2018
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

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
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.386 Beiträge
 
Delphi 12 Athens
 
#2

AW: TabControl und Events

  Alt 9. Jul 2018, 11:27
Zitat:
Das scrollen sollte schon verfügbar sein denn man hat nicht immer genug platz um das Tab entsprechend zu vergrößern.
Du willst das Scrollen ja selber machen ... so wäre es eine Möglichkeit die Scrollknöpfe wegzubekommen und zu steuern welche Tabs "in diesem Moment" sichtbar sind.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: TabControl und Events

  Alt 9. Jul 2018, 11:34
Zitat:
Das scrollen sollte schon verfügbar sein denn man hat nicht immer genug platz um das Tab entsprechend zu vergrößern.
Du willst das Scrollen ja selber machen ... so wäre es eine Möglichkeit die Scrollknöpfe wegzubekommen und zu steuern welche Tabs "in diesem Moment" sichtbar sind.
Jo Danke werde es mal testen..

gruss
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

AW: TabControl und Events

  Alt 10. Jul 2018, 22:21
Ich subclasse das UpDown32 control nun da ich denke das es der sauberste weg ist.
Das was man ganz rechts sieht das Rechteck über dem letzten Tab ist das Control mit draufgerenderten Hintergrund.
Muss jetzt nur noch die Button erstellen und das Handling des Paint Event verbessern danach melde ich mich nochmal.

Funktioniert jetzt so wie es soll.

gruss

Geändert von EWeiss (11. Jul 2019 um 15:52 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz