Foro | | | | - Page 1 - |
| Julian Schmidt | Ciao, ich würde gerne ein Listview mit sowohl horizontalen als auch vertikalen Spalt-, Zeilenbuttons erstellen. Bei den Zeilenbuttons ist mir unerheblich ob man die Höhe und Breite per Maus verändern kann oder nicht. Außerdem ist die horizontale Sortierung der Itemtexte unnötigt. Wie kann man so etwas realisieren?
LG
Julian57 |
| | | | |
| | | | - Page 4 - |
| | « Dieser Beitrag wurde als Lösung gekennzeichnet. » | | - Page 3 - |
| Andreas Miethe
| Julian57 (02.07.12)
hmmm......gut. Nur wie bekommt man das Feld zur Texteingabe ausgeblendet. Und die Skalierbarkeit per Maus unterdrückt? Außerdem müssen die "Sortierungspfeile" nicht unbedingt gesetzt sein.
Den Stil ändern ! KompilierenMarkierenSeparierenDef &HDM_INSERTITEMA $00001201
def CreateWindowEx(12) !"User32","CreateWindowExA"
decimals 0
cls
var hwndHeader&=createWindowEx(0,"SysHeader32","",$50800802, 0, 0, 0, 0, %hWnd,0,%hInstance, 0)
declare txt#
dim txt#,64
string txt#,0="Hallo Welt"
declare hditem#
dim hditem#,28
long hditem#,0=$43,200,txt#,0,64,$4000,0
sendMessage(hwndHeader&,&hdm_insertItemA,0,hdItem#)
string txt#,0="Hallo Karl"
long hditem#,0=$43,200,txt#,0,64,$4000,0
sendMessage(hwndHeader&,&hdm_insertItemA,1,hdItem#)
SetWindowPos hwndHeader&=10,10 - 400,32
dispose hditem#
while 1
waitinput
wend
end
|
| | | Gruss Andreas ________ ________ ________ ________ _ Profan 3.3 - XProfanX2 Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher Homepage : [...] | 02.07.2012 ▲ |
| | |
| | Julian Schmidt | War gerade dran den Stil per meine Zwecke ab zu ändern, und dann ist Andreas doch schneller. Sieht gut aus! Danke! Etwas per meine Zwecke minimalisiert.... KompilierenMarkierenSeparierencls
CreateHeaderButton(%hwnd,"Test",10,10,200,30)
while 1
waitinput
EndWhile
end
Proc CreateHeaderButton
Parameters hdl&,text$,x1&,y1&,x2&,y2&
var hwndHeader&=External("User32","CreateWindowExA",0,"SysHeader32","",$50000802, 0, 0, 0, 0, hdl&,0,%hInstance, 0)
declare txt#
dim txt#,64
string txt#,0=text$
declare hditem#
dim hditem#,28
long hditem#,0=$43,x2&,txt#,0,64,$4000,0
sendMessage(hwndHeader&,$00001201,0,hdItem#)
SetWindowPos hwndHeader&=x1&,y1& - x2&,y2&
dispose hditem#
Return hwndHeader&
EndProc
|
| | | | |
| | Julian Schmidt | Ciao, ich habe das ganze jetzt mal neben mein Listview gesetzt und würde noch gerne ein paar Anpassungen vor nehmen. Zum Einen würde Io l' Text in meinen "künstlichen" Headerbuttons zentriert ausrichten. Zum zweiten mein Listview so modifizieren, das es keinen Rahmen(WS_Border) hat. So sieht alles momentan aus.
Hier mal alles in ein Archiv gepackt. Herunterladen
Welche Font(-Art,-Dimensione) wird standardmäßig per das Listview verwandt? Ich würde diese auch gerne per meine Headerbuttons verwenden!
LG
Julian57 |
| | | | |
| | | Schauma: KompilierenMarkierenSeparierenDef GetSysColor(1) !"USER32","GetSysColor"
Def &button_height 26
def &line_height 25
$I Listview_Funktionen.inc
Var lvdll&=usedll("Listview.dll")
CLS GetSysColor(15)
Var dg_listview&=Control("DIALOG","",$50800000,10,10,35+(50*5),(&button_height*13)+2,%hwnd,0,%hinstance,$0)
Showwindow(dg_listview&,1)
Var listview&=CreateListView(dg_listview&,%hinstance,0,RGB(255,255,255),-1,$401)
'SetStyle listview&, GetStyle(listview&)-$800000
InsertColumn listview&,"",0,0
Whileloop 5
InsertColumn listview&,Str$(&loop),50,2
Endwhile
Whileloop 13
CreateHeaderButton(dg_listview&,If(&loop=1,"",Str$(&loop-1)),0,&button_height*(&loop-1),30,&button_height)
EndWhile
Var freelist&=SetLineHeight(listview&,&line_height)
whileloop 0,11*5,5
SetItem listview&,Str$(&loop),Str$(&loop+1),Str$(&loop+2),Str$(&loop+3),Str$(&loop+4),Str$(&loop+5)
EndWhile
ShowListView(listview&,30,0,width(dg_listview&),height(dg_listview&))
InitMessages(dg_listview&)
WhileNot (%key=2)
waitinput
EndWhile
DestroyImageList(freelist&)
CloseMessages(dg_listview&)
freedll lvdll&
$I Listview_Dispose.inc
End
Proc CreateHeaderButton
Parameters hdl&,text$,x1&,y1&,x2&,y2&
var hwndHeader&=External("User32","CreateWindowExA",0,"SysHeader32","",$50000802, 0, 0, 0, 0, hdl&,0,%hInstance, 0)
declare txt#
dim txt#,64
string txt#,0=text$
declare hditem#
dim hditem#,28
long hditem#,0=$43,x2&,txt#,0,64,$4002,0
setfont hwndHeader&,external("gdi32","GetStockObject",17)
sendMessage(hwndHeader&,$00001201,0,hdItem#)
SetWindowPos hwndHeader&=x1&,y1& - x2&,y2&
dispose hditem#
Return hwndHeader&
./../../funktionsreferenzen/xprofan/endproc/'>EndProc
Aus: KompilierenMarkierenSeparierenlong hditem#,0=$43,x2&,txt#,0,64,$4000,0
wurde: KompilierenMarkierenSeparierenlong hditem#,0=$43,x2&,txt#,0,64,$4002,0
setfont hwndHeader&,external("gdi32","GetStockObject",17)
17=DEFAULT_GUI_FONT
Zentriert per $4002 statt 4000:
Rechtsbündig wäre $4001. |
| | | | |
| | Julian Schmidt | Und bezüglich des Rahmens? |
| | | | |
| | | Sieht wohl eh abhängig vom Thema aus:
So gibts wohl bei XP sowie bei XP ohne "visueller Stil" gar keinen Rahmen. KompilierenMarkierenSeparieren Vlt. doch einfacher Bitmap-Controls zu verwenden? |
| | | | |
| | Julian Schmidt | Damit beantwortest du meine Frage nicht. Diese bezog sich nicht auf einen Headerbutton sondern auf das Listview. |
| | | | |
| | | Entferne mal den erweiterten Stil ws_ex_staticEdge...
Ich hoffe ich habe Deine Frage nun beantwortet. |
| | | | |
| | Julian Schmidt | | | | | |
| | | Hi!
Kanns auf dem Handy eh nicht testen aber ws_ex_staticEdge = $20000.
Kann auch sein das Du diesen Stil nicht nachträglich entfernen kannst und das Control gleich mit entsprechendem Stil erstellen müsstest. |
| | | | |
| | Julian Schmidt | Mit... KompilierenMarkierenSeparieren funktioniert ebenso nicht. Hatte ich im übrigen auch schon ausprobiert.
Wenn ich das Control gleich ohne den Stil erstelle, kann ich auf dem Listview immernoch Funktionen der Listview.dll anwenden? |
| | | | |
| | | Erstellst Du jetzt schon das Control gleich mit dem gewünschten Stil? |
| | | | |
| | Julian Schmidt | Ja ich habe es hinbekommen. Danke. |
| | | | |
|
AnswerTopic-Options | 38.177 Views |
ThemeninformationenDieses Thema hat 5 subscriber: |