Foro | | | | E.T. | ¡Hola XProfan-Gemeinde, Yo nutze gern el Icon-Buttons con texto,
como en el Code unten dargestellt. Bisher Tuve así no Problemas, como Yo el Icon's de uno Dll geladen tener. En una kleinem Mini-Projekt, welches sin Dll auskommen debería, me está ahora folgendes aufgefallen: Im Interpreter funktioniert el bastante wunderbar, starte Yo aber el fertige Exe, es el Icon en el Button sólo sporadisch, meist sólo beim ersten Programmstart, a sehen.
Alguien 'ne Concepto ??? Passiert de paso en el Ejemplo hier: [...] auch. Getestet con XProfan 11/12/X2 KompilierenMarcaSeparación
SubProc Create.BigPicButton
Parameters Ziel&, Text$, PosX%, PosY%, Breite%, Hoehe%, Icon&
var BigPicButton& = @control("Button",Text$,$50012200+$2000000,PosX%,PosY%,Breite%,Hoehe%,Ziel&,1000,%Hinstance)
Button_Refresh BigPicButton&, Icon&
Return BigPicButton&
EndProc
Proc Button_Refresh
Parameters Button&, Icon&
var Refresh_Button&=@control("Static","",$50000003,12,12,32,32,Button&,0,%Hinstance)
@Sendmessage(Refresh_Button&,$170,Icon& ,0)
EndProc
Declare BtnIcon&, Button&
BtnIcon& = @Create("hIcon","Baum")
CLS
Button& = @Create("BigPicButton",%HWnd,"Test- \nButton ",20,20,150,60,BtnIcon&)
waitinput
DeleteObject BtnIcon&
end
|
| | | Grüße aus Sachsen... Mario WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte... | 08.05.2011 ▲ |
| |
| | Dieter Zornow | Schau dir veces el Code a el va, es auch kommentiert por qué. En dir fehlt qué. KompilierenMarcaSeparación'Autor Dieter Zornow
DEF LoadImage(6) !"USER32","LoadImageA"
Def DestroyIcon(1) ! "User32","DestroyIcon"
Declare icon&[]
Var himh& = 0
proc destroyobject
whileloop 0,sizeof(icon&[])-1
DestroyIcon(icon&[&loop])
endwhile
endproc
proc showbutton'damit das Icon auch immer wieder angezeigt wird, ohne diese Proc wird es in der Exe nicht mehr angezeigt
parameters hdl&' handle des Static controls
showwindow(hdl&,0)
showwindow(hdl&,1)
endproc
'Parameter: Fenster, oder Dialoghandle, Buttontext, handle der iconresource, Iconname, x%,y%,w%,h%, ButtonID, Text Links, rechts oder Zentiert
subproc Create.ITextbutton
Parameters hwnd&,text$,source&,image$,x%,y%,w%,h%,id&,dct$
declare button&,st&,hpos&,hwid&
Icon&[himh&] = LoadImage(source&,addr(Image$),$1,20,20,$0)'Icongröße = 20 x 20
if dct$ = upper$("R")
button& = Control("BUTTON",text$,$54010200,x%,y%,w%,h%,hwnd&,id&,%hinstance,$0100)
elseif dct$ = upper$("L")
button& = Control("BUTTON",text$,$54010100,x%,y%,w%,h%,hwnd&,id&,%hinstance,$0100)
elseif dct$ = upper$("C")
button& = Control("BUTTON",text$,$54010000,x%,y%,w%,h%,hwnd&,id&,%hinstance,$0100)
endif
hpos& = height(button&) - 20
hpos& = int(hpos&/2)
hwid& = width(button&) -23' 3 pixel vom Rand weg + Icongröße
if (dct$ = upper$("R")) or (dct$ = upper$("C"))
st& = control("Static","",$50000003,3,hpos&,20,20,button&,0,%Hinstance)
else
st& = control("Static","",$50000003,hwid&,hpos&,25,20,button&,0,%Hinstance)
endif
Sendmessage(st&,$170,Icon&[himh&],0)
inc himh&
showbutton(st&)
return str$(button&) + "|" + str$(st&)
endproc
'Beispiel
cls
declare ende%,but$,but1&,static1&, but2&,static2&,but3&,static3&
ende% = 0
but$ = create("ITextbutton",%hwnd,"Test ",%hinstance,"A", 10,25,70,25,10,"R")
but1& = val(substr$(but$,1,"|"))
static1& = val(substr$(but$,2,"|"))
but$ = create("ITextbutton",%hwnd," Test",%hinstance,"Sand", 10,60,60,25,11,"L")
but2& = val(substr$(but$,1,"|"))
static2& = val(substr$(but$,2,"|"))
but$ = create("ITextbutton",%hwnd,"Test",%hinstance,"Wasser", 10,90,80,25,12,"C")'zentriert müssen die Buttons größer werden
but3& = val(substr$(but$,1,"|"))
static3& = val(substr$(but$,2,"|"))
usermessages 16
whilenot ende%
waitinput
case %UMessage = 16:ende% = 1
if clicked(but1&)
Messagebox("Hier1","",0)
showbutton(static1&)'nach jeder Aktion aufrufen sonst verschwindet das Icon
elseif clicked(but2&)
Messagebox("Hier2","",0)
showbutton(static2&)
elseif clicked(but3&)
Messagebox("Hier3","",0)
showbutton(static3&)
endif
endwhile
destroyobject2>()
end
|
| | | Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2 | 08.05.2011 ▲ |
| |
| | Jörg Sellmeyer | Na - como sería Yo aber sagen, el es klar una Bug y debería no solcher Workarounds bedürfen... |
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 08.05.2011 ▲ |
| |
| | Andreas Miethe
| Jörg Sellmeyer (08.05.11)
Na - como sería Yo aber sagen, el es klar una Bug y debería no solcher Workarounds bedürfen...
Das halte Yo no para una Bug. Wer una Control en un Control producido, el no dafür vorgesehen es, el muss se eigentlich no wundern, si una WM_PAINT hay no ankommt. Egal, si el Icon de uno Dll oder de el Exe kommt, el se fehlschlagen.
Abhilfe schafft, Autopaint während el Erzeugung en NULL, y danach otra vez en Standard a conjunto, oder el Button así a versorgen como lo esperado, con un Mapa de bits,Icon oder Texto. |
| | | Gruss Andreas ________ ________ ________ ________ _ Profan 3.3 - XProfanX2 Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher Homepage : [...] | 14.05.2011 ▲ |
| |
| | | Sehe Yo genauso. Das Programa es para el Neuzeichnen su Controls zuständig. Windows sagt sólo Bescheid, wann genau el stattfinden debería. Das se en el Code aber weder abgefragt, todavía darauf reagiert. |
| | | | |
|
RespuestaThemeninformationenDieses Thema ha 5 subscriber: |