| Forum |  |  |  |  |  |  |  |  CB
 | | Hi, 
 hat einer von Euch Routiniers eine Idee, wie ich ein mit
 
 
 
 InsertTab(TabControl&,1,Tab1$)
 
 
 eingefügtes Tab unsichtbar machen oder deaktivieren zu können, damit der Anwender erst dann auf die weiteren Registerkarten (insgesamt sinds bei mir 6) zugreifen kann, wenn die erste vollständig ausgefüllt ist?
 
 Derzeit habe ich mir so geholfen, daß alle weiteren Registerkarten erst zu diesem Zeitpunkt erstellt werden, was aber auf einem langsamen PC für ein paar Sekunden zu unschönen Effekten führt. Da werden so an die 100 Text- und Editfelder erstellt und die blitzen dann der Reihe nach kurz auf...
 
 Gruß,
 Christian
 | 
 |  |  |  |  |  |  |  |  | 
 
 
 |  |  |  |  | | Laut msdn ist dies nicht vorgesehen. 
 [...]
  
 Vielleicht baust Du Dir einfach auf die schnelle ein eigenes Tab-Control.
 
 Salve, iF
 | 
 |  |  |  |  |  |  |  |  | 
 
 
 |  |  |  |  CB
 | | Hi, habe mal M$ begrapscht:
 
 
 
 TCS_BOTTOM
 Version 4.70. Tabs appear at the bottom of the control. This value equals TCS_RIGHT. This style is not supported if you use ComCtl32.dll version 6.
 
 TCS_BUTTONS
 Tabs appear as buttons, and no border is drawn around the display area.
 
 TCS_FIXEDWIDTH
 All tabs are the same width. This style cannot be combined with the TCS_RIGHTJUSTIFY style.
 
 TCS_FLATBUTTONS
 Version 4.71. Selected tabs appear as being indented into the background while other tabs appear as being on the same plane as the background. This style only affects tab controls with the TCS_BUTTONS style.
 
 TCS_FOCUSNEVER
 The tab control does not receive the input focus when clicked.
 
 TCS_FOCUSONBUTTONDOWN
 The tab control receives the input focus when clicked.
 
 TCS_FORCEICONLEFT
 Icons are aligned with the left edge of each fixed-width tab. This style can only be used with the TCS_FIXEDWIDTH style.
 
 TCS_FORCELABELLEFT
 Labels are aligned with the left edge of each fixed-width tab; that is, the label is displayed immediately to the right of the icon instead of being centered. This style can only be used with the TCS_FIXEDWIDTH style, and it implies the TCS_FORCEICONLEFT style.
 
 TCS_HOTTRACK
 Version 4.70. Items under the pointer are automatically highlighted. You can check whether or not hot tracking is enabled by calling SystemParametersInfo.
 
 TCS_MULTILINE
 Multiple rows of tabs are displayed, if necessary, so all tabs are visible at once.
 
 TCS_MULTISELECT
 Version 4.70. Multiple tabs can be selected by holding down when clicking. This style must be used with the TCS_BUTTONS style.
 
 TCS_OWNERDRAWFIXED
 The parent window is responsible for drawing tabs.
 
 TCS_RAGGEDRIGHT
 Rows of tabs will not be stretched to fill the entire width of the control. This style is the default.
 
 TCS_RIGHT
 Version 4.70. Tabs appear vertically on the right side of controls that use the TCS_VERTICAL style. This value equals TCS_BOTTOM. This style is not supported if you use visual styles.
 
 TCS_RIGHTJUSTIFY
 The width of each tab is increased, if necessary, so that each row of tabs fills the entire width of the tab control. This window style is ignored unless the TCS_MULTILINE style is also specified.
 
 TCS_SCROLLOPPOSITE
 Version 4.70. Unneeded tabs scroll to the opposite side of the control when a tab is selected.
 
 TCS_SINGLELINE
 Only one row of tabs is displayed. The user can scroll to see more tabs, if necessary. This style is the default.
 
 TCS_TABS
 Tabs appear as tabs, and a border is drawn around the display area. This style is the default.
 
 TCS_TOOLTIPS
 The tab control has a ToolTip control associated with it.
 
 TCS_VERTICAL
 Version 4.70. Tabs appear at the left side of the control, with tab text displayed vertically. This style is valid only when used with the TCS_MULTILINE style. To make tabs appear on the right side of the control, also use the TCS_RIGHT style. This style is not supported if you use ComCtl32.dll version 6.
 
 Remarks
 
 The following styles can be modified after the control is created:
 
 TCS_BOTTOM
 TCS_BUTTONS
 TCS_FIXEDWIDTH
 TCS_FLATBUTTONS
 TCS_FORCEICONLEFT
 TCS_FORCELABELLEFT
 TCS_MULTILINE
 TCS_OWNERDRAWFIXED
 TCS_RAGGEDRIGHT
 TCS_RIGHT
 TCS_VERTICAL
 
 Meine erste Idee war natürlich, erst mal
 TCS_FOCUSNEVER
 (The tab control does not receive the input focus when clicked.)
 einzusetzen
 und danach
 TCS_FOCUSONBUTTONDOWN
 (The tab control receives the input focus when clicked.)
 
 Das entspräche ja genau der Enable-Funktion.
 Bloß ist das nicht vorgesehen, nach der Erstellung geändert zu werden - wie Du schon geschrieben hast...
 
 Aber vielleicht gehts mit:
 TCS_FIXEDWIDTH
 
 Das 1. Tab wird mit normaler Breite erstellt, die anderen erst mal mit Breite 0 oder 1 und später die Breite geändert.
 Geht das - und wenn ja, wie?
 
 Gruß,
 Christian
 | 
 |  |  |  |  |  |  |  |  | 
 
 
 |  |  |  |  CB
 | | So, habe da ein Code-Schnipsel, das ich mal wo im Forum gefunden habe, etwas nach meinen Bedürfnissen modifiziert. Das käme meiner Vorstellung schon recht nahe, bloß kriege ich die Scroll-Pfeile nicht weg, ein Anwender hätte also immer noch Zugriff auf die anderen Tabs!
 KompilierenMarkierenSeparieren
 DEF SetWindowLong(3) ! User32,SetWindowLongA
DEF GetWindowLong(2) ! User32,GetWindowLongA
DEF &WM_CLOSE $010
DEF &WM_COMMAND $0111
DEF &TCM_SETITEMSIZE $01329
DEF &TCS_FIXEDWIDTH  1024
DEF &TCS_MULTILINE $0200
DEF &TCM_GETITEMCOUNT $01304
DEF &GWL_STYLE  -16
DEF MakeLong(2) Or(&(1),&(2)<<16)
Declare Ende&,TabControl&,TabItems&,Tabs&
WindowStyle 538
Cls
TabControl& = Create(TABCTRL,%hwnd,TAB 1,10,10,400,300)
Tabs& = Create(Button,%HWND,Show all tabs,50,350,100,20)
InsertTab(TabControl&,1,TAB 2)
InsertTab(TabControl&,2,TAB 3)
InsertTab(TabControl&,3,TAB 4)
InsertTab(TabControl&,4,TAB 5)
InsertTab(TabControl&,5,TAB 6)
WindowStyle erweitern um feste Breite (alle Tabreiter sind gleich breit)
SetWindowLong(TabControl&,&GWL_STYLE,OR(GetWindowLong(TabControl&,&GWL_STYLE),OR(&TCS_FIXEDWIDTH,&TCS_MULTILINE)))
SetWindowLong(TabControl&,&GWL_STYLE,OR(GetWindowLong(TabControl&,&GWL_STYLE),&TCS_FIXEDWIDTH))
TabItems& = 1
SendMessage(TabControl&,&TCM_SETITEMSIZE,0,MakeLong(Width(TabControl&),20))
PROC TABS_erweitern
    Anzahl der Tabreiter ermitteln
    TabItems& = SendMessage(TabControl&,&TCM_GETITEMCOUNT,0,0)
    Breite und Hoehe setzen
    Par1 bei MakeLong ist die Breite
    Par2 bei Makelong ist die Höhe
    SendMessage(TabControl&,&TCM_SETITEMSIZE,0,MakeLong(Width(TabControl&)/TabItems&,20))
ENDPROC
UserMessages &WM_COMMAND,&WM_CLOSE
Whilenot Ende&
    Waitinput
    If %UMessage = &WM_CLOSE
        End
    ElseIf %UMessage = &WM_COMMAND
        If &ULParam = Tabs&
            TABS_erweitern
        EndIf
    EndIf
EndWhile
End
Vielleicht ginge es, wenn der Stil primär auf Buttons gesetzt und später auf Flatbuttons geändert würde?
 
 Christian
 | 
 |  |  |  |  |  |  |  |  | 
 
 
 |  |  |  |  | | So richtig wirklich helfen kann ich Dir dabei nicht. Aber vielleicht ist die Herangehensweise auch nicht die richtige. 
 Ein ganzes TAB nicht sperren zu können empfinde ich auch als Blödsinn - aber vielleicht ist es für den User auch einfacher wenn er anhand von ge-disableten-Eingabefeldern erkennt das etwas unstimmig ist.
 
 Nimm doch die Thread.Pcu um die Eingabefelder - je nach Schlüssigkeit - ein oder ab-zu-schalten.
 
 So wird auch in anderen größeren Programmen verfahren.
 
 Salve, iF
 | 
 |  |  |  |  |  |  |  |  | 
 
 
 |  |  |  |  CB
 | | Hi, ich glaube, ich habe doch eine Lösung gefunden, ist gleich fertig.
 
 Derzeit habe ich die Tabcontrol nach einem ähnlichen Schema wie seinerzeit bei Richard Maurukas erstellt, halt ein wenig modernisiert.
 
 Bezügl. Thread.pcu: Würde ich sofort verwenden!! Ich sehe das Potential darin, aber:
 Da setzt Du bei mir Wissen voraus, das ich leider (noch) nicht habe.
 Überhaupt weiß ich mir mit Units noch nicht viel anzufangen (wie schon mal erwähnt: ich nix verstehen, ich anderes Baustelle!
  ) 
 Bin aber Gott sei Dank noch nicht zu alt, um noch lernfähig zu sein!
  Immerhin habe ich mir fast alles an Programmiertätigkeit autoditaktisch erarbeitet, oft genug nach try and error - the more tries, the more errors und vieles nach demselben Prinzip, mit dem die japanische Autoindustrie vor etlichen Jahren in die Höhe geschossen ist: Man klaut sich von überall her das beste - und macht mit ein paar Modifikationen was Neues daraus und manchmal waren (sind) die Kopien besser als das Original..... 
 Aber wir kochen alle nur mit Wasser und jeder hat mal klein angefangen!
 So, genug der Platitüden - ich schau mal, ob mein Muster jetzt wirklich besser geworden ist als das Original..
 
 Christian
 | 
 |  |  |  |  |  |  |  |  | 
 
 
 |  |  |  |  CB
 | | Hi, So, bis auf ne Kleinigkeit gehts. Da muß noch irgendwo ein kleiner Gedankenfehler drinsein. Habe nur momentan keine Zeit dazu.
 KompilierenMarkierenSeparieren
 DEF SetWindowLong(3) ! User32,SetWindowLongA
DEF GetWindowLong(2) ! User32,GetWindowLongA
DEF &WM_CLOSE $010
DEF &WM_COMMAND $0111
DEF &TCM_SETITEMSIZE $01329
DEF &TCS_FIXEDWIDTH  1024
DEF &TCM_GETITEMCOUNT $01304
DEF &GWL_STYLE  -16
DEF MakeLong(2) Or(&(1),&(2)<<16)
Declare Ende&,TabControl&,TabItems&,Tabs&,AktivesTab&
Declare EditTab1&,EditTab2&,EditTab3&,EditTab4&,EditTab5&,EditTab6&
PROC TAB1AKTIV
    ShowWindow(Tabs&,1)
    ShowWindow(EditTab1&,1)
ENDPROC
PROC TAB2AKTIV
    ShowWindow(EditTab2&,1)
ENDPROC
PROC TAB3AKTIV
    ShowWindow(EditTab3&,1)
ENDPROC
PROC TAB4AKTIV
    ShowWindow(EditTab4&,1)
ENDPROC
PROC TAB5AKTIV
    ShowWindow(EditTab5&,1)
ENDPROC
PROC TAB6AKTIV
    ShowWindow(EditTab6&,1)
ENDPROC
PROC TAB1INAKTIV
    ShowWindow(Tabs&,0)
    ShowWindow(EditTab1&,0)
ENDPROC
PROC TAB2INAKTIV
    ShowWindow(EditTab2&,0)
ENDPROC
PROC TAB3INAKTIV
    ShowWindow(EditTab3&,0)
ENDPROC
PROC TAB4INAKTIV
    ShowWindow(EditTab4&,0)
ENDPROC
PROC TAB5INAKTIV
    ShowWindow(EditTab5&,0)
ENDPROC
PROC TAB6INAKTIV
    ShowWindow(EditTab6&,0)
ENDPROC
WindowStyle 538
Cls
TabControl& = Create(TABCTRL,%hwnd,TAB 1,0,0,width(%HWND),height(%HWND))
InsertTab(TabControl&,1,TAB 2)
InsertTab(TabControl&,2,TAB 3)
InsertTab(TabControl&,3,TAB 4)
InsertTab(TabControl&,4,TAB 5)
InsertTab(TabControl&,5,TAB 6)
aus CommCtrl.ph:
{ ====== ~TAB CONTROL ======================== }
WC_TABCONTROL = SysTabControl32;
TCS_SCROLLOPPOSITE    = $0001// assumes multiline tab
TCS_BOTTOM            = $0002
TCS_RIGHT             = $0002
TCS_MULTISELECT       = $0004// allow multi-select in button mode
TCS_FLATBUTTONS       = $0008
TCS_FORCEICONLEFT     = $0010
TCS_FORCELABELLEFT    = $0020
TCS_HOTTRACK          = $0040   Farbige Beschriftung unter Maus-Cursor
TCS_VERTICAL          = $0080
TCS_TABS              = $0000
TCS_BUTTONS           = $0100
TCS_SINGLELINE        = $0000
TCS_MULTILINE         = $0200
TCS_RIGHTJUSTIFY      = $0000
TCS_FIXEDWIDTH        = $0400
TCS_RAGGEDRIGHT       = $0800
TCS_FOCUSONBUTTONDOWN = $1000
TCS_OWNERDRAWFIXED    = $2000
TCS_TOOLTIPS          = $4000
TCS_FOCUSNEVER        = $8000  Da STEHEN tuts, bloß gehen tuts NICHT!
WindowStyle erweitern um feste Breite (alle Tabreiter sind gleich breit)
SetWindowLong(TabControl&,&GWL_STYLE,OR(GetWindowLong(TabControl&,&GWL_STYLE),$0440))
TabItems& = 1
SendMessage(TabControl&,&TCM_SETITEMSIZE,0,MakeLong(Width(TabControl&),20))
EditTab1& = Create(Edit,%HWND,Das ist Tab 1,50,50,150,19)
Tabs& = Create(Button,%HWND,Show all tabs,50,350,100,20)
EditTab2& = Create(Edit,%HWND,Das ist jetzt Tab 2,50,100,150,19)
EditTab3& = Create(Edit,%HWND,Das ist jetzt Tab 3,50,150,150,19)
EditTab4& = Create(Edit,%HWND,Das ist jetzt Tab 4,50,200,150,19)
EditTab5& = Create(Edit,%HWND,Das ist jetzt Tab 5,50,250,150,19)
EditTab6& = Create(Edit,%HWND,Das ist jetzt Tab 6,50,300,150,19)
TAB1AKTIV
TAB2INAKTIV
TAB3INAKTIV
TAB4INAKTIV
TAB5INAKTIV
TAB6INAKTIV
EnableWindow Tabcontrol&,0
PROC TABS_erweitern
    EnableWindow Tabcontrol&,1
    SetWindowLong(TabControl&,&GWL_STYLE,OR(GetWindowLong(TabControl&,&GWL_STYLE),OR(&TCS_FIXEDWIDTH,$0440)))
    Anzahl der Tabreiter ermitteln
    TabItems& = SendMessage(TabControl&,&TCM_GETITEMCOUNT,0,0)
    Breite und Hoehe setzen
    Par1 bei MakeLong ist die Breite
    Par2 bei Makelong ist die Höhe
    SendMessage(TabControl&,&TCM_SETITEMSIZE,0,MakeLong(Width(TabControl&)/TabItems&,20))
ENDPROC
UserMessages &WM_COMMAND,&WM_CLOSE
Whilenot Ende&
    Waitinput
    AktivesTab& = GetActiveTab(Tabcontrol&)   Ermittelt das selektierte Tab
    If tabchanged(TabControl&)                Tab gewechselt?
        If AktivesTab& = 0
            TAB1AKTIV
            ShowWindow(Tabs&,0)
            TAB2INAKTIV
            TAB3INAKTIV
            TAB4INAKTIV
            TAB5INAKTIV
            TAB6INAKTIV
        ElseIf AktivesTab& = 1
            TAB1INAKTIV
            TAB2AKTIV
            TAB3INAKTIV
            TAB4INAKTIV
            TAB5INAKTIV
            TAB6INAKTIV
        ElseIf AktivesTab& = 2
            TAB1INAKTIV
            TAB2INAKTIV
            TAB3AKTIV
            TAB4INAKTIV
            TAB5INAKTIV
            TAB6INAKTIV
        ElseIf AktivesTab& = 3
            TAB1INAKTIV
            TAB2INAKTIV
            TAB3INAKTIV
            TAB4AKTIV
            TAB5INAKTIV
            TAB6INAKTIV
        ElseIf AktivesTab& = 4
            TAB1INAKTIV
            TAB2INAKTIV
            TAB3INAKTIV
            TAB4INAKTIV
            TAB5AKTIV
            TAB6INAKTIV
        ElseIf AktivesTab& = 5
            TAB1INAKTIV
            TAB2INAKTIV
            TAB3INAKTIV
            TAB4INAKTIV
            TAB5INAKTIV
            TAB6AKTIV
        EndIf
    EndIf
    If %UMessage = &WM_CLOSE
        End
    ElseIf %UMessage = &WM_COMMAND
        If &ULParam = Tabs&
            AktivesTab& = 0
            TABS_erweitern
            TAB1AKTIV
            ShowWindow(Tabs&,0)
            TAB2INAKTIV
            TAB3INAKTIV
            TAB4INAKTIV
            TAB5INAKTIV
            TAB6INAKTIV
        EndIf
    EndIf
EndWhile
End
Christian
 | 
 |  |  |  |  |  |  |  |  | 
 
 
 |  |  |  |  CB
 | | Sodale, habe soeben
  ausgetrickst. So gehts wirklich:  KompilierenMarkierenSeparieren
 DEF SetWindowLong(3) ! User32,SetWindowLongA
DEF GetWindowLong(2) ! User32,GetWindowLongA
DEF &WM_CLOSE $010
DEF &WM_COMMAND $0111
DEF &TCM_SETITEMSIZE $01329
DEF &TCS_FIXEDWIDTH  1024
DEF &TCM_GETITEMCOUNT $01304
DEF &GWL_STYLE  -16
DEF MakeLong(2) Or(&(1),&(2)<<16)
UserMessages &WM_COMMAND,&WM_CLOSE
Declare Ende&,TabControl&,TabItems&,Tabs&,AktivesTab&,Ende&,Tab2&
Declare EditTab1&,EditTab2&,EditTab3&,EditTab4&,EditTab5&,EditTab6&
PROC TAB1AKTIV
    ShowWindow(Tabs&,1)
    ShowWindow(EditTab1&,1)
ENDPROC
PROC TAB2AKTIV
    ShowWindow(EditTab2&,1)
ENDPROC
PROC TAB3AKTIV
    ShowWindow(EditTab3&,1)
ENDPROC
PROC TAB4AKTIV
    ShowWindow(EditTab4&,1)
ENDPROC
PROC TAB5AKTIV
    ShowWindow(EditTab5&,1)
ENDPROC
PROC TAB6AKTIV
    ShowWindow(EditTab6&,1)
ENDPROC
PROC TAB1INAKTIV
    ShowWindow(Tabs&,0)
    ShowWindow(EditTab1&,0)
ENDPROC
PROC TAB2INAKTIV
    ShowWindow(EditTab2&,0)
ENDPROC
PROC TAB3INAKTIV
    ShowWindow(EditTab3&,0)
ENDPROC
PROC TAB4INAKTIV
    ShowWindow(EditTab4&,0)
ENDPROC
PROC TAB5INAKTIV
    ShowWindow(EditTab5&,0)
ENDPROC
PROC TAB6INAKTIV
    ShowWindow(EditTab6&,0)
ENDPROC
WindowStyle 538
Cls
TabControl& = Create(TABCTRL,%hwnd,TAB 1,0,0,width(%HWND),height(%HWND))
Tab2& = InsertTab(TabControl&,1,TAB 2)
InsertTab(TabControl&,2,TAB 3)
InsertTab(TabControl&,3,TAB 4)
InsertTab(TabControl&,4,TAB 5)
InsertTab(TabControl&,5,TAB 6)
aus CommCtrl.ph:
{ ====== ~TAB CONTROL ======================== }
WC_TABCONTROL = SysTabControl32;
TCS_SCROLLOPPOSITE    = $0001// assumes multiline tab
TCS_BOTTOM            = $0002
TCS_RIGHT             = $0002
TCS_MULTISELECT       = $0004// allow multi-select in button mode
TCS_FLATBUTTONS       = $0008
TCS_FORCEICONLEFT     = $0010
TCS_FORCELABELLEFT    = $0020
TCS_HOTTRACK          = $0040   Farbige Beschriftung unter Maus-Cursor
TCS_VERTICAL          = $0080
TCS_TABS              = $0000
TCS_BUTTONS           = $0100
TCS_SINGLELINE        = $0000
TCS_MULTILINE         = $0200
TCS_RIGHTJUSTIFY      = $0000
TCS_FIXEDWIDTH        = $0400
TCS_RAGGEDRIGHT       = $0800
TCS_FOCUSONBUTTONDOWN = $1000
TCS_OWNERDRAWFIXED    = $2000
TCS_TOOLTIPS          = $4000
TCS_FOCUSNEVER        = $8000   Da STEHEN täts ja, bloß gehen tuts NICHT! VOn M$ nicht vorgesehen!  |-(
SetWindowLong(TabControl&,&GWL_STYLE,OR(GetWindowLong(TabControl&,&GWL_STYLE),$0440))
TabItems& = 1
SendMessage(TabControl&,&TCM_SETITEMSIZE,0,MakeLong(Width(TabControl&),20))
EditTab1& = Create(Edit,%HWND,Das ist Tab 1,50,50,150,19)
Tabs& = Create(Button,%HWND,Show all tabs,50,350,100,20)
EditTab2& = Create(Edit,%HWND,Das ist jetzt Tab 2,50,100,150,19)
EditTab3& = Create(Edit,%HWND,Das ist jetzt Tab 3,50,150,150,19)
EditTab4& = Create(Edit,%HWND,Das ist jetzt Tab 4,50,200,150,19)
EditTab5& = Create(Edit,%HWND,Das ist jetzt Tab 5,50,250,150,19)
EditTab6& = Create(Edit,%HWND,Das ist jetzt Tab 6,50,300,150,19)
TAB1AKTIV
TAB2INAKTIV
TAB3INAKTIV
TAB4INAKTIV
TAB5INAKTIV
TAB6INAKTIV
AktivesTab& = GetActiveTab(Tabcontrol&)
AktivesTab& = 0
EnableWindow Tabcontrol&,0
PROC TABS_erweitern
    EnableWindow Tabcontrol&,1
    WindowStyle erweitern um feste Breite (alle Tabreiter sind gleich breit)
    SetWindowLong(TabControl&,&GWL_STYLE,OR(GetWindowLong(TabControl&,&GWL_STYLE),OR(&TCS_FIXEDWIDTH,$0440)))
    Anzahl der Tabreiter ermitteln
    TabItems& = SendMessage(TabControl&,&TCM_GETITEMCOUNT,0,0)
    Breite und Hoehe setzen
    Par1 bei MakeLong ist die Breite
    Par2 bei Makelong ist die Höhe
    SendMessage(TabControl&,&TCM_SETITEMSIZE,0,MakeLong(Width(TabControl&)/TabItems&,20))
    AktivesTab& = 0
ENDPROC
Whilenot Ende&
    Waitinput
    AktivesTab& = GetActiveTab(Tabcontrol&)   Ermittelt das selektierte Tab
    If %UMessage = &WM_CLOSE
        Ende& = 1
    ElseIf %UMessage = &WM_COMMAND
        If &ULParam = Tabs&
            TABS_erweitern
            TAB1INAKTIV
            TAB2AKTIV
            TAB3INAKTIV
            TAB4INAKTIV
            TAB5INAKTIV
            TAB6INAKTIV
            TAB1AKTIV                           das kapier ich zwar nicht so ganz, aber es geht nur so,
            TAB2INAKTIV                         sonst wird der Inhalt von Tab1 nicht angezeigt!
            ShowWindow(Tabs&,0)
        EndIf
    EndIf
    If tabchanged(TabControl&)                Tab gewechselt?
        If AktivesTab& = 0
            TAB1AKTIV
            ShowWindow(Tabs&,0)
            TAB2INAKTIV
            TAB3INAKTIV
            TAB4INAKTIV
            TAB5INAKTIV
            TAB6INAKTIV
        ElseIf AktivesTab& = 1
            TAB1INAKTIV
            TAB2AKTIV
            TAB3INAKTIV
            TAB4INAKTIV
            TAB5INAKTIV
            TAB6INAKTIV
        ElseIf AktivesTab& = 2
            TAB1INAKTIV
            TAB2INAKTIV
            TAB3AKTIV
            TAB4INAKTIV
            TAB5INAKTIV
            TAB6INAKTIV
        ElseIf AktivesTab& = 3
            TAB1INAKTIV
            TAB2INAKTIV
            TAB3INAKTIV
            TAB4AKTIV
            TAB5INAKTIV
            TAB6INAKTIV
        ElseIf AktivesTab& = 4
            TAB1INAKTIV
            TAB2INAKTIV
            TAB3INAKTIV
            TAB4INAKTIV
            TAB5AKTIV
            TAB6INAKTIV
        ElseIf AktivesTab& = 5
            TAB1INAKTIV
            TAB2INAKTIV
            TAB3INAKTIV
            TAB4INAKTIV
            TAB5INAKTIV
            TAB6AKTIV
        EndIf
    EndIf
EndWhile
End
Gruß,
 Christian
 | 
 |  |  |  |  |  |  |  |  | 
 
 
 |  |  |  |  Frank
 Abbing
 | | Hi, 
 sieht komisch aus, und ungewohnt.
 Warum benutzt du nicht SendMessage(tabcontrol&,$1309,0,0)?
 | 
 |  |  |  |  |  |  |  |  | 
 
 
 |  |  |  |  CB
 | | Hi, Frank! 
 Stimmt, was das Aussehen angeht - gebe Dir recht.
 Was Punkt 2 angeht - wenn ich das gewußt hätte, hätte ich mich sicher nicht an die Community gewandt mit der Bitte um Hilfe. Ich habe aber versucht, eine eigene Lösung zu finden und nachdem iF mir mitgeteilt hat, daß das von M$ gar nicht vorgesehen ist und mir auch nicht weiterhelfen konnte, war ich irgendwie froh, eine optisch nicht ideale, aber wenigstens praktikable Methode gefunden zu haben.
 
 Habe Deinen Tip natürlich gleich mal ausprobiert, bloß bekomme ich entweder eine Division durch 0 oder ein komplett leeres Feld ohne Beschriftung oder zuerst ein leeres Feld und anschließend nur mehr die Tabs 2-6 angezeigt. Tätst Du mir bitte anhand von meinem Schema zeigen, wie Du das gemeint hast? Es sollten nämlich auch nach dem Ansichtswechsel alle Tabs wieder verfügbar sein.
 
 Gruß,
 Christian
 | 
 |  |  |  |  |  |  |  |  | 
 
 
 |  |  |  |  Frank
 Abbing
 | | Hi, 
 so, z.B.:
 KompilierenMarkierenSeparieren
  $P+
SetErrorLevel 0
********************** HINWEISE ********************************
CODE ERZEUGT MIT ROKOS OBJECT CREATOR 4.1
DATUM  01.02.2005    um  06:43 Uhr
VERWENDETE PROFANVERSION IST 7.9-NT XPROFAN
!!! Dieser Code wird von Roc immer neu erzeugt        !!!
!!! Erst bearbeiten, wenn alle Objekte erzeugt wurden !!!
!!! Verändern Sie ggf. feste Pfade in variable Pfade  !!!
DEF GETSYSCOLOR(1) !USER32,GetSysColor
DECLARE BUTTON1&,BUTTON2&,x&
DECLARE TABCTRL1&
WINDOWSTYLE 63
WINDOWTITLE Neues Fenster
WINDOW 99,149-640,500
SETTRUECOLOR 1
DECLARE ENDE%
CLS GETSYSCOLOR(15)
USEFONT MS Sans Serif,13,0,0,0,0
SETDIALOGFONT 1
Hier kann ggf. Ihr Menü hin
BUTTON1& = CREATE(BUTTON,%HWND,Mit Reitern,0424,0086,0090,0030)
BUTTON2& = CREATE(BUTTON,%HWND,Ohne Reiter,0424,0126,0090,0030)
TABCTRL1& = CREATE(TABCTRL,%HWND,Reiter1,0046,0059,0170,0130)
@InsertTab(TABCTRL1&,1,Reiter2)
@InsertTab(TABCTRL1&,2,Reiter3)
SETFOCUS(%HWND)
x&=1
WHILENOT ENDE%
    WAITINPUT
    If @EQU(%KEY,2)
        LET ENDE%= 1
    ELSEIF @EQU(%KEY,4)
    ELSEIF GETFOCUS(BUTTON1&) BUTTON
        If x&=0
            @InsertTab(TABCTRL1&,0,Reiter1)
            @InsertTab(TABCTRL1&,1,Reiter2)
            @InsertTab(TABCTRL1&,2,Reiter3)
            x&=x&+1
        EndIf
    ELSEIF GETFOCUS(BUTTON2&) BUTTON
        SendMessage(TABCTRL1&,$1309,0,0)
        x&=0
    ELSEIF TABCHANGED(TABCTRL1&) TABCTRL
    ENDIF
WEND
 | 
 |  |  |  |  |  |  |  |  | 
 
 
 |  |  |  |  Uwe
 ''Pascal''
 Niemeier
 | | Hallo Leute! 
 Wenn ich das Problem richtig verstanden habe, könnte dies helfen:
 KompilierenMarkierenSeparieren
 window 20,20-700,400
declare dlg&,Tab&,Tab&[5],Rb1&,Rb2&
dlg&=create(dialog,%hwnd,Einstellungen,%winleft+50,%wintop+100,520,250)
Tab&=Control(SysTabControl32,,$54010000,20,10,width(dlg&)-40,height(dlg&)-40,dlg&,10,0)
whileloop 0,5
    inserttab(Tab&,&loop,Reiter +str$(&loop))
    Tab&[&loop]=control(Dialog,1,$40081003,2,25,width(Tab&)-4,height(Tab&)-30,Tab&,1,0)
    create(text,Tab&[&loop],Dies ist Karte +str$(&loop),50,20,300,50)
endwhile
showwindow(Tab&[0],1)
Rb1&=create(radiobutton,Tab&[0],Alle Reiter zugänglich,50,50,300,50)
Rb2&=create(radiobutton,Tab&[0],Nur Reiter 0-2 zugänglich,50,85,300,50)
setcheck Rb1&,1
declare OldTab%,NewTab%
while 1
    waitinput
    if tabchanged(Tab&)---------------------Tabwechsel
        NewTab%=GetActiveTab(Tab&)
        if NewTab%<>OldTab%
            if getcheck(Rb2&) * (NewTab%>2)
                sendmessage(Tab&,4876,OldTab%,0)--4876 = TCM_SETCURSEL
                beep
            else
                showwindow(Tab&[OldTab%],0)
                showwindow(Tab&[NewTab%],1)
                OldTab%=NewTab%
            endif
        endif
    endif
endwhile
HTH
 Pascal
 
 Tötet Sweety!
 | 
 |  |  |  |  |  |  |  |  | 
 
 
 | 
 
 Antworten| Themenoptionen | 840.621 Betrachtungen | 
 ThemeninformationenDieses Thema hat 5 Teilnehmer: |