Italia
Foro

Tabcontrol deaktivieren oder unsichtbar machen

 
- Page 1 -



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 per 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...

Saluto,
Christian
 
XProfan 8/9.1, Win XP, AMD 64/3200
31.01.2005  
 



 
- Page 1 -



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 naturalmente, 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?

Saluto,
Christian
 
XProfan 8/9.1, Win XP, AMD 64/3200
31.01.2005  
 




CB
So,
habe da ein Code-Schnipsel, das ich mal wo im Foro 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

ef='./../../funktionsreferenzen/xprofan/end/'>End

Vielleicht ginge es, wenn der Stil primär auf Buttons gesetzt und später auf Flatbuttons geändert würde?

Christian
 
XProfan 8/9.1, Win XP, AMD 64/3200
31.01.2005  
 



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 per 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
 
31.01.2005  
 




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 Unità 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
 
XProfan 8/9.1, Win XP, AMD 64/3200
31.01.2005  
 




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

EndWhile

End

Christian
 
XProfan 8/9.1, Win XP, AMD 64/3200
31.01.2005  
 




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

Saluto,
Christian
 
XProfan 8/9.1, Win XP, AMD 64/3200
31.01.2005  
 




Frank
Abbing
Hi,

sieht komisch aus, und ungewohnt.
Warum benutzt du nicht SendMessage(tabcontrol&,$1309,0,0)?
 
31.01.2005  
 




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 Aiuto. 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 naturalmente 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 disponibile sein.

Saluto,
Christian
 
XProfan 8/9.1, Win XP, AMD 64/3200
31.01.2005  
 




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

='./../../funktionsreferenzen/xprofan/wend/'>WEND

 
01.02.2005  
 




Uwe
''Pascal''
Niemeier
Hallo Leute!

Wenn ich das Problem richtig verstanden habe, potuto 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!
 
01.02.2005  
 



 
- Page 2 -



CB
Hi,

ich weiß schon, warum ich gerne in diesem Foro unterwegs bin!
Vielen herzlichen Dank Euch beiden! Ihr habt mir sehr geholfen, beide Lösungen kann ich gut verwenden.
Danke nochmals!

Saluto,
Christian
 
XProfan 8/9.1, Win XP, AMD 64/3200
01.02.2005  
 




p.specht

Habe Frank Abbings Lösung auf XProfan-11.2a free umgestrickt und die fehlenden Anführungszeichen ergänzt.
' VERWENDETE PROGRAMMVERSION XPROFAN 11.2a free
' Adaptiert Nov.2021 by p.specht
' !!! Erst bearbeiten, wenn alle Objekte erzeugt wurden !!!
' !!! Verändere 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 %KEY=2

        LET ENDE%= 1

    ELSEIF %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

ENDWHILE

 
XProfan 11
Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'...
23.11.2021  
 




Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

768.837 Views

Untitledvor 0 min.
Gast.081508.07.2024
Sven Bader13.03.2023
Normann Strübli03.02.2023
RudiB.30.09.2022
Di più...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie