Treeview Zeilenhöhe

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
Benutzeravatar
klammerauf
UDF-Programmierer
UDF-Programmierer
Beiträge: 69
Registriert: Do, 08. Feb 2007 14:16
Wohnort: Karlsruhe
Hat sich bedankt: 3 Mal

Treeview Zeilenhöhe

Beitrag von klammerauf »

Ich verwende in einem XbpTreeview Icons. Die werden aber leider wegen der Zeilenhöhe zusammengestaucht. Mein Icon beinhaltet die Größen 16, 24, 32, ... Pixel, ist also in mehreren Größen vorhanden. Dummerweise macht Xbase++ ja immer seine eigene Größe aus Icons, ist auch bei XbpBrowse so. Dort lässt sich die Zeilenhöhe aber leicht anpassen.

Kann mir jemand sagen, wie ich die Zeilenhöhe von XbpTreeViewItem verändern kann?

Danke
Sebastian
Dateianhänge
treeview.png
treeview.png (4.04 KiB) 3772 mal betrachtet
Exzessiver Codeblock Programmierer
--
Grüße
Sebastian
Günter Beyes
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 315
Registriert: Mo, 16. Okt 2006 13:04
Wohnort: Region Stuttgart

Re: Treeview Zeilenhöhe

Beitrag von Günter Beyes »

Hallo Sebastian,

probier's mal hiermit:

Code: Alles auswählen

#define TV_FIRST                0x1100
#define TVM_SETITEMHEIGHT       (TV_FIRST + 27)
#define TVM_GETITEMHEIGHT       (TV_FIRST + 28)

FUNCTION TreeView_GetItemHeight( oTreeView )
RETURN SendMessageA( oTreeView:getHWND(), TVM_GETITEMHEIGHT, 0, 0)

// nHeight muss im Normalfall eine gerade Zahl sein. 
FUNCTION TreeView_SetItemHeight( oTreeView, nHeight )
RETURN SendMessageA( oTreeView:getHWND(), TVM_SETITEMHEIGHT, nHeight, 0)

DLLFUNCTION SendMessageA( hWnd, msg, wParam, lParam ) USING STDCALL FROM USER32.DLL
Möglicherweise ist nach TreeView_SetItemHeight() ein :invalidateRect() nötig; da bin ich mir im Moment nicht ganz sicher.

Gruß,
Günter
Benutzeravatar
klammerauf
UDF-Programmierer
UDF-Programmierer
Beiträge: 69
Registriert: Do, 08. Feb 2007 14:16
Wohnort: Karlsruhe
Hat sich bedankt: 3 Mal

Re: Treeview Zeilenhöhe

Beitrag von klammerauf »

Danke Günter,

das hat genau das bewirkt, nach dem ich gefragt hatte. Leider hatte es keine Auswirkungen auf das Icon. Sieht immer noch hässlich aus. Siehe Anhänge. Ich vermute, das hängt damit zusammen, dass Xbase++ das Icon intern von TrueColor + Alpha nach TrueColor oder vielleicht sogar nur 256 Color umwandelt.
treeview_neu.png
treeview_neu.png (2.96 KiB) 3645 mal betrachtet
icon_xbase_os.png
icon_xbase_os.png (2.96 KiB) 3645 mal betrachtet
Ein :invalidateRect() war übrigens nicht notwendig.

Allerdings finde ich die gesamt Art und Weise, wie hier ein Xbase-Part manipuliert wird, interessant. Glaubst du, damit könnte man z.B. auch ein Static oder ein PushButton beeinflussen?

Sebastian
Exzessiver Codeblock Programmierer
--
Grüße
Sebastian
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12911
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 46 Mal

Re: Treeview Zeilenhöhe

Beitrag von AUGE_OHR »

klammerauf hat geschrieben:Leider hatte es keine Auswirkungen auf das Icon. Sieht immer noch hässlich aus. Siehe Anhänge.
Das Treeview ist ja ein activeX und nutzt MsComCtl.OCX.
Die Icons werde in der Imagelist, von MsComCtl.OCX, aufgenommen.
Den Source findest du unter C:\ALASKA\XPPW32\Source\SYS\xbparts.prg

Die Imageliste wird auch überall sonst bei MsComCtl.OCX verwendet, also z.b. im Listview.
Im Listview gibt es nun 2x Imagelist(): SmallIcon und Icon deren Grösse man "einstellen" kann.

Code: Alles auswählen

 ::oImage := ImageList():Create()
 ::oImage:ImageHeight := 16
 ::oImage:ImageWidth  := 16
Das ganze "könnte" man nun auch sicherlich mit Treeview machen was zumindest mit Codejock funktioniert.
CJ_TreeView.JPG
CJ_TreeView.JPG (42.49 KiB) 3609 mal betrachtet
gruss by OHR
Jimmy
Günter Beyes
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 315
Registriert: Mo, 16. Okt 2006 13:04
Wohnort: Region Stuttgart

Re: Treeview Zeilenhöhe

Beitrag von Günter Beyes »

Hallo Sebastian,
Glaubst du, damit könnte man z.B. auch ein Static oder ein PushButton beeinflussen?
bei Pushbuttons und einigen anderen XBPs, mindestens SLE und MLE, Checkbox, Radiobutton und 3State, Combobox und Listbox, ScrollBar und natürlich Treeview, kann man das -- selbstverständlich unter der Annahme, dass Alaska bei denen auch weiterhin direkt auf Windows-Standardcontrols zurückgreift und sie nicht selbst implementiert :!:

Gruß,
Günter
Antworten