Foro | | | | - 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 |
| | | | |
| | | | | - 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 |
| | | | |
| | 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! KompilierenMarkierenSeparierenDEF 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 |
| | | | |
| | | 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 |
| | | | |
| | 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 |
| | | | |
| | CB | Hi, So, bis auf ne Kleinigkeit gehts. Da muß noch irgendwo ein kleiner Gedankenfehler drinsein. Habe nur momentan keine Zeit dazu. KompilierenMarkierenSeparierenDEF 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 |
| | | | |
| | CB | Sodale, habe soeben ausgetrickst. So gehts wirklich: KompilierenMarkierenSeparierenDEF 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 |
| | | | |
| | 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 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 |
| | | | |
| | 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
|
| | | | |
| | Uwe ''Pascal'' Niemeier | Hallo Leute!
Wenn ich das Problem richtig verstanden habe, potuto dies helfen: KompilierenMarkierenSeparierenwindow 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! |
| | | | |
| | | | - 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 |
| | | | |
| | 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 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 23.11.2021 ▲ |
| |
|
AnswerTopic-Options | 768.810 Views |
ThemeninformationenDieses Thema hat 5 subscriber: |