Forum | | | | Jörg Sellmeyer | Salut,
dans diesem schönen Code de Uwe Pascal Niemeyer wird un Treeview erzeugt.
malheureusement gelingt es Je ne une Droit sur un Item auszuwerten. qui Concentrer hüpft toujours tout de suite zurück sur den auparavant gewählten Eintrag. avec einem simulierten Mausklick (merci iF) bleibt zwar qui Concentrer mais seulement un Double-cliquez sur avec à droite liest cela Item aus. comment peux on alors avec einem einfachen Droit qui Informationen auslesen. KompilierenMarqueSéparation $H Windows.ph
$H messages.ph
$H CommCtrl.ph
window 50,50-600,400
usefont MS Sans Serif,15,7,0,0,0
setdialogfont 1
usermessages 16-------Fenster schließen abfangen
numwidth 6
strwidth 10
declare IcoList&,Tv&,Tv#
declare a&,b&,c&,d&
-----------------------------------------------------------------------------------ImageList
def ImageList_Create(5) !COMCTL32,ImageList_Create
def ImageList_AddIcon(2) !COMCTL32,ImageList_AddIcon
def ImageList_Destroy(1) !COMCTL32,ImageList_Destroy
def LoadIcon(2) !USER32,LoadIconA
IcoList&=ImageList_Create(16,16,1,1,0)---Parameter 1+2: Grösse der Icons
ImageList_AddIcon(IcoList&,LoadIcon(0,32512))---SystemIcons laden
ImageList_AddIcon(IcoList&,LoadIcon(0,32513))
ImageList_AddIcon(IcoList&,LoadIcon(0,32514))
ImageList_AddIcon(IcoList&,LoadIcon(0,32515))
----------------------------------------------------------------------------------Funktionen
def TvGetSelect(1) sendmessage(&(1),4362,9,0)-------TVM_GETNEXTITEM , TVIS_SELECTED
def TvInsertItem(1) sendmessage(&(1),4352,0,Tv#)----TVM_INSERTITEM
def TvGetItem(1) sendmessage(&(1),4364,0,Tv#+8)-----TVM_GETITEM
struct TV=Parent&,InsertAfter&,Mask&,Item&,State&,StateMask&,Text&,TextMax&,Ico1&,Ico2&,Children&,Data&,Text$(100)
dim Tv#,TV
clear Tv#
Tv#.Text& = Tv#+48
Tv#.TextMax&= 100
Tv&=control(SysTreeView32,,$5000002f,0,0,0,0,%hwnd,200,%Hinstance,$200)
sendmessage(Tv&,4361,0,IcoList&)---TVM_SETIMAGELIST
Tv#.Mask& =1+2+4+32---TVIF_IMAGE + TVIF_PARAM + TVIF_SELECTEDIMAGE + TVIF_TEXT
Tv#.Ico1& =0
Tv#.Ico2& =1
Tv#.Parent&=0----------oberste Ebene
Tv#.Text$ =Eintrag 1
Tv#.Data& =1111
a&=TvInsertItem(Tv&)
Tv#.Parent&=a&---------unter Eintrag 1 einordnen
Tv#.Text$=Eintrag 2
Tv#.Data& =3333
b&=TvInsertItem(Tv&)
Tv#.Parent&=b&---------unter Eintrag 2 einordnen
Tv#.Text$=Eintrag 3
Tv#.Data& =4444
TvInsertItem(Tv&)
Tv#.Ico1& =3
Tv#.Ico2& =2
Tv#.Parent&=0----------oberste Ebene
Tv#.Text$=Eintrag 4
Tv#.Data& =123
TvInsertItem(Tv&)
Tv#.Text$=Eintrag 5
Tv#.Data& =234
b&=TvInsertItem(Tv&)
Tv#.Text$=Eintrag 7
Tv#.Data& =345
TvInsertItem(Tv&)
Tv#.InsertAfter&=b&----------oberste Ebene, aber unterhalb von Eintrag 5
Tv#.Text$=Eintrag 6
Tv#.Data& =456
TvInsertItem(Tv&)
setwindowpos Tv&=250,10-300,300---Neuzeichnen wg. Baumstruktur
while 1
waitinput
case %umessage=16:break------------------Fenster schließen
locate 0,0
If GetFocus(TV&) AND (%childmessage = ~WM_LBUTTONDOWN)
Tv#.Item&=TvGetSelect(Tv&)
TvGetItem(Tv&)
print Tv#.Parent& :,Tv#.Parent&
print Tv#.Item& :,Tv#.Item&
print Linksklick Tv#.Text$ :,Tv#.Text$
print Tv#.Ico1& :,Tv#.Ico1&
print Tv#.Ico2& :,Tv#.Ico2&
print Tv#.Data& :,Tv#.Data&
ElseIf GetFocus(TV&) AND (%childmessage = ~WM_RBUTTONDOWN)
Mit MouseEvent bleibt zwar der Focus auf dem Item aber erst mit rechtem
Doppelklick füllt sich die Struktur
~Mouse_Event(~MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
~Mouse_Event(~MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
Tv#.Item&=TvGetSelect(Tv&)
TvGetItem(Tv&)
Print Rechtklick Tv#.Item$ :,Tv#.Text$
EndIf
endwhile
destroywindow(Tv&)
case IcoList&:ImageList_Destroy(IcoList&=s2>)
dispose Tv#
Salut Jörg |
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 06.10.2006 ▲ |
| |
| | | Probier la fois: KompilierenMarqueSéparation $H Windows.ph
$H Messages.ph
$H Commctrl.ph
Window 50,50-600,400
Usefont MS Sans Serif,15,7,0,0,0
Setdialogfont 1
Usermessages 16-------Fenster schließen abfangen
Numwidth 6
Strwidth 10
Declare Icolist&,Tv&,Tv#
Declare A&,B&,C&,D&
-----------------------------------------------------------------------------------ImageList
Def Imagelist_create(5) !COMCTL32,ImageList_Create
Def Imagelist_addicon(2) !COMCTL32,ImageList_AddIcon
Def Imagelist_destroy(1) !COMCTL32,ImageList_Destroy
Def Loadicon(2) !USER32,LoadIconA
Icolist&=Imagelist_create(16,16,1,1,0)---Parameter 1+2: Grösse der Icons
Imagelist_addicon(Icolist&,Loadicon(0,32512))---SystemIcons laden
Imagelist_addicon(Icolist&,Loadicon(0,32513))
Imagelist_addicon(Icolist&,Loadicon(0,32514))
Imagelist_addicon(Icolist&,Loadicon(0,32515))
----------------------------------------------------------------------------------Funktionen
Def Tvgetselect(1) Sendmessage(&(1),4362,9,0)-------TVM_GETNEXTITEM , TVIS_SELECTED
Def Tvinsertitem(1) Sendmessage(&(1),4352,0,Tv#)----TVM_INSERTITEM
Def Tvgetitem(1) Sendmessage(&(1),4364,0,Tv#+8)-----TVM_GETITEM
Struct Tv=Parent&,Insertafter&,Mask&,Item&,State&,Statemask&,Text&,Textmax&,Ico1&,Ico2&,Children&,Data&,Text$(100)
Dim Tv#,Tv
Clear Tv#
Tv#.Text& = Tv#+48
Tv#.Textmax&= 100
Tv&=Control(SysTreeView32,,$5000002F,0,0,0,0,%Hwnd,200,%Hinstance,$200)
Sendmessage(Tv&,4361,0,Icolist&)---TVM_SETIMAGELIST
Tv#.Mask& =1+2+4+32---TVIF_IMAGE + TVIF_PARAM + TVIF_SELECTEDIMAGE + TVIF_TEXT
Tv#.Ico1& =0
Tv#.Ico2& =1
Tv#.Parent&=0----------oberste Ebene
Tv#.Text$ =Eintrag 1
Tv#.Data& =1111
A&=Tvinsertitem(Tv&)
Tv#.Parent&=A&---------unter Eintrag 1 einordnen
Tv#.Text$=Eintrag 2
Tv#.Data& =3333
B&=Tvinsertitem(Tv&)
Tv#.Parent&=B&---------unter Eintrag 2 einordnen
Tv#.Text$=Eintrag 3
Tv#.Data& =4444
Tvinsertitem(Tv&)
Tv#.Ico1& =3
Tv#.Ico2& =2
Tv#.Parent&=0----------oberste Ebene
Tv#.Text$=Eintrag 4
Tv#.Data& =123
Tvinsertitem(Tv&)
Tv#.Text$=Eintrag 5
Tv#.Data& =234
B&=Tvinsertitem(Tv&)
Tv#.Text$=Eintrag 7
Tv#.Data& =345
Tvinsertitem(Tv&)
Tv#.Insertafter&=B&----------oberste Ebene, aber unterhalb von Eintrag 5
Tv#.Text$=Eintrag 6
Tv#.Data& =456
Tvinsertitem(Tv&)
Setwindowpos Tv&=250,10-300,300---Neuzeichnen wg. Baumstruktur
While 1
Waitinput
Case %Umessage=16:Break------------------Fenster schließen
Locate 0,0
If Getfocus(Tv&) And (%Childmessage = ~Wm_lbuttondown)
Tv#.Item&=Tvgetselect(Tv&)
Tvgetitem(Tv&)
print Tv#.Parent& :,Tv#.Parent&
print Tv#.Item& :,Tv#.Item&
Print Linksklick Tv#.Text$ :,Tv#.Text$
print Tv#.Ico1& :,Tv#.Ico1&
print Tv#.Ico2& :,Tv#.Ico2&
print Tv#.Data& :,Tv#.Data&
Elseif Getfocus(Tv&) And (%Childmessage = ~Wm_rbuttondown)
Mit MouseEvent bleibt zwar der Focus auf dem Item aber erst mit rechtem
Doppelklick füllt sich die Struktur
~Mouse_event(~Mouseeventf_leftdown, 0, 0, 0, 0)
~Mouse_event(~Mouseeventf_leftup, 0, 0, 0, 0)
dulcoiF
Tv#.Item&=Tvgetselect(Tv&)
Tvgetitem(Tv&)
Print Rechtklick Tv#.Item$ :,Tv#.Text$
Endif
Endwhile
Destroywindow(Tv&)
Case Icolist&:Imagelist_destroy(Icolist&)
Dispose Tv#
proc dulcoiF
settimer 1;waitinput;killtimer
endproc
|
| | | | |
| | Jörg Sellmeyer | Funktioniert malheureusement aussi pas qui Auswertung erfolgt wohl sur NM_TREEVIEW. ensuite wird une NMHDR-Struktur pleine et qui sagt einem ensuite, si avec à droite geklickt wurde. en supplément wird ensuite mais encore une TV_HITTESTINFO -Struktur et qui Message TVM_HITTEST versendet.
malheureusement raucht mir chez cette ganzen Strukturen avec entsprechenden Masken u.s.w. toujours qui qui tête. So entier perspective je là encore pas par.
dans einem Power Basic-Forum habe je la fois cette Code trouvé: KompilierenMarqueSéparation So comment je cela verstehe, simuliert il aussi une Mausklick avec à gauche mais ensuite plan cet HitTest-Geschichte... je hab la fois encore ne Textdatei avec plus PB-Code angehängt. là doit je mich encore mühsam durcharbeiten, là je sauf Profan aucun Programmierkenntnisse habe. peut-être peux daraus quelqu'un leichter quoi erkennen.
Salut Jörg |
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 06.10.2006 ▲ |
| |
| | | Hm chez mir funktioniert mon Beispiel sous XPHome. |
| | | | |
| | Jörg Sellmeyer | c'est oui n Ding... chez mir funktioniert es toujours seulement pour dem zweiten Klick avec à droite (XP Professional) |
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 06.10.2006 ▲ |
| |
| | | et so? KompilierenMarqueSéparation $H Windows.ph
$H Messages.ph
$H Commctrl.ph
Window 50,50-600,400
Usefont MS Sans Serif,15,7,0,0,0
Setdialogfont 1
Usermessages 16-------Fenster schließen abfangen
Numwidth 6
Strwidth 10
Declare Icolist&,Tv&,Tv#
Declare A&,B&,C&,D&
-----------------------------------------------------------------------------------ImageList
Def Imagelist_create(5) !COMCTL32,ImageList_Create
Def Imagelist_addicon(2) !COMCTL32,ImageList_AddIcon
Def Imagelist_destroy(1) !COMCTL32,ImageList_Destroy
Def Loadicon(2) !USER32,LoadIconA
Icolist&=Imagelist_create(16,16,1,1,0)---Parameter 1+2: Grösse der Icons
Imagelist_addicon(Icolist&,Loadicon(0,32512))---SystemIcons laden
Imagelist_addicon(Icolist&,Loadicon(0,32513))
Imagelist_addicon(Icolist&,Loadicon(0,32514))
Imagelist_addicon(Icolist&,Loadicon(0,32515))
----------------------------------------------------------------------------------Funktionen
Def Tvgetselect(1) Sendmessage(&(1),4362,9,0)-------TVM_GETNEXTITEM , TVIS_SELECTED
Def Tvinsertitem(1) Sendmessage(&(1),4352,0,Tv#)----TVM_INSERTITEM
Def Tvgetitem(1) Sendmessage(&(1),4364,0,Tv#+8)-----TVM_GETITEM
Struct Tv=Parent&,Insertafter&,Mask&,Item&,State&,Statemask&,Text&,Textmax&,Ico1&,Ico2&,Children&,Data&,Text$(100)
Dim Tv#,Tv
Clear Tv#
Tv#.Text& = Tv#+48
Tv#.Textmax&= 100
Tv&=Control(SysTreeView32,,$5000002F,0,0,0,0,%Hwnd,200,%Hinstance,$200)
Sendmessage(Tv&,4361,0,Icolist&)---TVM_SETIMAGELIST
Tv#.Mask& =1+2+4+32---TVIF_IMAGE + TVIF_PARAM + TVIF_SELECTEDIMAGE + TVIF_TEXT
Tv#.Ico1& =0
Tv#.Ico2& =1
Tv#.Parent&=0----------oberste Ebene
Tv#.Text$ =Eintrag 1
Tv#.Data& =1111
A&=Tvinsertitem(Tv&)
Tv#.Parent&=A&---------unter Eintrag 1 einordnen
Tv#.Text$=Eintrag 2
Tv#.Data& =3333
B&=Tvinsertitem(Tv&)
Tv#.Parent&=B&---------unter Eintrag 2 einordnen
Tv#.Text$=Eintrag 3
Tv#.Data& =4444
Tvinsertitem(Tv&)
Tv#.Ico1& =3
Tv#.Ico2& =2
Tv#.Parent&=0----------oberste Ebene
Tv#.Text$=Eintrag 4
Tv#.Data& =123
Tvinsertitem(Tv&)
Tv#.Text$=Eintrag 5
Tv#.Data& =234
B&=Tvinsertitem(Tv&)
Tv#.Text$=Eintrag 7
Tv#.Data& =345
Tvinsertitem(Tv&)
Tv#.Insertafter&=B&----------oberste Ebene, aber unterhalb von Eintrag 5
Tv#.Text$=Eintrag 6
Tv#.Data& =456
Tvinsertitem(Tv&)
Setwindowpos Tv&=250,10-300,300---Neuzeichnen wg. Baumstruktur
While 1
Waitinput
Case %Umessage=16:Break------------------Fenster schließen
Locate 0,0
If Getfocus(Tv&) And (%Childmessage = ~Wm_lbuttondown)
Tv#.Item&=Tvgetselect(Tv&)
Tvgetitem(Tv&)
print Tv#.Parent& :,Tv#.Parent&
print Tv#.Item& :,Tv#.Item&
Print Linksklick Tv#.Text$ :,Tv#.Text$
print Tv#.Ico1& :,Tv#.Ico1&
print Tv#.Ico2& :,Tv#.Ico2&
print Tv#.Data& :,Tv#.Data&
endif
if Getfocus(Tv&) And (%Childmessage = ~Wm_rbuttondown)
Mit MouseEvent bleibt zwar der Focus auf dem Item aber erst mit rechtem
Doppelklick füllt sich die Struktur
~Mouse_event(~Mouseeventf_leftdown, 0, 0, 0, 0)
~Mouse_event(~Mouseeventf_leftup, 0, 0, 0, 0)
getmessage
Tv#.Item&=Tvgetselect(Tv&)
Tvgetitem(Tv&)
Print Rechtklick Tv#.Item$ :,Tv#.Text$
Endif
Endwhile
Destroywindow(Tv&)
Case Icolist&:Imagelist_destroy(Icolist&ass=s2>)
Dispose Tv#
|
| | | | |
| | | Nachtrag: s'il te plaît comme Prc ou bien Exe testen. |
| | | | |
| | Jörg Sellmeyer | Funktioniert aussi seulement ab dem 2. Klick - et ensuite wird cela Editcontrol aktiviert. |
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 06.10.2006 ▲ |
| |
| | | je denke la fois, cela entspricht aussi pas deinen Vorstellungen, ou bien? KompilierenMarqueSéparationDef @GetCursorPos(1) !USER32,GetCursorPos
Def @ScreenToClient(2) !USER32,ScreenToClient
$H Windows.ph
$H Messages.ph
$H Commctrl.ph
Window 50,50-600,400
Usefont MS Sans Serif,15,7,0,0,0
Setdialogfont 1
Usermessages 16-------Fenster schließen abfangen
Numwidth 6
Strwidth 10
Declare Icolist&,Tv&,Tv#
Declare A&,B&,C&,D&
-----------------------------------------------------------------------------------ImageList
Def Imagelist_create(5) !COMCTL32,ImageList_Create
Def Imagelist_addicon(2) !COMCTL32,ImageList_AddIcon
Def Imagelist_destroy(1) !COMCTL32,ImageList_Destroy
Def Loadicon(2) !USER32,LoadIconA
Icolist&=Imagelist_create(16,16,1,1,0)---Parameter 1+2: Grösse der Icons
Imagelist_addicon(Icolist&,Loadicon(0,32512))---SystemIcons laden
Imagelist_addicon(Icolist&,Loadicon(0,32513))
Imagelist_addicon(Icolist&,Loadicon(0,32514))
Imagelist_addicon(Icolist&,Loadicon(0,32515))
----------------------------------------------------------------------------------Funktionen
Def Tvgetselect(1) Sendmessage(&(1),4362,9,0)-------TVM_GETNEXTITEM , TVIS_SELECTED
Def Tvinsertitem(1) Sendmessage(&(1),4352,0,Tv#)----TVM_INSERTITEM
Def Tvgetitem(1) Sendmessage(&(1),4364,0,Tv#+8)-----TVM_GETITEM
Struct Tv=Parent&,Insertafter&,Mask&,Item&,State&,Statemask&,Text&,Textmax&,Ico1&,Ico2&,Children&,Data&,Text$(100)
Dim Tv#,Tv
Clear Tv#
Tv#.Text& = Tv#+48
Tv#.Textmax&= 100
Tv&=Control(SysTreeView32,,$5000002F,0,0,0,0,%Hwnd,200,%Hinstance,$200)
Sendmessage(Tv&,4361,0,Icolist&)---TVM_SETIMAGELIST
Tv#.Mask& =1+2+4+32---TVIF_IMAGE + TVIF_PARAM + TVIF_SELECTEDIMAGE + TVIF_TEXT
Tv#.Ico1& =0
Tv#.Ico2& =1
Tv#.Parent&=0----------oberste Ebene
Tv#.Text$ =Eintrag 1
Tv#.Data& =1111
A&=Tvinsertitem(Tv&)
Tv#.Parent&=A&---------unter Eintrag 1 einordnen
Tv#.Text$=Eintrag 2
Tv#.Data& =3333
B&=Tvinsertitem(Tv&)
Tv#.Parent&=B&---------unter Eintrag 2 einordnen
Tv#.Text$=Eintrag 3
Tv#.Data& =4444
Tvinsertitem(Tv&)
Tv#.Ico1& =3
Tv#.Ico2& =2
Tv#.Parent&=0----------oberste Ebene
Tv#.Text$=Eintrag 4
Tv#.Data& =123
Tvinsertitem(Tv&)
Tv#.Text$=Eintrag 5
Tv#.Data& =234
B&=Tvinsertitem(Tv&)
Tv#.Text$=Eintrag 7
Tv#.Data& =345
Tvinsertitem(Tv&)
Tv#.Insertafter&=B&----------oberste Ebene, aber unterhalb von Eintrag 5
Tv#.Text$=Eintrag 6
Tv#.Data& =456
Tvinsertitem(Tv&)
Setwindowpos Tv&=250,10-300,300---Neuzeichnen wg. Baumstruktur
While 1
Waitinput
Case %Umessage=16:Break------------------Fenster schließen
Locate 0,0
If Getfocus(Tv&) And (%Childmessage = ~Wm_lbuttondown)
Tv#.Item&=Tvgetselect(Tv&)
Tvgetitem(Tv&)
print Tv#.Parent& :,Tv#.Parent&
print Tv#.Item& :,Tv#.Item&
Print Linksklick Tv#.Text$ :,Tv#.Text$
print Tv#.Ico1& :,Tv#.Ico1&
print Tv#.Ico2& :,Tv#.Ico2&
print Tv#.Data& :,Tv#.Data&
Elseif Getfocus(Tv&) And (%Childmessage = ~Wm_rbuttondown)
Mit MouseEvent bleibt zwar der Focus auf dem Item aber erst mit rechtem
Doppelklick füllt sich die Struktur
DIM H_TEST#,16
Clear H_TEST#
@GetCursorPos(H_TEST#)
@ScreenToClient(TV&,H_TEST#)
@Sendmessage(TV&,$1111,0,H_TEST#)
@Sendmessage(TV&,$110B,$9,@long(H_TEST#,12))
Dispose H_Test#
Tv#.Item&=Tvgetselect(Tv&)
Tvgetitem(Tv&)
Print Rechtklick Tv#.Item$ :,Tv#.Text$
Endif
Endwhile
Destroywindow(Tv&)
Case Icolist&:Imagelist_destroy(Icolis n class=s2>)
Dispose Tv#
Hatte malheureusement aucun lauffähigen Text de dir et veux espérer, cela es klappt.
Salut
Andreas |
| | | | |
| | Jörg Sellmeyer | Super Andreas! merci, cela hat mir très weitergeholfen. tu as alors qui Screenkoordinaten qui souris via Hittest-Message à cela TV gesandt. cela était oui c'est ca cela, quoi je gesucht habe mais comment dit: chez Strukturen verstehe je souvent seulement gare.
ici nochmal qui Bedeutungen qui Messages:
SendMessage(Tv&,$1111,0,H_test#)~TVM_HitTest SendMessage(Tv&,$110B,$9,@Long(H_test#,12))~TVM_SELECTITEM
A. Hötker
Hatte malheureusement aucun lauffähigen Text de dir et veux espérer, cela es klappt.
quoi meint il avec cela bloß? quoi ist car cela, quoi je mitgeschickt habe? sofern qui Code de mir ist, habe je oui gar pas behauptet. Im Gegenteil: je hab den Autor oui extra genannt! |
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 06.10.2006 ▲ |
| |
| | | %Childmessage kennt mon Profan pas
|
| | | | |
| | Jörg Sellmeyer | Na ensuite umso größeren Dank! |
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 06.10.2006 ▲ |
| |
|
répondreOptions du sujet | 1.274 Views |
Themeninformationencet Thema hat 3 participant: |