Allgemeine Fragen zur PROFAN Programmierung
Views (Heute): 249647 (11083)
  Suchen
 Zurück zur Übersicht
 AutorThema: Probleme beim Erstellen eines Listview Controls
Philipp Sternberg
Datum:07.06.01 15:25 Antwortenals Email verschicken (ps@burghardt-ib.de) 


Hallo Leute,
ich versuche seit einiger Zeit mit Profan Listview Controls zu erstellen und stoße dabei immer wieder auf Probleme, die sich bisher allerdings irgendwie von allein lösten, bzw bei denen ich den Fehler endeckte. Jetz jedoch, so scheint es, hänge ich fest: Ich habe probiert in ein Listveiw-control eine Spalte einzu fügen (die erste Spalte), was auch funktioniert, allerdings nur mit einem Haken: ich kann der Spalte keinen Namen geben, sie erscheint auf dem Bildschirm jedoch ohne Name. Hier mein Quelltext:
Declare WC_CLASS#,WC_NAME# 'String für die CreateWindowEx - CLassenname, Fensterüberschrift
Declare LV_STRUCT# , LV_STRUCT2#,LVI_NAME#,LVC_NAME# 'Struktur für um ein Item einem Listview hinzuzufügen, ItemTextVariable
Declare itemIndex%,spalte%

Dim LVI_NAME#,255

'--------------------------------------- LV_ITEM STRUKTUR---------------------------------
struct LV_ITEM = mask#(1),iItem%,iSubItem%,state%,stateMask%,pszText&,cchTextMax%,iImage%,LParam&
Dim LV_STRUCT#,LV_ITEM
let LV_STRUCT#.mask# = 1             'Muss Text, Image, Param oder State gesetzt werden.
let LV_STRUCT#.iItem% = itemIndex%   'index des Items, das eingefügt wird
let LV_STRUCT#.iSubItem% = spalte%   'in welche spalte (one-based) kommt das Item, wenn es ein Subitem ist (sonst 0)
let LV_STRUCT#.state% = 0            'ist der neue Eintrag makiert, selktiert usw. ??? (wird nicht gesetzt, da mask# = 1)
let LV_STRUCT#.stateMask% = 0        'erweiterung von state%
let LV_STRUCT#.pszText& = LVI_NAME#  'Pointer auf String, in dem der Name steht.
let LV_STRUCT#.cchTextMax% = 255     'Größe diese Strings (in Byte)
let LV_STRUCT#.iImage% = 0           'Index des Icons der zugehörigen ImageList (wird nicht gesetzt, da mask# = 1)
let LV_STRUCT#.LParam& = 0           'LParam&, (wird nicht gesetzt, da mask# = 1)
String LVI_NAME#,0 = "NAME"

'--------------------------------------- LV_COLUMN STRUKTUR---------------------------------
struct LV_COLUMN = mask#(1),fmt%,cx%,pszText&,cchTextMax%,iSubItem%
Dim LVC_NAME#, 40
Dim LV_STRUCT2#,LV_COLUMN
let LV_STRUCT2#.mask# = 7             'Muss Text, Format, Pixel-width oder SubItem gesetzt werden.
let LV_STRUCT2#.fmt% = 0              'Align = left
let LV_STRUCT2#.cx% = 40              'Pixelbreite
let LV_STRUCT2#.pszText& = LVC_NAME#  'Pointer auf Spaltennamen-Variable
let LV_STRUCT2#.cchTextMax% = 40      'Länge der Spaltennamen-Variable
let LV_STRUCT2#.iSubItem% = 0
String LVC_NAME#,0 = "NAME DER SPALTE" '(Genau der Teil, in dem der NAme der Spalte definiert wird)
'-------------------------------------------------------------------------------------------
Dim WC_CLASS#,32
String WC_CLASS#,0="SysListView32"
Dim WC_NAME#,1
String WC_NAME#,0=""

let Lvbox& = @CreateWindowEx (0,WC_CLASS#,WC_NAME#,$50000001,40,40,400,200,%hwnd,0,%hinstance,0)
print @sendmessage (Lvbox&,4123,0,LV_STRUCT2#)


Mit der Sendmessage-funktion habe ich die Spalte hinzugefügt. (Rückgabewert ist 0)

Gedankt seis dem, ders mir sagen kann ;)

Schöne Grüße,
Philipp



Uwe ''Pascal'' Niemeier
Datum:08.06.01 15:00 Antwortenals Email verschicken (Pascalxd@owl-online.de) 


Hallo Philipp!

Du mußt *alle* Bestandteile der Strukturen als LongInt definieren, auch Mask, cx, Item usw.
Also für Lv_Column z.B. so:

struct LV_COLUMN = mask&,fmt&,cx&,pszText&,cchTextMax&,iSubItem&
Dim LVC_NAME#, 40
Dim LV_STRUCT2#,LV_COLUMN
let LV_STRUCT2#.mask& = 7
let LV_STRUCT2#.fmt& = 0
let LV_STRUCT2#.cx& = 140
let LV_STRUCT2#.pszText& = LVC_NAME#
let LV_STRUCT2#.cchTextMax& = 40
let LV_STRUCT2#.iSubItem& = 0
String LVC_NAME#,0 = "NAME DER SPALTE"
'----------

Für Lv_Item gilt das gleiche, auch wenn die Erzeugung des LV's bisher geklappt hat!

BTW: Die Erzeugung des ListViews läßt sich per @Control wesendlich vereinfachen:

let Lvbox&=control("SysListView32","",$50000001,40,40,400,200,%hwnd,200,%hinstance,$200)

HTH
Pascal


Philipp Sternberg
Datum: 10.06.01 19:25 Antwortenals Email verschicken (ps@burghardt-ib.de) 


Hätte ich ohne die Hilfe dieses
Forums mit wirklich netten Leuten nicht geschafft !
Vielen Dank !!!



 Zurück zur Übersicht