| |
|
|
Thomas Freier | Ich finde keine Lösung oder den Fehler. Beim ersten Aufruf ist die Toobar wie gewünscht. Beim nächten Aufruf fehlen mir die Ico. Was mache ich falsch? KompilierenMarkierenSeparieren $H Windows.ph
Declare Ende%
var hToolBmp& = @create("hPic", 0, "TOOLBAR")
var hIL& = @Create("ImageList", 16, 16, hToolBmp&, rgb(192, 192, 192))
CLS ~GetSysColor(~Color_BTNFACE)
var D_Font&=@Create("Font","Verdana",14,0,0,0,0)
SETDIALOGFONT D_Font&
WindowTitle "Neues Projekt"
PopUp "&Programm"
AppendMenu 101,"Dialog öffnen"
Separator
AppendMenu 103,"&Ende"
Whilenot Ende%
Waitinput
If @MenuItem(103)
Ende%=1
ElseIf @MenuItem(101)
ERFASSUNG
EndIf
EndWhile
DeleteObject hToolBmp&
DeleteObject hIL&
DeleteObject D_Font&
End
Proc ERFASSUNG
var dlg&=Create("Dialog",%hwnd,"Rechnungen",310,210,800,490)
var hToolbar& = @Create("TOOLBAR", dlg&, hIL&, 0, 0, 2000, 1)
Toolbar("AddButton", hToolbar&, 11, 1150, "Alle anzeigen")
Toolbar("AddButton", hToolbar&, 1, 1151, "Offene anzeigen")
Toolbar("AddButton", hToolbar&, 60, 1152, "Bezahlte anzeigen")
Toolbar("Separator", hToolbar&)
Toolbar("AddButton", hToolbar&, 14, 1156, "Rechnung anzeigen")
Waitinput
DestroyWindow(dlg&)
EndProc
|
|
|
| |
|
|
|
| Das Problem ist vlt. das Du mit DestroyWindow(dlg&) auch die Toolbar zerstörst und dies scheinbar die ImageListe mitreißt.
Ohne DestroyWindow(dlg&) oder mit DestroyWindow(dlg&) und erneutem hIL& = @Create("ImageList", 16, 16, hToolBmp&, rgb(192, 192, 192)) funktioniert es jedenfalls.
Vlt. insgesamt solch Fenster nicht "zerstören" sondern ein- und ausblenden. |
|
|
| |
|
|
|
Thomas Freier | Bleibt halt nur die "ImageList" zu erneuern. Schade! |
|
|
| |
|
|
|
| |
|
| |
|
|
|
| Du musst nur die Imageliste "befreien", dann gehts. KompilierenMarkierenSeparieren
Proc ERFASSUNG
var dlg&=Create("Dialog",%hwnd,"Rechnungen",310,210,800,490)
var hToolbar& = @Create("TOOLBAR", dlg&, hIL&, 0, 0, 2000, 1)
Toolbar("AddButton", hToolbar&, 11, 1150, "Alle anzeigen")
Toolbar("AddButton", hToolbar&, 1, 1151, "Offene anzeigen")
Toolbar("AddButton", hToolbar&, 60, 1152, "Bezahlte anzeigen")
Toolbar("Separator", hToolbar&)
Toolbar("AddButton", hToolbar&, 14, 1156, "Rechnung anzeigen")
Waitinput
SendMessage(hToolbar&, $430, 0, 0)'TB_SETIMAGELIST
DestroyWindow(dlg&)
| 07.10.2011 ▲ | |
|
|
|
|
| Meinst Du es wäre sinnvoll und machbar das Roland das mit einbaut? |
|
|
| |
|
|
|
| Machbar, sicher. Sinnvoll ists wohl nicht, jede Message gleich umzusetzen. |
|
|
| |
|
|
|
| Schade das Du meine Frage nicht verstanden hast.
Gäbe es einen Nachteil diese spezielle Nachricht: KompilierenMarkierenSeparieren grundsätzlich anzuwenden? |
|
|
| |
|
|
|
Thomas Freier | Im Beispiel gehts ja. Im Programm bei mir noch nicht. Da ist es die vorhandene Gridbox mit Icon , die auch die ImageListe mitreißt die Ursache. KompilierenMarkierenSeparieren |
|
|
| |
|
|
|
| Wie siehts mit:
iF (06.10.11)
Vlt. insgesamt solch Fenster nicht "zerstören" sondern ein- und ausblenden.
aus? |
|
|
| |
|
|
|
Thomas Freier | Ist machbar, aber im Moment noch nicht meine Arbeitsweise. Das "Create("ImageList",....) ist jetzt in einer Proc und wird dann bei Bedarf erneuert. |
|
|
| |
|
|
|
| Für Listviews ist ne andere Message zuständig. Funktioniert denn sendmessage(O_Lv&,~LVM_SETIMAGELIST,~LVSIL_SMALL,0) nicht?
Ansonsten muss man auch mal im MSDN nachlesen: The current image list will be destroyed when the list-view control is destroyed unless the LVS_SHAREIMAGELISTS style is set.
Wenn das oben also nicht geht, dann im Listview vorher den Style LVS_SHAREIMAGELISTS setzen, um zu verhindern, das die IList mit zerstört wird. |
|
|
| |
|
|