Foro | | | | - Página 1 - |
|  Julian Schmidt | ¡Hola, Yo versuche gerade Tabchanged en una en un Tab-Control plazierten Tab-Control abzufragen. Doch irgendwie misslingt lo. Woran liegt el? KompilierenMarcaSeparaciónDef SetActiveTab(2) SendMessage(&(1),$0130C,&(2),0)
cls
var hTab1& = Create("TabCtrl", %hwnd, "Tab1", -1, 2, width(%hwnd)+4, height(%hwnd))
var hTab2& = Create("TabCtrl", hTab1&, "Tab1", 15, 45, width(hTab1&)-32, height(hTab1&)-60)
whileloop 4
InsertTab(hTab1&, &loop+1, "Tab"+Str$(&loop+1))
InsertTab(hTab2&, &loop+1, "Tab"+Str$(&loop+1))
Endwhile
while 1
waitinput
if TabChanged(hTab1&)
SetActiveTab(hTab2&,GetActiveTab(hTab1&))
elseif TabChanged(hTab2&)
SetActiveTab(hTab1&,GetActiveTab(hTab2&))
EndIf
Endwhile
LG
Julian57 |
| | | | |
|  | « Dieser Contribución wurde como Solución gekennzeichnet. » | |  Julian Schmidt | Gracias schön a todos el a esta Hilo algo beigetragen haben. Lo funktioniert Perfekt  KompilierenMarcaSeparaciónDef SetActiveTab(2) SendMessage(&(1),$0130C,&(2),0)
cls
Usermessages 16
var hTab1& = Create("TabCtrl", %hwnd, "Tab1", -1, 2, width(%hwnd)+4, height(%hwnd))
var hTab2& = Create("TabCtrl", hTab1&, "Tab1", 15, 45, width(hTab1&)-32, height(hTab1&)-60)
Subclass %hwnd,1
whileloop 4
InsertTab(hTab1&, &loop+1, "Tab"+Str$(&loop+1))
InsertTab(hTab2&, &loop+1, "Tab"+Str$(&loop+1))
Endwhile
while 1
waitinput
if TabChanged(hTab1&)
SetActiveTab(hTab2&,GetActiveTab(hTab1&))
elseif %umessage=16
Subclass %hwnd,0
end
EndIf
Endwhile
SubClassProc
If SubClassMessage(%hwnd, $004E)
If long(&sLParam,0) = hTab2&
If long(&sLParam,8) = 0-550 - 1
SetActiveTab(hTab1&,GetActiveTab(hTab2&))
EndIf
EndIf
Set("WinProc",1)
EndIf
ENDPROC
|
| | | | |  |
| |  | Das Elterntabcontrol leitet el Nachricht wohl vom Kindtabcontrol no a el hWnd,
si el möchtest entonces könntest el Elterntabcontrol dazu subclassen.
Optimal nichts en Tabcontrols ablegen pero en Dialogen/ Fenstern. |
| | | | |
| |  Julian Schmidt | @IF Yo brauche para mein aktuelles Projekt en cada Fall zwei Tab-Controls. Deswegen wäre Subclassing schonmal una Lösungsansatz.
Ein Alternativer Lösungsansatz de me wäre el zweiten Tab-Control en una extra Diálogo ala KompilierenMarcaSeparaciónvar class$="#32770"
var title$=""
External("USER32","CreateWindowExA",0,addr(class$),addr(title$),$40000000,10,20, 100, 50,%hwnd,0,%hinstance,1000)re> a legen. Würde Tab-Changed entonces para el zweiten Tab-Control trabajo?
¿Puede Si es usted el con el Subclassing proggen? |
| | | | |
| |  | Vlt. simplemente como en el Ejemplo de el Hilfedatei en el auch kein Control (auch kein Tab-Control) en una Tab-Control abgelegt se -
erzeuge simplemente beide Tab-Controls en una y el selben Diálogo/ Ventana. |
| | | | |
| |  Julian Schmidt | IF (06.01.12)
Vlt. simplemente como en el Ejemplo de el Hilfedatei en el auch kein Control (auch kein Tab-Control) en una Tab-Control abgelegt se - erzeuge simplemente beide Tab-Controls en una y el selben Diálogo/ Ventana.
Hab Yo ya längst probiert. Dann se sólo el 1ste adecuado. KompilierenMarcaSeparacióncls
var hTab1& = Create("TabCtrl", %hwnd, "Tab1", -1, 2, width(%hwnd)+4, height(%hwnd))
var hTab2& = Create("TabCtrl", %hwnd, "Tab1", 15, 45, width(hTab1&)-32, height(hTab1&)-60)
while 1
Endwhi
|
| | | | |
| |  Detlef Jagolski | ¡Hola! KompilierenMarcaSeparación $P+
SetErrorLevel 0
$H WINDOWS.PH
$H MESSAGES.PH
$H STRUCTS.PH
$H SHELLAPI.PH
$H COMMCTRL.PH
$I TABCONTROL.INC
Struct NMHDR = ~NMHDR
Proc OnApplicationExit
DeleteObject TextFont1&
Dispose pnmh#
Dispose TBC1#
Dispose TBC2#
SubClass %hwnd,0
SubClass PageControl1_Sheet1&,0
EndProc
Proc OnApplicationInit
EndProc
OnApplicationInit
Declare appexit%
Declare pnmh#
Declare TBC1#
Declare TBC2#
Declare PageControl1_Sheet1&
Declare PageControl1_Sheet2&
Declare PageControl1_Sheet3&
Declare PageControl1_Sheet4&
Declare PageControl1_Sheet5&
Declare PageControl2_Sheet1&
Declare PageControl2_Sheet2&
Declare PageControl2_Sheet3&
Declare PageControl2_Sheet4&
Declare PageControl2_Sheet5&
Declare PageControl1&
Declare PageControl2&
Dim TBC1#,TabControl
Dim TBC2#,TabControl
Dim pnmh#,NMHDR
var TextFont1& = Create("Font","MS Sans Serif",13,0,0,0,0)
Proc PageControl1_OnChange
Declare TBC1&
TBC1& = TBC1#.GetActiveTab()
If TBC1& = 0
TBC1#.SetActiveSheet(PageControl1_Sheet1&,1)
TBC1#.SetActiveSheet(PageControl1_Sheet2&,0)
TBC1#.SetActiveSheet(PageControl1_Sheet3&,0)
TBC1#.SetActiveSheet(PageControl1_Sheet4&,0)
TBC1#.SetActiveSheet(PageControl1_Sheet5&,0)
ElseIf TBC1& = 1
TBC1#.SetActiveSheet(PageControl1_Sheet1&,0)
TBC1#.SetActiveSheet(PageControl1_Sheet2&,1)
TBC1#.SetActiveSheet(PageControl1_Sheet3&,0)
TBC1#.SetActiveSheet(PageControl1_Sheet4&,0)
TBC1#.SetActiveSheet(PageControl1_Sheet5&,0)
ElseIf TBC1& = 2
TBC1#.SetActiveSheet(PageControl1_Sheet1&,0)
TBC1#.SetActiveSheet(PageControl1_Sheet2&,0)
TBC1#.SetActiveSheet(PageControl1_Sheet3&,1)
TBC1#.SetActiveSheet(PageControl1_Sheet4&,0)
TBC1#.SetActiveSheet(PageControl1_Sheet5&,0)
ElseIf TBC1& = 3
TBC1#.SetActiveSheet(PageControl1_Sheet1&,0)
TBC1#.SetActiveSheet(PageControl1_Sheet2&,0)
TBC1#.SetActiveSheet(PageControl1_Sheet3&,0)
TBC1#.SetActiveSheet(PageControl1_Sheet4&,1)
TBC1#.SetActiveSheet(PageControl1_Sheet5&,0)
ElseIf TBC1& = 4
TBC1#.SetActiveSheet(PageControl1_Sheet1&,0)
TBC1#.SetActiveSheet(PageControl1_Sheet2&,0)
TBC1#.SetActiveSheet(PageControl1_Sheet3&,0)
TBC1#.SetActiveSheet(PageControl1_Sheet4&,0)
TBC1#.SetActiveSheet(PageControl1_Sheet5&,1)
EndIf
EndProc
Proc PageControl2_OnChange
Declare TBC2&
TBC2& = TBC2#.GetActiveTab()
If TBC2& = 0
TBC2#.SetActiveSheet(PageControl2_Sheet1&,1)
TBC2#.SetActiveSheet(PageControl2_Sheet2&,0)
TBC2#.SetActiveSheet(PageControl2_Sheet3&,0)
TBC2#.SetActiveSheet(PageControl2_Sheet4&,0)
TBC2#.SetActiveSheet(PageControl2_Sheet5&,0)
ElseIf TBC2& = 1
TBC2#.SetActiveSheet(PageControl2_Sheet1&,0)
TBC2#.SetActiveSheet(PageControl2_Sheet2&,1)
TBC2#.SetActiveSheet(PageControl2_Sheet3&,0)
TBC2#.SetActiveSheet(PageControl2_Sheet4&,0)
TBC2#.SetActiveSheet(PageControl2_Sheet5&,0)
ElseIf TBC2& = 2
TBC2#.SetActiveSheet(PageControl2_Sheet1&,0)
TBC2#.SetActiveSheet(PageControl2_Sheet2&,0)
TBC2#.SetActiveSheet(PageControl2_Sheet3&,1)
TBC2#.SetActiveSheet(PageControl2_Sheet4&,0)
TBC2#.SetActiveSheet(PageControl2_Sheet5&,0)
ElseIf TBC2& = 3
TBC2#.SetActiveSheet(PageControl2_Sheet1&,0)
TBC2#.SetActiveSheet(PageControl2_Sheet2&,0)
TBC2#.SetActiveSheet(PageControl2_Sheet3&,0)
TBC2#.SetActiveSheet(PageControl2_Sheet4&,1)
TBC2#.SetActiveSheet(PageControl2_Sheet5&,0)
ElseIf TBC2& = 4
TBC2#.SetActiveSheet(PageControl2_Sheet1&,0)
TBC2#.SetActiveSheet(PageControl2_Sheet2&,0)
TBC2#.SetActiveSheet(PageControl2_Sheet3&,0)
TBC2#.SetActiveSheet(PageControl2_Sheet4&,0)
TBC2#.SetActiveSheet(PageControl2_Sheet5&,1)
EndIf
EndProc
SubClassProc
If SubClassMessage(%hwnd, ~WM_NOTIFY)
pnmh# = &sLParam
If pnmh#.hwndFrom& = PageControl1&
If pnmh#.code& = ~TCN_SELCHANGE
PageControl1_OnChange
EndIf
EndIf
Set("WinProc",1)
ElseIf SubClassMessage(PageControl1&, ~WM_NOTIFY)
pnmh# = &sLParam
If pnmh#.hwndFrom& = PageControl2&
If pnmh#.code& = ~TCN_SELCHANGE
PageControl2_OnChange
EndIf
EndIf
Set("WinProc",1)
EndIf
EndProc
Set("TrueColor",1)
WindowStyle $003F
WindowTitle "DesignForm"
Window %maxX + 5,114 - 691,416
Cls ~GetSysColor(15)
UseFont "MS Sans Serif",13,0,0,0,0
SetDialogFont 1
var hToolBmp& = create("hPic", 0, "TOOLBAR")
var hImageList1& = Create("ImageList", 16, 16, hToolBmp&, rgb(192, 192, 192))
PageControl1& = TBC1#.TabControl(%hwnd,10,60,672,322,hImageList1&,"PageControl1","PageControl1")
PageControl1& = TBC1#.GetHandel()
TBC1#.TBFont(TextFont1&)
PageControl1_Sheet1& = TBC1#.CreateTabSheet(4,25,664,293,2000,1)
TBC1#.InsertTab(1,"Seite 1",9)
PageControl1_Sheet2& = TBC1#.CreateTabSheet(4,25,664,293,2001,0)
TBC1#.InsertTab(2,"Seite 2",9)
PageControl1_Sheet3& = TBC1#.CreateTabSheet(4,25,664,293,2002,0)
TBC1#.InsertTab(3,"Seite 3",9)
PageControl1_Sheet4& = TBC1#.CreateTabSheet(4,25,664,293,2003,0)
TBC1#.InsertTab(4,"Seite 4",9)
PageControl1_Sheet5& = TBC1#.CreateTabSheet(4,25,664,293,2004,0)
TBC1#.InsertTab(5,"Seite 5",9)
PageControl2& = TBC2#.TabControl(PageControl1_Sheet1&,30,20,442,193,hImageList1&,"PageControl2","PageControl2")
PageControl2& = TBC2#.GetHandel()
TBC2#.TBFont(TextFont1&)
PageControl2_Sheet1& = TBC2#.CreateTabSheet(4,25,434,164,2005,1)
TBC2#.InsertTab(1,"Seite 1",9)
PageControl2_Sheet2& = TBC2#.CreateTabSheet(4,25,434,164,2006,0)
TBC2#.InsertTab(2,"Seite 2",9)
PageControl2_Sheet3& = TBC2#.CreateTabSheet(4,25,434,164,2007,0)
TBC2#.InsertTab(3,"Seite 3",9)
PageControl2_Sheet4& = TBC2#.CreateTabSheet(4,25,434,164,2008,0)
TBC2#.InsertTab(4,"Seite 4",9)
PageControl2_Sheet5& = TBC2#.CreateTabSheet(4,25,434,164,2009,0)
TBC2#.InsertTab(5,"Seite 5",9)
SubClass %hwnd,1
SubClass PageControl1_Sheet1&,1
SetWindowPos %hwnd = 207,114 - 691,416;0
WhileNot appexit%
WaitInput
If %key = 2
appexit%=1
ElseIf %key = 4
' Fenstergröße
ElseIf %key = 5
' Hilfe
href='./../../funktionsreferenzen/XProfan/endif/'>EndIf
EndWhile
OnApplicationExit
Saludo
Detlef |
 | | | | |
| |  Julian Schmidt | Das funktioniert zwar, allerdings bekomme Yo no en mein Ejemplo übertragen. KompilierenMarcaSeparación $H MESSAGES.PH
$H STRUCTS.PH
$H SHELLAPI.PH
$H COMMCTRL.PH
Struct NMHDR = ~NMHDR
Def SetActiveTab(2) SendMessage(&(1),$0130C,&(2),0)
cls
Usermessages 16
var hTab1& = Create("TabCtrl", %hwnd, "Tab1", -1, 2, width(%hwnd)+4, height(%hwnd))
var hTab2& = Create("TabCtrl", hTab1&, "Tab1", 15, 45, width(hTab1&)-32, height(hTab1&)-60)
Subclass hTab2&,1
Declare pnmh#
Dim pnmh#,NMHDR
whileloop 4
InsertTab(hTab1&, &loop+1, "Tab"+Str$(&loop+1))
InsertTab(hTab2&, &loop+1, "Tab"+Str$(&loop+1))
Endwhile
while 1
waitinput
if TabChanged(hTab1&)
SetActiveTab(hTab2&,GetActiveTab(hTab1&))
elseif %umessage=16
Subclass hTab2&,0
end
EndIf
Endwhile
SubClassProc
If SubClassMessage(hTab2&, ~WM_NOTIFY)
pnmh# = &sLParam
If pnmh#.hwndFrom& = PageControl1&
If pnmh#.code& = ~TCN_SELCHANGE
SetActiveTab(hTab1&,GetActiveTab(hTab2&))
EndIf
EndIf
Set("WinProc",1)
EndIf
../funktionsreferenzen/XProfan/ENDPROC/'>ENDPROC
|
| | | | |
| |  Detlef Jagolski | KompilierenMarcaSeparación $H WINDOWS.PH
$H MESSAGES.PH
$H STRUCTS.PH
$H SHELLAPI.PH
$H COMMCTRL.PH
Struct NMHDR = ~NMHDR
Def SetActiveTab(2) SendMessage(&(1),$0130C,&(2),0)
cls
Usermessages 16
var hTab1& = Create("TabCtrl", %hwnd, "Tab1", -1, 2, width(%hwnd)+4, height(%hwnd))
var hTab2& = Create("TabCtrl", hTab1&, "Tab1", 15, 45, width(hTab1&)-32, height(hTab1&)-60)
Subclass %hwnd,1
Declare Tab%
Declare pnmh#
Dim pnmh#,NMHDR
whileloop 4
InsertTab(hTab1&, &loop+1, "Tab"+Str$(&loop+1))
InsertTab(hTab2&, &loop+1, "Tab"+Str$(&loop+1))
Endwhile
while 1
waitinput
if TabChanged(hTab1&)
SetActiveTab(hTab2&,GetActiveTab(hTab1&))
elseif %umessage=16
Subclass hTab2&,0
end
EndIf
Endwhile
SubClassProc
If SubClassMessage(%hwnd, ~WM_NOTIFY)
pnmh# = &sLParam
If pnmh#.hwndFrom& = hTab1&
If pnmh#.code& = ~TCN_SELCHANGE
Tab% = GetActiveTab(hTab1&)
If Tab% = 0
SetWindowPos hTab2&=15, 45-width(hTab1&)-32, height(hTab1&)-60;0
ElseIf Tab% = 1
SetWindowPos hTab2&=0, 0-0,0;0
ElseIf Tab% = 2
SetWindowPos hTab2&=0, 0-0,0;0
ElseIf Tab% = 3
SetWindowPos hTab2&=0, 0-0,0;0
ElseIf Tab% = 4
SetWindowPos hTab2&=0, 0-0,0;0
EndIf
EndIf
EndIf
Set("WinProc",1)
EndI
ENDPROC
|
| | | XProfan X4, PRFellow, Profan2Cpp - Version 2.0c-pre5, Windows 11 | 06.01.2012 ▲ |
| |
| |  Julian Schmidt | Ok el funktioniert super. KompilierenMarcaSeparaciónStruct NMHDR = hwndFrom&,idFrom&,code&
Def SetActiveTab(2) SendMessage(&(1),$0130C,&(2),0)
cls
Usermessages 16
var hTab1& = Create("TabCtrl", %hwnd, "Tab1", -1, 2, width(%hwnd)+4, height(%hwnd))
var hTab2& = Create("TabCtrl", hTab1&, "Tab1", 15, 45, width(hTab1&)-32, height(hTab1&)-60)
Subclass %hwnd,1
Declare pnmh#
Dim pnmh#,NMHDR
whileloop 4
InsertTab(hTab1&, &loop+1, "Tab"+Str$(&loop+1))
InsertTab(hTab2&, &loop+1, "Tab"+Str$(&loop+1))
Endwhile
while 1
waitinput
if TabChanged(hTab1&)
SetActiveTab(hTab2&,GetActiveTab(hTab1&))
elseif %umessage=16
Subclass hTab2&,0
end
EndIf
Endwhile
SubClassProc
If SubClassMessage(%hwnd, $004E)
pnmh# = &sLParam
If pnmh#.hwndFrom& = hTab2&
If pnmh#.code& = 0-550 - 1
SetActiveTab(hTab1&,GetActiveTab(hTab2&))
EndIf
EndIf
Set("WinProc",1)
EndIf
ENDPROC
Wäre el theoretisch auch sin la Klasse posible? |
| | | | |
| |  | Es no Klasse pero una Struktur o. una einfacher Speicher.
Dies hwndFrom&,idFrom&,code& son 3 Longs also 3x4 Byte also kannst Usted auch Dim pnmh#,12 escribir sin NMHDR a deklarieren y pnmh#.code& wäre entonces long(pnmh#,8) aber en lugar de pnmh# = &sLParam sería Yo más rtlMoveMemory(pnmh#,&slParam,12) escribir. |
| | | | |
| |  Detlef Jagolski | KompilierenMarcaSeparaciónDef SetActiveTab(2) SendMessage(&(1),$0130C,&(2),0)
cls
Usermessages 16
var hTab1& = Create("TabCtrl", %hwnd, "Tab1", -1, 2, width(%hwnd)+4, height(%hwnd))
var hTab2& = Create("TabCtrl", hTab1&, "Tab1", 15, 45, width(hTab1&)-32, height(hTab1&)-60)
Declare Tab%
whileloop 4
InsertTab(hTab1&, &loop+1, "Tab"+Str$(&loop+1))
InsertTab(hTab2&, &loop+1, "Tab"+Str$(&loop+1))
Endwhile
while 1
waitinput
if TabChanged(hTab1&)
PageControl1_OnChange
elseif %umessage=16
Subclass hTab2&,0
end
EndIf
Endwhile
Proc PageControl1_OnChange
Tab% = GetActiveTab(hTab1&)
If Tab% = 0
SetWindowPos hTab2&=15, 45-width(hTab1&)-32, height(hTab1&)-60;0
ElseIf Tab% = 1
SetWindowPos hTab2&=0, 0-0,0;0
ElseIf Tab% = 2
SetWindowPos hTab2&=0, 0-0,0;0
ElseIf Tab% = 3
SetWindowPos hTab2&=0, 0-0,0;0
ElseIf Tab% = 4
SetWindowPos hTab2&=0, 0-0,0;0
EndIf
ENDPROC
|
| | | | |
| |  Julian Schmidt | IF (06.01.12)
Es no Klasse pero una Struktur o. una einfacher Speicher. Dies hwndFrom&,idFrom&,code& son 3 Longs also 3x4 Byte also kannst Usted auch Dim pnmh#,12 escribir sin NMHDR a deklarieren y pnmh#.code& wäre entonces long(pnmh#,8) aber en lugar de pnmh# = &sLParam sería Yo más rtlMoveMemory(pnmh#,&slParam,12) escribir.
Stimmt así funktionierts. Gracias IF  KompilierenMarcaSeparaciónDef SetActiveTab(2) SendMessage(&(1),$0130C,&(2),0)
cls
Usermessages 16
var hTab1& = Create("TabCtrl", %hwnd, "Tab1", -1, 2, width(%hwnd)+4, height(%hwnd))
var hTab2& = Create("TabCtrl", hTab1&, "Tab1", 15, 45, width(hTab1&)-32, height(hTab1&)-60)
Subclass %hwnd,1
Declare pnmh#
Dim pnmh#,12
whileloop 4
InsertTab(hTab1&, &loop+1, "Tab"+Str$(&loop+1))
InsertTab(hTab2&, &loop+1, "Tab"+Str$(&loop+1))
Endwhile
while 1
waitinput
if TabChanged(hTab1&)
SetActiveTab(hTab2&,GetActiveTab(hTab1&))
elseif %umessage=16
Subclass hTab2&,0
Dispose pnmh#
end
EndIf
Endwhile
SubClassProc
If SubClassMessage(%hwnd, $004E)
pnmh# = &sLParam
If long(pnmh#,0) = hTab2&
If long(pnmh#,8) = 0-550 - 1
SetActiveTab(hTab1&,GetActiveTab(hTab2&))
EndIf
EndIf
Set("WinProc",1)
EndIf
ENDPROC
|
| | | | |
|
RespuestaTema opciones | 14.118 Views |
ThemeninformationenDieses Thema ha 3 subscriber: |