Hab hier mal ein Programm für Personenbilder (z.B. Klassenfotos, Familienbilder usw.).
Damit kann man Tooltips für die einzelnen Personen erstellen und auch wieder laden.
Code
Declare Handle Pic, bmp, tip, edit, grid, Long ende, modus, x1, y1, x2, y2, String datei1, file2, text, tool#
Dim tool#, 40
grid = Create("Grid", 5, 0)
text = "Tool-Text"
Windowtitle "Bilder - Manager (Rechte Maustaste zum Markieren !)"
Window %MaxX - 100, %MaxY - 100
Popup "&Datei"
AppendMenu 101, "&Laden"
AppendMenu 102, "&Speichern"
AppendMenu 103, "&Ende"
tip = Create("ToolTip",%hwnd, %HWnd, "")
ende = 0
ClearList grid
WhileNot ende
WaitInput
If MenuItem(101)
datei1 = LoadFile$(%HWnd, "Bild-Daei laden", "Bilder|*.jpg;*.jpeg;*.bmp;*.png", 0)
If datei1 <> ""
file2 = SubStr$(datei1, 1, ".") + ".txt"
Pic = Create("hSizedPic", -1, datei1, %MaxX - 200, %MaxY - 200, 0)
bmp = Create("Bitmap",%hwnd,Pic,10,10)
If FileExists(file2)
LadeDatei(file2)
Else
MessageBox("Noch keine Datei angelegt !\nweiter mit rechter Maustaste !", "Fehler", 0)
ClearList grid
EndIf
Else
MessageBox("Keine Datei ausgewählt !", "Datei laden", 0)
EndIf
ElseIf MenuItem(102)
Move("HandleToList", grid)
Move("ListToFile", file2)
MessageBox(file2 + " gespeichert !", "Speichern", 4)
ElseIf MenuItem(103)
ende = 1
EndIf
If %MouseKey = 2
x1 = %MouseX - 10 : y1 = %MouseY - 10 : x2 = %MouseX + 10 : y2 = %MouseY + 10
edit = Create("Edit", bmp, "", x1 - 10, y1, 80, 25)
SetFocus(edit)
While GetFocus(edit)
WaitInput
EndWhile
text = GetText$(edit)
DestroyWindow(edit)
If text <> ""
Long tool#, 0 = 40, 16, %HWnd
Long tool#, 16 = x1, y1, x2, y2, 0, Addr(text)
SendMessage(tip, 1028, 0, tool#)
AddString(grid, Str$(x1) + "|" + Str$(y1) + "|" + Str$(x2) + "|" + Str$(y2) + "|" + text)
EndIf
EndIf
Case %Key = 2 : ende = 1
EndWhile
Proc LadeDatei
Parameters String datei2
Declare toolinfo#, tooltext$
Dim toolinfo#, 40
ClearList grid
ClearList 0
Move("FileToList", datei2)
Move("ListToHandle", grid)
If (GetCount(grid) - 1) > 0
WhileLoop 0, GetCount(grid) - 1
Long toolinfo#, 0 = 40, 16, %HWnd
tooltext$ = GetText$(grid, &LOOP, 4)
Long toolinfo#, 16 = Val(GetText$(grid, &LOOP, 0)), Val(GetText$(grid, &LOOP, 1)), Val(GetText$(grid, &LOOP, 2)), Val(GetText$(grid, &LOOP, 3)), 0, Addr(tooltext$)
SendMessage(tip, 1028, 0, toolinfo#)
EndWhile
MessageBox(datei2 + " geladen !", "Laden", 4)
Else
MessageBox("Keine Einträge vorhanden !", "Fehler", 0)
EndIf
Dispose toolinfo#
EndProc
Dispose tool#
End
Alles anzeigen
Es fehlen zwar noch ein paar Sachen, wie Editieren vorhandener Tooltips usw.
Aber vielleicht kann es jemand auch gebrauchen.
Verbesserungsvorschläge und sonstige Erweiterungen sind natürlich auch willkommen.