Forum | | | | - Seite 1 - |
| GDL | Hallo Frank,
muss ich, ausser natürlich unterschiedlicher handels, auf noch etwas achten wenn ich mehere lview gleichzeitig nutze?
Servus Georg |
| | | | |
| | | | | - Seite 1 - |
| Jörg Sellmeyer | Listviewdll-Hilfe
InitMessages() darf nicht für jedes Listview verwendet werden, muß aber für jedes Fenster aufgerufen werden, in dem mindestens ein Listview verwendet wird. Mehrfachaufrufe für ein und dasselbe Fenster sind nicht gestattet und führen zu Fehlern!
Da bin ich schon mal drauf reingefallen und hab lange gebraucht bis ichs gefunden habe. Also nur einmal und nicht mehr. |
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 04.09.2007 ▲ |
| |
| | Frank Abbing | InitMessages startet das Subclassing dieses Fensters. Das ist natürlich nur einmal pro Fenster nötig. |
| | | | |
| | GDL | Hi Frank,
habe noch ein setitem Problem. Genaueres siehe Codekommentare.
{$CLEQ}
declare ende%,lvdll&,bereich#,x&,lview&[]
$I C:PRFellowCodehilfen_compilerListview_Funktionen.inc
lvdll&=usedll("C:\Steuerung\Listview.dll")
dim bereich#,1024
window 0,0-%maxx,%maxy
x&=MixRGBs(GetSysColor(15),$00ffffffff)
lview&[1]=CreateListView(%hwnd,%hinstance,0,x&,-1,$31)
EnableEdits(lview&[1],1)
AutoSortListview lview&[1],1,1,1,1,2,2
ShowListView(lview&[1],10,40,700,100)
x&=MixRGBs(GetSysColor(15),$00ffffffff)
lview&[2]=CreateListView(%hwnd,%hinstance,0,x&,-1,$31)
EnableEdits(lview&[2],1)
AutoSortListview lview&[2],1,1,1,1,2,2
ShowListView(lview&[2],10,160,700,100)
x&=MixRGBs(GetSysColor(15),$00ffffffff)
lview&[3]=CreateListView(%hwnd,%hinstance,0,x&,-1,$31)
EnableEdits(lview&[3],1)
AutoSortListview lview&[3],1,1,1,1,2,2
ShowListView(lview&[3],10,300,700,100)
ClearListview(lview&[1])
InsertColumn lview&[1],"Num.",50,0
insertColumn lview&[1],"Vorname",80,0
insertColumn lview&[1],"Nachname",120,0
insertColumn lview&[1],"Firma",120,0
insertColumn lview&[1],"Straße",120,0
insertColumn lview&[1],"Plz",50,0
insertColumn lview&[1],"Ort",120,0
insertColumn lview&[1],"Telefon",120,0
insertColumn lview&[1],"Fax",120,0
insertColumn lview&[1],"Handy",120,0
insertColumn lview&[1],"E-Mail",200,0
insertColumn lview&[1],"Internet",250,0
insertColumn lview&[1],"Bemerkung",200,0
ClearListview(lview&[2])
InsertColumn lview&[2],"Num.",50,0
insertColumn lview&[2],"Artikel",80,0
insertColumn lview&[2],"Bemerkung",120,0
insertColumn lview&[2],"Bestellnummer",120,0
insertColumn lview&[2],"Menge",60,0
insertColumn lview&[2],"Bestand",60,0
insertColumn lview&[2],"Raum",70,0
insertColumn lview&[2],"Regal",60,0
insertColumn lview&[2],"Schrank",60,0
insertColumn lview&[2],"Magazin",60,0
insertColumn lview&[2],"Ordner",60,0
insertColumn lview&[2],"Einschub",70,0
insertColumn lview&[2],"Register",70,0
insertColumn lview&[2],"Fach",60,0
insertColumn lview&[2],"Seite",60,0
insertColumn lview&[2],"Brutto",100,0
insertColumn lview&[2],"Netto",100,0
insertColumn lview&[2],"MWST",60,0
setitemtext(lview&[1],"ww",0,0) geht erst nach nem setitem,also nur existierende Einträge editieren
setitem lview&[1],"0","1","2","3","4","5","6","7","8","9","10","11","12"
setitem lview&[2],"0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18"
mit obigen Befehl lassen sich die letzten 4 Spalten nicht füllen
setitemtext(lview&[2],"ww",17,0) so kann ich die letzte Spalte füllen
declare a$
a$="fghj"
setitemtext(lview&[2],a$,16,0) so kann ich die vorletzte Spalte nicht füllen
Nun zu meinem Problem
Wie bekomme ich die letzten 4 Spalten gefüllt, wenn der Text erst zur Laufzeit feststeht.
Ich habe zur Vereinfachung bei setitem Strings hergenommen.Im Programm stehen da Stringvariablen
InitMessages(%hwnd)
whilenot ende%
waitinput
wend
dispose bereich#
destroywindow(%hwnd)
FreeDll lvdll&
$I C:PRFellowCodehilfen_compilerListview_dispose.inc
end
Was mache ich hier falsch ?Danke.
Servus Georg |
| | | | |
| | Jörg Sellmeyer | Profan kann nur 15 Parameter in einer Prozedur aufnehmen. Du könntest es so lösen:
Wenn Du andere Texte als diese Zahlen verwenden willst, kannst Du die vorher in einem String zusammenfassen:
Ist jetzt nur so runtergeschrieben, müßte aber funktionieren |
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 25.09.2008 ▲ |
| |
| | GDL | Hallo Jörg
Danke.Werde es heute abend probieren. |
| | | | |
| | GDL | @Jörg,
hab noch schnell probiert.
geht beides nicht. Setitemtext geht nur mit "" |
| | | | |
| | Jörg Sellmeyer | Dann versuch mal:
Nachtrag:
str$("345")
Das ist natürlich eh witzlos. Du meinst wahrscheinlich str$(345). |
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 25.09.2008 ▲ |
| |
| | Frank Abbing | Georg, bei Dll-Funktionen kannst du in der Regel keinen String übergeben, sondern nur einen Zeiger auf einen String. Hast du es mit Addr(string$) probiert? |
| | | | |
| | GDL | @Jörg,
sorry,man soll halt nichts zwischen Tür und Angel schnell noch einschieben. Hab natürlich a%=345 str$(a%) genommen.
@Frank und Jörg, muss mich mit addr(string$) erst befassen.Kenn ich noch nicht. Muss ertsmal dahinterkommen was Jörg sein Beispiel macht. |
| | | | |
| | GDL | Hi,
habe es jetzt so in meinem Programm zum Laufen gebracht.
Aber so richtig schlau werde ich daraus noch nicht. bei setitem kann ein xyz$ übergeben werden und bei setitemtext nicht. |
| | | | |
| | Frank Abbing | SetItem ist eine Profanprozedur für die Listview-Funktion SItem, eine Vereinfachung. Schau mal in die Inc der Listview.dll. Da siehst du auch, warum nur 15 Paramter übergeben werden können. Mehr verkraftet XProfan ja auch nicht. Benötigst du mehr, dann musst du SItem direkt verwenden. SetItemText dagegen ist direkt eine Dll-Funktion.
Proc SetItem
Clear clv2#
Clear clvall#
String clvall#,0=@$(2)
Long clv2#,0=clvall#
String clvall#,100=@$(3)
Long clv2#,4=clvall#+100
String clvall#,200=@$(4)
Long clv2#,8=clvall#+200
String clvall#,300=@$(5)
Long clv2#,12=clvall#+300
String clvall#,400=@$(6)
Long clv2#,16=clvall#+400
String clvall#,500=@$(7)
Long clv2#,20=clvall#+500
String clvall#,600=@$(8)
Long clv2#,24=clvall#+600
String clvall#,700=@$(9)
Long clv2#,28=clvall#+700
String clvall#,800=@$(10)
Long clv2#,32=clvall#+800
String clvall#,900=@$(11)
Long clv2#,36=clvall#+900
String clvall#,1000=@$(12)
Long clv2#,40=clvall#+1000
String clvall#,1100=@$(13)
Long clv2#,44=clvall#+1100
String clvall#,1200=@$(14)
Long clv2#,48=clvall#+1200
String clvall#,1300=@$(15)
Long clv2#,52=clvall#+1300
SItem(@&(1),clv2#,%pcount-2)
EndProc
|
| | | | |
| | | | - Seite 2 - |
| | GDL | Aha.Also nochmals danke euch beiden. |
| | | | |
|
AntwortenThemenoptionen | 1.126 Betrachtungen |
ThemeninformationenDieses Thema hat 3 Teilnehmer: |