Comprend | | | | - page 1 - |
|  | là XProfan bisher keinen Splitter hat, hab je fois le Docksplitter.dll de David SZAFRANSKI pour XProfan gewrapped. qui DLL ist lizensiert sous GPL.
So einem Splitter peux on 2 auparavant erstellte Controls zuordnen, wobei sich ListBoxen, Edits et ähnliches besonders eignen. avec qui souris läßt sich maintenant qui größer cette beiden Controls verändern, bzw. per Mausclick aussi une entier ausblenden. chez qui Umsetzung im Hinterkopt hab je naturellement une Implementation dans XProfEdit 
Snapschuß:

cela paquet besteht aus einer très kleinen DLL, einer Include-Dossier, einer En-tête-Dossier, sowie dem dessus abgebildeten Beispiel.
$I DockSplitter.inc
Déclarer DLLhWnd&
DllhWnd& = Splitter_Init()
Si non DllhWnd& : Fin : EndIf
Fenêtre Style 26
Fenêtre 100, 100 - 600, 400
Déclarer hList&, hEdit&, hSplitter&
hList& = Créer(ListBox, %hWnd, , 0, 0, 0, 0)
WhileLoop 1, 10, 1
AddStrings(hList&, Test + @Str$(&Boucle))
Endwhile
hEdit& = Créer(MultiEdit, %hWnd, , 0, 0, 0, 0)
SetText hEdit&, ca ist un kleiner erster Test des DockSplitters!
hSplitter& = Créer(Splitter, 0, 0, 600, 400)
Splitter_SetPanel(hSplitter&, hList&, hEdit&)
Splitter_SetPosition hSplitter&, 150
Déclarer Ende%
WhileNot Ende%
WaitInput
Endwhile
Splitter_Exit DllhWnd&
Viel Amusement avec cela  |
 | | | | |
| | | | | - page 2 - |
|  Frank Abbing | ici encore un Splitter-Contrôle, variable verschiebbar. Íst justement chez meiner derzeitigen Programmation abgefallen et peux léger à eigene Gegebenheiten angepasst volonté:
{$cleq}
@Set(ErrorLevel,0)
Déclarer x&,y&,z&,text$,xpiadll&
Déclarer listbox1&,listbox2&,splitter&
Def GetSysColor(1) !USER32,GetSysColor
xpiadll&=UseDll(xpia$)
Fenêtre Style 543
Fenêtre 0,0-640,480
Cls GetSysColor(15)
UseFont MS Sans Serif,13,0,0,0,0
SetDialogFont 1
splitter&=Créer(Button,%hwnd,:,200,0,7,400)
listbox1&=Créer(ListBox,%hwnd,0,0,0,200,400)
listbox2&=Créer(ListBox,%hwnd,0,207,0,200,400)
ClearList
AddWindows
MoveListToList(listbox1&)
ClearList
AddFonts
MoveListToList(listbox2&)
Si 0
AsmStart GeneriereDatas()
.data
point dd 0,0
split dd 0
profan dd 0
listbox1 dd 0
listbox2 dd 0
hWnd dd 0
uMsg dd 0
wParam dd 0
lParam dd 0
oldproc dd 0
.code
nop
AsmEnd
ASMSTART subclass noexport (x&,x&,x&,x&)
push eax
push ebx
push ecx
push edx
push edi
push esi
push ebp
push esp
m2m hWnd,para1
m2m uMsg,para2
m2m wParam,para3
m2m lParam,para4
.si uMsg == WM_LBUTTONDOWN
mov split,TRUE
invoke LoadCursor,0,IDC_SIZEWE
invoke SetCursor,eax
return 0
.elseif uMsg == WM_LBUTTONUP
mov split,FALSE
return 0
.endif
.si uMsg == WM_MOUSEMOVE
invoke LoadCursor,0,IDC_SIZEWE
invoke SetCursor,eax
.si split == TRUE
invoke GetCursorPos,addr point
invoke ScreenToClient,profan,addr point
lea esi,point
mov edi,[esi]
.si SDWORD PTR edi<0
mov edi,0
.endif
.si edi>400
mov edi,400
.endif
mov [esi],edi
lea esi,point
mov edi,[esi]
invoke MoveWindow,listbox1,0,0,edi,400,TRUE
lea esi,point
mov edi,[esi]
add edi,7
mov ebx,400
sub ebx,edi
add ebx,7
invoke MoveWindow,listbox2,edi,0,ebx,400,TRUE
lea esi,point
mov edi,[esi]
invoke MoveWindow,hWnd,edi,0,7,400,TRUE
.endif
return 0
.endif
pop esp
pop ebp
pop esi
pop edi
pop edx
pop ecx
pop ebx
pop eax
invoke CallWindowProc,oldproc,hWnd,uMsg,wParam,lParam
raus:
ASMEND
EndIf
ASMSTART StartSubclassing(splitter&,%hwnd,listbox1&,listbox2&)
m2m profan,para2
m2m listbox1,para3
m2m listbox2,para4
invoke SetWindowLong,para1,GWL_WNDPROC,addr subclass
mov oldproc,eax
ASMEND
Tandis que 1
waitinput
Cas %clé=2:Pause
Endwhile
DestroyWindow(%hwnd)
FreeDll xpiadll&
Fin
qui gleiche Code ici pour User, qui XPIA et XPSE pas installiert avons (pourquoi De toute façon )
DECLARE XPIA_#,XPIA$,EXPIA&,X&,Y&,Z&,TEXT$,XPIADLL&,LISTBOX1&,LISTBOX2&,SPLITTER&
DIM XPIA_#,2560
CLEAR XPIA_#
LONG XPIA_#,0=9460301,3,4,65535,184
LONG XPIA_#,24=64
LONG XPIA_#,60=184,247078670,-855002112,1275181089,1750344141,1881174889,1919381362,1663069537,1869508193,1700929652,1853190688,544106784,542330692,1701080941,168627502,36
LONG XPIA_#,128=-1826774061,-1066155369,-1066155369,-1066155369,-1067326869,-1066155370,-1067393767,-1066155379,1751345490,-1066155369
LONG XPIA_#,184=17744,131404,1161521813
LONG XPIA_#,204=554565856,201654539,1536,512
LONG XPIA_#,224=4236,4096,8192,268435456,4096,512,4
LONG XPIA_#,256=4
LONG XPIA_#,264=12288,512
LONG XPIA_#,276=2,1048576,4096,1048576,4096
LONG XPIA_#,300=16,5200,118,4940,40
LONG XPIA_#,344=8192,132
LONG XPIA_#,400=4096,36
LONG XPIA_#,432=1297301837,12851,1222,4096,1536,512
LONG XPIA_#,468=-536870880,1818587694,25455,148,8192,512,2048
LONG XPIA_#,508=1107296320,5124,5106,5092,5078,5064,5048,5030,5136
LONG XPIA_#,652=-1192457387,1,836297,-2014834838,-16777214,93259893,268439588,-1895008769,1058821,276168464,271320463,1979650048,805670676,-15728624,93263989,268439604,-1893960193,1062917,544603920,272369039,1979650048,1074106148
LONG XPIA_#,740=-15728624,93268085,268439620,-1892911617,1067013,813039376,273417615,1979650048,1342541620,-15728624,93272181,268439636,-1891863041,1071109,1081474832,274466191,1438846976,-997987189,-62535684
LONG XPIA_#,820=-40984,-1010200321,-2081649835,1170734276,1276,-11868160,1397817343,1448563281,905925717,268439588,276301199,905908224,268439592,276563343,905908224,268439596,276825487,905908224,268439600,277087631,1031868416
LONG XPIA_#,904=268439676,513,96935541,268439656,1,8356968,-402626048,388,26273872,384499712,276577665,33689600,175439872,275252679,4096,1031864320,268439676,512,12813583,-2073559040,1778385023,21686272,-397410304,342,275266947
LONG XPIA_#,1004=251727872,42117,274753536,568856576,1744830465,268439648,275527167,703074304,-1929379839,1073205,-2093053168,92078335,191,-1862303488,1979711489,26263301,1049165824,274740621,1049300992,-1872232086,1459617793
LONG XPIA_#,1088=6946922,275789311,-471330816,-1929379840,1073205,-2093053168,-1866790969,721420289,130253791,-1872232086,1392508929,-11075478,1078325,12118032,898433024,268439648,23740043,102504,1778870784,905926400,268439672
LONG XPIA_#,1172=39400,1583176704,1532582495,-2076836008,-15728624,1081397,2083913488,-15728624,1079349,-2009727216,-401604592,86,1098441,-2081649835,1170734276,1276,-37820416,905969663,268439592,275514767,905908224,268439596
LONG XPIA_#,1260=275776911,905908224,268439600,276039055,1013452800,1779433489,607518716,-401604592,52,1083555,281200912,637520896,268439576,269755903,637472768,268439568,269231615,637472768,268439560,268707327,637472768,268439552
LONG XPIA_#,1348=270280191,-859041792,4980
LONG XPIA_#,1368=5154,4096
LONG XPIA_#,1396=5124,5106,5092,5078,5064,5048,5030,5136
LONG XPIA_#,1432=1852990827,842230885,1819042862,1245184,1819042115,1684957527,1917876079,4285295,1699152108,1920287604,1349676915,29551,1699152177,1937331060,1869377347,25165938,1684107084,1936880963,4289135,1867317672,1767335286
LONG XPIA_#,1516=2003788910,30998528,1701995347,1867804261,1701407811,29806,1699938803,1920287604,7499635,1699938845,1852397428,1282895716,1097297519,1937047552,842232421,1819042862,1684471808,775041897,7105636,1885434736,1818504809
LONG XPIA_#,1600=108
LONG XPIA_#,1620=1161521813
LONG XPIA_#,1628=5260,1,2,2,5240,5248,5256,4391,4808,5286,5301,65536,1819300703,1702130793,1866673522,1869771886,1852137324,1818504808,1699151980,1769104750,1147499109,1935766625,1635013376,1968403570,1634493282,1852404595,103
LONG XPIA_#,2048=4096,132,816656548,817836214,819015880,820195546,821375212,822554878,823734544,827863330,828649822,829436266,830222710,831009154,833761684,835203518,838218218,839266816,842150417,844182086,847000177,849556112
LONG XPIA_#,2136=850342569,851129013,853684956,854471400,855257844,856109823,857486097,858272546,859058990,859845434,13126
XPIA$=$TEMPDIR+/_Splitter-Control_enh.dll
FILEMODE 1
ASSIGN #1,XPIA$
OPENRW #1
BLOCKWRITE #1,XPIA_#,0,2560
CLOSERW #1
DISPOSE XPIA_#
@SET(ErrorLevel,0)
DEF GETSYSCOLOR(1) !USER32,GetSysColor
XPIADLL&=USEDLL(XPIA$)
WINDOWSTYLE 543
WINDOW 0,0-640,480
CLS GETSYSCOLOR(15)
USEFONT MS Sans Serif,13,0,0,0,0
SETDIALOGFONT 1
SPLITTER&=CREATE(Button,%HWND,:,200,0,7,400)
LISTBOX1&=CREATE(ListBox,%HWND,0,0,0,200,400)
LISTBOX2&=CREATE(ListBox,%HWND,0,207,0,200,400)
CLEARLIST
ADDWINDOWS
MOVELISTTOLIST(LISTBOX1&)
CLEARLIST
ADDFONTS
MOVELISTTOLIST(LISTBOX2&)
IF 0
EXTERNAL(XPIA$,GeneriereDatas)
ENDIF
EXTERNAL(XPIA$,StartSubclassing,SPLITTER&,%HWND,LISTBOX1&,LISTBOX2&)
WHILE 1
WAITINPUT
IF %KEY=2
BREAK
ENDIF
ENDWHILE
DESTROYWINDOW(%HWND)
FREEDLL XPIADLL&
FIN
comme Splitter-Contrôle dient un gesubclasster Button. |
| | | | |
| |  Uwe ''Pascal'' Niemeier | allô gens!
si wir déjà la fois dabei sommes...
window 50,50-700,500
declare ReBar&,ReBar#,Lb1&,Lb2&,Lb3&,a#
dim a#,16
Lb1&=create(listbox,%hwnd,,0,0,0,0)
Lb2&=create(listbox,%hwnd,,0,0,0,0)
Lb3&=create(listbox,%hwnd,,0,0,0,0)
clearlist
addwindows
movelisttolist(Lb1&)
clearlist
addfonts
movelisttolist(Lb2&)
clearlist
addfiles *.*
movelisttolist(Lb3&)
clear a#
long a#,0=8
long a#,4=$FFFF---Alles initialisieren
external(comctl32.dll,InitCommonControlsEx,a#)
--Stil: $50000000 | ~CCS_NORESIZE | ~RBS_FIXEDORDER
ReBar&=Contrôle(ReBarWindow32,,$50000804 ,10,10,600,400,%hwnd,1,0)
struct ReBar=Size&,Mask&,Style&,clrFore&,clrBack&,lpText&,cch&,iImage&,hwndChild&,
cxMinChild&,cyMinChild&,cx&,hbmBack&,wID&,cyChild&,cyMaxChild&,cyIntegral&,
cxIdeal&,lParam&,cxHeader&
dim ReBar#,ReBar--REBARBANDINFO
clear ReBar#
with ReBar#
.Size&=sizeof(ReBar#)
.Mask&=$71------RBBIM_STYLE | RBBIM_CHILD | RBBIM_CHILDSIZE | RBBIM_SIZE
.cyMaxChild&=1--Darf pas zéro son
.Style&=256------------------------RBBS_NOGRIPPER (1. ruban sans Griff)
.cxMinChild&=5---------------------Minimum Breite
.cyMinChild&=height(ReBar&)--------Hauteur des Bandes
.cx&=100---------------------------Vorgabe Breite
.hwndChild&=Lb1&-------------------ruban 1
sendmessage(ReBar&,1025,0,ReBar#)--RB_INSERTBAND
.Style&=128------------------------RBBS_GRIPPERALWAYS (folgende Bänder avec Griff)
.cxMinChild&=50--------------------Minimum Breite
.cyMinChild&=200-------------------Hauteur des Bandes
.cx&=300---------------------------Vorgabe Breite
.hwndChild&=Lb2&-------------------ruban 2
sendmessage(ReBar&,1025,1,ReBar#)--RB_INSERTBAND
.cxMinChild&=10--------------------Minimum Breite
.cyMinChild&=300-------------------Hauteur des Bandes
.hwndChild&=Lb3&-------------------ruban 3
sendmessage(ReBar&,1025,2,ReBar#)--RB_INSERTBAND
endwith
tandis que 1
waitinput
si sendmessage(ReBar&,1051,0,0) > height(ReBar&)--1051 = RB_GETBARHEIGHT
clear a#--Umklappen rückgängig, si Gripper pour unten gezogen wurde
sendmessage(ReBar&,1047,0,a#)--RB_SIZETORECT
endif
endwhile
quoique es oui eigendlich dans den Bereich CodeSnippets est... mais es passt arrêt grad zum Thema.
SeeYou Pascal |
| | | | |
| |  | Wow cela wusste je oui garnicht! c'est simple super! |
| | | | |
| |  | belle concept cela ReBar so trop *mißbrauchen*  Hab avec ReBar encore pas viel gemacht, weil erstellen ist simple, mais Verwaltung pas (si on es comme Toolbar-Ersatz utilise) |
| | | | |
| |  Frank Abbing | ReBar pour unten tirer funktioniert encore pas entier. qui Controls verschwinden et sommes seulement beim prochain Klick wieder là. Ansonsten: Coole concept!  |
| | | | |
| |  Uwe ''Pascal'' Niemeier | allô gens!
[quote-part:a0651eeb8e]ReBar pour unten tirer funktioniert encore pas entier. qui Controls verschwinden et sommes seulement beim prochain Klick wieder là. [/quote-part:a0651eeb8e] chez entsprechender Einstellung des ReBars volonté qui Bänder (Seiten des Splitters) ensuite untereinander angezeigt. Über den Stil konnte je cela bisher pas unterdrücken, et Profan erkennt qui entsprechende Notify-Message pas. Im Ernstfall hilft là seulement SubClassing des Parents 
entier haarig wird cela chez mehreren ineinander verschachtelten horizontalen et vertikalen ReBars...
SeeYou Pascal |
| | | | |
| |  Rolf Koch | vraie genial! là peux on wirklich feinste Sachen avec faire. malheureusement bekomme je soetwas comment unten im Bild pas hin, cela wäre qui Steigerung schlechthin. Bedeutet oui, on devrait qui En-tête avec Bitmaps austauschen peut. je versuchs la fois plus, si soetwas avec Rebar überhaupt possible ist.
window 50,50-700,500
USEFONT MS Sans Serif,13,0,0,0,0
SETDIALOGFONT 1
declare ReBar&,ReBar#,Lb1&,Lb2&,Lb3&,a#
dim a#,16
DECLARE a1&,b1&,c1&
DECLARE a2&,c1&,c2&,c3&
DECLARE a3&
Lb1&=create(text,%hwnd,,0,0,0,0)
CREATE(TEXT,lb1&,page 1,0013,0013,0130,0014)
a1& = CREATE(RADIOBUTTON,lb1&,Check Me page 1 A,0013,0033,0120,0017)
a2& = CREATE(RADIOBUTTON,lb1&,Check Me page 1 B,0013,0053,0120,0017)
a3& = CREATE(RADIOBUTTON,lb1&,Check Me page 1 C,0013,0073,0120,0017)
Lb2&=create(text,%hwnd,,0,0,0,0)
CREATE(TEXT,lb2&,page 2,0013,0013,0130,0014)
b1& = CREATE(RADIOBUTTON,lb2&,Check Me page 2 A,0013,0033,0120,0017)
b2& = CREATE(RADIOBUTTON,lb2&,Check Me page 2 B,0013,0053,0120,0017)
b3& = CREATE(RADIOBUTTON,lb2&,Check Me page 2 C,0013,0073,0120,0017)
Lb3&=create(text,%hwnd,,0,0,0,0)
CREATE(TEXT,lb3&,page 3,0013,0013,0130,0014)
c1& = CREATE(RADIOBUTTON,lb3&,Check Me page 3 A,0013,0033,0120,0017)
c2& = CREATE(RADIOBUTTON,lb3&,Check Me page 3 B,0013,0053,0120,0017)
c3& = CREATE(RADIOBUTTON,lb3&,Check Me page 3 C ,0013,0073,0120,0017)
clear a#
long a#,0=8
long a#,4=$FFFF---Alles initialisieren
external(comctl32.dll,InitCommonControlsEx,a#)
--Stil: $50000000 | ~CCS_NORESIZE | ~RBS_FIXEDORDER
ReBar&=Contrôle(ReBarWindow32,,$50000884 ,10,10,300,400,%hwnd,1,0)
struct ReBar=Size&,Mask&,Style&,clrFore&,clrBack&,lpText&,cch&,iImage&,hwndChild&,
cxMinChild&,cyMinChild&,cx&,hbmBack&,wID&,cyChild&,cyMaxChild&,cyIntegral&,
cxIdeal&,lParam&,cxHeader&
dim ReBar#,ReBar--REBARBANDINFO
clear ReBar#
with ReBar#
.Size&=sizeof(ReBar#)
.Mask&=$73 ------RBBIM_STYLE | RBBIM_CHILD | RBBIM_CHILDSIZE | RBBIM_SIZE
.cyMaxChild&=1--Darf pas zéro son
.Style&=128------------------------RBBS_GRIPPERALWAYS (folgende Bänder avec Griff)
.cxMinChild&=5---------------------Minimum Breite
.cyMinChild&=height(ReBar&)--------Hauteur des Bandes
.cx&=100---------------------------Vorgabe Breite
.hwndChild&=Lb1&-------------------ruban 1
sendmessage(ReBar&,1025,0,ReBar#)--RB_INSERTBAND
sendmessage(ReBar&,2048,0,ReBar#)--RB_INSERTBAND
.Style&=128------------------------RBBS_GRIPPERALWAYS (folgende Bänder avec Griff)
.cxMinChild&=5--------------------Minimum Breite
.cyMinChild&=height(ReBar&)-------------------Hauteur des Bandes
.cx&=100---------------------------Vorgabe Breite
.hwndChild&=Lb2&-------------------ruban 2
sendmessage(ReBar&,1025,1,ReBar#)--RB_INSERTBAND
.cxMinChild&=5--------------------Minimum Breite
.cyMinChild&=height(ReBar&)-------------------Hauteur des Bandes
.hwndChild&=Lb3&-------------------ruban 3
sendmessage(ReBar&,1025,2,ReBar#)--RB_INSERTBAND
endwith
tandis que 1
waitinput
si sendmessage(ReBar&,1051,0,0) > height(ReBar&)--1051 = RB_GETBARHEIGHT
clear a#--Umklappen rückgängig, si Gripper pour unten gezogen wurde
sendmessage(ReBar&,1047,0,a#)--RB_SIZETORECT
endif
endwhile
 |
| | | | |
| |  Rolf Koch | Wow, je habs. cela Rebarteil peut sich mais bien verarschen *lol* je bastel encore un bisschen et ensuite lege je es la fois hierhin  |
| | | | |
| |  | | | | | |
| | | | - page 3 - |
| |  Rolf Koch | *lol* ici mon kleine concept et Umsetzung. [...] 
Läuft chez mir einwandfrei avec qui XProfan Version: 10.0ß-NT RC1. pouvez mir oui la fois écrivons, comme naturellement wieder la fois woanders Probleme pouvoir  |
| | | | |
| |  | Genial Rolf! cela Result sieht simple spitze aus!  |
| | | | |
| |  Rolf Koch | alors scheints doch trop courir - qui Dank gilt vorallem à Pascal, là il ici den Grundstock geliefert hat. là peux on encore plus draus faire. |
| | | | |
|
répondreOptions du sujet | 20.884 Views |
Themeninformationencet Thema hat 8 participant: |