 Jens-Arne Reumschüssel | allô zusammen,
ici gibt es maintenant Code pour une très deutlich verbesserte MessageBox, qui je ActionBox genannt habe. Alles ist dans reinem XProfan geschrieben.
ActionBoxen unterscheiden sich de MessageBoxen dadurch, dass - beliebig viele Buttons avec libre gewählter Aufschrift possible sommes - Text ab un certain Taille scrollbar ist - Text- et Hintergrundfarbe libre bestimmt volonté peut - qui Schriftart libre gewählt volonté peux - deux weitere Icônes zur Disposition stehen - libre wählbare Buttons seulement pour dem Scrollen entier pour unten aktiviert volonté peut - une libre gewählte WAV-Dossier comme Sound benutzt volonté peux - une selbst geschriebene PROC pour den Aider-Button benutzt volonté peux - cela alles, mon je, très simple trop handhaben ist
ici qui Code. si on ihn ausführt, bekommt on une Reihe de Beispielen angezeigt, qui qui Opportunités verdeutlichen.
STRUCT S_ACTIONBOX=Caption$(256),Text$(10001),pText&,TextXSize&,TextMaxYSize&,TextColor&,BkColor&,AnzButtons&,ButtonTexts$(10000),DefButton&,ButtonXSize&,DeactivateButtonsTillLastLineSeen%,Icon&,Sound&,hFont&,HelpButton&,pHelpProc&,HelpProcParam& STRUCT S_HELPINFO=cbSize&,iContextType&,iCtrlId&,hItemHandle&,dwContextId&,MousePosX&,MousePosY& declare _XMessageBox_TextColor&,_XMessageBox_BkColor&,_XMessageBox_hFont&,_XMessageBox_pHelpProc&,_XMessageBox_HelpProcParam& _XMessageBox_TextColor&=@rgb(0,0,0) _XMessageBox_BkColor&=@rgb(255,255,255) _XMessageBox_hFont&=0 _XMessageBox_pHelpProc&=0 _XMessageBox_HelpProcParam&=0
declare ab#,fn$,s$,i%
PROC ActionBox 'eigene MessageBox avec beliebigen Buttons, gescrolltem Text, beliebigen Farben et einem beliebigen Sound 'dim ab#,S_ACTIONBOX 'ab#.Caption$: Fensterüberschrift (peux être omis, ensuite ="Hinweis") 'ab#.Text$: Meldungstext avec un maximum 10000 marque (wird umgebrochen; Wörter, qui länger comme une la ligne sommes, volonté aufgeteilt) 'ab#.pText&: Pointer trop einem String avec einem beliebig langen Meldungstext (wird pris, si ab#.Text$="" et ab#.pText&<>0) 'ab#.TextXSize&: Breite des Textfeldes dans Pixeln (peux être omis, ensuite =400) 'ab#.TextMaxYSize&: maximale Hauteur des Textfeldes dans Pixeln (peux être omis, ensuite =500), pour Erreichen qui maximalen vertikalen Ausdehnung wird une Scrollbar benutzt 'ab#.TextColor&: Textfarbe (peux être omis, ensuite noir) 'ab#.BkColor&: Hintergrundfarbe (peux être omis, ensuite sais) 'ab#.AnzButtons&: Nombre de Buttons (peux être omis, ensuite un Ok-Button; si es gar aucun Buttons donner soll, sur -1 mettons) - un Aider-Button (siehe plus unten ab#.HelpButton&) wird pas dazugezählt! 'ab#.ButtonTexts$: Buttonbeschriftungen, par "|" getrennt - Den Text pour une eventuellen Aider-Button peux on comme letzten Text optionnel avec angeben (sonst wird "Aider" benutzt) 'ab#.DefButton&: numéro des Default-Buttons (peux être omis, ensuite qui erste Button; si es keinen Default-Button donner soll, sur -1 mettons) 'ab#.ButtonXSize&: Breite qui Buttons dans Pixeln (peux être omis, ensuite =100 bzw. =75 chez Default-Ok-Button) 'ab#.DeactivateButtonsTillLastLineSeen%: ici peut bitweise Buttons angegeben volonté, qui seulement aktiviert volonté, si qui Text jusqu'à zur letzten la ligne gescrollt wurde (Button 1: 1, Button 2: 2, Button 3: 4, Button 4: 8 etc.) 'ab#.HelpButton&: 1=fügt une Aider-Button hinzu (si cette geklickt wird, wird une ~WM_HELP-Message à l' Hauptfenster gesendet, wobei mir unklar ist, comment on qui auswerten peux, au cours de qui MessageBox cela Programme blockiert - Abhilfe: siehe direct ici drunter) 'ab#.pHelpProc: une avec @ProcAddr(...) ermittelte Einsprungadresse trop einer Procédure, qui aufgerufen wird, si qui Hilfebutton geklickt wird (cet PROC muss oui c'est ca une 4-Byte-paramètre avons) 'ab#.HelpProcParam&: un benutzerdefinierter paramètre, qui à qui HelpProc transfert wird 'ab#.Icon&: -1=kein Icon, 1=i, 2=?, 3=!, 4=X, 5=Security Shield, 6=Application Icon (peux être omis, ensuite =1 sans Sound) 'ab#.Sound&: 1=Windows-Sound convenable zum Icon, -1=kein Sound, 11-14=Sound comment chez Icon 1X, 15=Beep, >15=Pointer trop einem String avec einem Sound-Dateinamen (peux être omis, ensuite =1) 'cas ActionBox(ab#)=1: imprimer "Button 1 geklickt" 'dispose ab# '---------------------------------------------- 'Es reicht alors, seulement ab#.Text$ trop mettons, um un minimalistisches Hinweisfenster avec einem "i"-Icon et einem Ok-Button sans Sound trop conservé. '---------------------------------------------- 'Rückgabewert: numéro des angeklickten Buttons bzw. 0 chez Esc. et chez la fenêtre schließen ("X"-Button à droite dessus) parameters ab# declare a%,b%,c%,d%,i%,o%,b#,hD%,hB%[],meldungstext$,s$,s2$,s3$,lines$[],anzlines%,aktline%,workline$,ende%,aktword%,anzwords%,savedfont%,saveddialogfont%,yofs%,xsize%,ysize%,ret%,hF% declare xtextsize%,textrandsize%,xiconsize%,xbuttonsize%,ybuttonsize%,IconX1%,IconY1%,IconX2%,IconY2%,hVertScrollbar%,usevertscrollbar%,maxvscrollpos%,oldvscrollpos%,aktzeile%,oldfastmode%,hIcon% declare HelpInfo#,oldusermess16%,oldusermess522% oldfastmode%=@Set("FastMode",0) '{ 'Utilisateur Messages anlegen oldusermess16%=@IsUserMessage($10) si oldusermess16%=0 usermessages $10 endif oldusermess522%=@IsUserMessage(522) si oldusermess522%=0 usermessages 522 endif '} '{ 'Variablen füllen meldungstext$="" si ab#.Text$<>"" meldungstext$=ab#.Text$ elseif ab#.pText&<>0 meldungstext$=@string$(ab#.pText&,0) endif dim HelpInfo#,S_HELPINFO ret%=0 textrandsize%=10 hVertScrollbar%=0 usevertscrollbar%=0 oldvscrollpos%=0 anzlines%=0 hF%=@create("FONT","Segoe L'assurance-chômage",-12,0,0,0,0) '} '{ 'Default-Werte mettons, si pas angegeben si ab#.TextXSize&=0 ab#.TextXSize&=400 endif si ab#.TextMaxYSize&=0 ab#.TextMaxYSize&=500 endif si ab#.BkColor&=0 ab#.BkColor&=@rgb(255,255,255) endif si ab#.Icon&=0 ab#.Icon&=1 si ab#.Sound&=0 ab#.Sound&=-1 endif endif si ab#.Icon&>0 xiconsize%=50 d'autre xiconsize%=0 endif si ab#.Caption$="" ab#.Caption$="Hinweis" si ab#.Icon&=2 ab#.Caption$="Frage" elseif ab#.Icon&=3 ab#.Caption$="attention" elseif ab#.Icon&=4 ab#.Caption$="faute" endif endif si ab#.Sound&=0 ab#.Sound&=1 endif si ab#.ButtonXSize&=0 si ab#.AnzButtons&>0 ab#.ButtonXSize&=100 d'autre ab#.ButtonXSize&=75 endif endif si ab#.AnzButtons&=0 ab#.AnzButtons&=1 ab#.ButtonTexts$="Ok" endif si ab#.HelpButton& ab#.AnzButtons&=ab#.AnzButtons&+1 si @substr$(ab#.ButtonTexts$,ab#.AnzButtons&,"|")=0 si ab#.ButtonTexts$<>"" ab#.ButtonTexts$=ab#.ButtonTexts$+"|" endif ab#.ButtonTexts$=ab#.ButtonTexts$+"Aider" endif endif si ab#.AnzButtons&>0 si ab#.DefButton&=0 ab#.DefButton&=1 'si es keinen Default-Button donner soll, sur -1 mettons elseif ab#.DefButton&>ab#.AnzButtons& 'es wurde évident oublier qc, pour einer vorherigen ActionBox avec plus Buttons comme cette den DefButton so trop mettons, dass il trop cette ActionBox passt --> Button 1 prendre ab#.DefButton&=1 'si es keinen Default-Button donner soll, sur -1 mettons endif endif si ab#.hFont&=0 usefont "Segoe L'assurance-chômage",-12,0,0,0,0 d'autre SetGrafikFont ab#.hFont& endif '} xtextsize%=ab#.TextXSize& si ab#.Icon&<1 xtextsize%=xtextsize%+50 'xiconsize% endif xsize%=xiconsize%+textrandsize%+xtextsize%+textrandsize% xbuttonsize%=ab#.ButtonXSize& ybuttonsize%=25 savedfont%=@GetGrafikFont() '{ '"\t" dans six Spaces verwandeln meldungstext$=@translate$(meldungstext$,"\t"," ") '} si meldungstext$<>"" '{ 'Zeilenumbrüche ("\n") durchführen anzlines%=1 lines$[1]=meldungstext$ i%=1 tandis que i%<=anzlines% si @instr("\n",lines$[i%]) inc anzlines% for o%,anzlines%-1,i%+1,-1 lines$[o%+1]=lines$[o%] endfor 'o% s$=lines$[i%] lines$[i%]=@left$(s$,@instr("\n",s$)-1) lines$[i%+1]=@right$(s$,@len(s$)-@instr("\n",s$)-1) endif inc i% endwhile '} '{ 'text$ dans einzelne Zeilen aufteilen ende%=0 aktword%=0 aktline%=1 workline$=lines$[aktline%] anzwords%=@len(workline$," ") s$="" whilenot ende% si anzwords%=0 d'autre inc aktword% si @GetDrawStringLenX(s$+" "+@substr$(workline$,aktword%," "))<=xtextsize% cas s$<>"": s$=s$+" " s$=s$+@substr$(workline$,aktword%," ") d'autre si @GetDrawStringLenX(@substr$(workline$,aktword%," "))<=xtextsize% dec aktword% lines$[aktline%]=s$ inc anzlines% for i%,anzlines%-1,aktline%+1,-1 lines$[i%+1]=lines$[i%] endfor 'i% inc aktline% s$="" d'autre 'cela einzelne mot ist länger comme une la ligne: Buchstabe pour Buchstabe verkürzen et mot partager s2$=@substr$(workline$,aktword%," ") for i%,@len(s2$)-1,1,-1 si @GetDrawStringLenX(@left$(s2$,i%)+" ")<=xtextsize% s2$=@left$(s2$,i%)+" "+@right$(s2$,@len(s2$)-i%) pause endif endfor 'i% s3$="" for i%,1,anzwords% cas s3$<>"": s3$=s3$+" " si i%<>aktword% s3$=s3$+@substr$(workline$,i%," ") d'autre s3$=s3$+s2$ endif endfor 'i% workline$=s3$ dec aktword% inc anzwords% endif endif endif si aktword%=anzwords% si s$<>"" lines$[aktline%]=s$ endif si aktline%=anzlines% ende%=1 d'autre inc aktline% workline$=lines$[aktline%] anzwords%=@len(workline$," ") aktword%=0 s$="" endif endif endwhile '} endif '{ 'ggf. une zweite la ligne hinzufügen (avec Icon sieht seulement une la ligne doof aus) si ab#.Icon&>0 tandis que anzlines%<2 inc anzlines% lines$[anzlines%]="" endwhile endif '} '{ 'xsize% anpassen a%=0 for i%,1,anzlines% si lines$[i%]<>"" b%=@GetDrawStringLenX(lines$[i%]) si b%>a% a%=b% endif endif endfor 'i% xtextsize%=a%+textrandsize% xsize%=xiconsize%+textrandsize%+xtextsize%+textrandsize% si xsize%<(textrandsize%*(ab#.AnzButtons&+1))+(xbuttonsize%*ab#.AnzButtons&)+(2*@GetWindowThinBorderWidth()) xsize%=(textrandsize%*(ab#.AnzButtons&+1))+(xbuttonsize%*ab#.AnzButtons&)+(2*@GetWindowThinBorderWidth()) endif '} '{ 'yofs% & ysize& ermitteln yofs%=GetDrawStringLenY("X") si (anzlines%*yofs%)<=ab#.TextMaxYSize& ysize%=textrandsize%+(anzlines%*yofs%)+(textrandsize%*2)+ybuttonsize%+textrandsize%+(2*@GetWindowThinBorderWidth()) d'autre usevertscrollbar%=1 ysize%=textrandsize%+(ab#.TextMaxYSize&)+(textrandsize%*2)+ybuttonsize%+textrandsize%+(2*@GetWindowThinBorderWidth()) endif '} '{ 'xsize% à mögliche Scrollbar anpassen si usevertscrollbar% xsize%=xsize%+15 endif '} '{ 'Dialog aufbauen hD%=@create("DIALOG",%HWnd,ab#.Caption$,((%maxx\2)-(xsize%\2)),((%maxy\2)-(ysize%\2)),xsize%,ysize%) a%=@GetAbsWindowPosX1(hD%) b%=@GetAbsWindowPosY1(hD%) c%=@GetAbsWindowPosX2(hD%) d%=@GetAbsWindowPosY2(hD%) SetWindowPos hD%=a%,(b%-((ysize%-@height(hD%))\2))-(c%-a%),((d%-b%)+(ysize%-@height(hD%)));-1 saveddialogfont%=@GetDialogFont() SetDialogFont hF% Début de peinture hD% '{ 'Hintergrund malen 'cls @rgb(255,255,255) UseBrush 1,ab#.BkColor& '@rgb(255,255,255) USEP 0,0,ab#.BkColor& '@rgb(255,255,255) rectangle 0,0-@width(hD%),(@height(hD%)-textrandsize%-ybuttonsize%-textrandsize%) '} '{ 'Scrollbar erstellen si usevertscrollbar% hVertScrollbar%=@Créer("VScroll",hD%,"",@width(hD%)-15,0,15,textrandsize%+ab#.TextMaxYSize&+textrandsize%) maxvscrollpos%=anzlines%-(ab#.TextMaxYSize&\yofs%)+1 SetScrollRange hVertScrollbar%,1,maxvscrollpos% oldvscrollpos%=@GetScrollPos(hVertScrollbar%) endif '} '{ 'Icon zeichnen si ab#.Icon&>0 IconX1%=10 IconY1%=10 IconX2%=IconX1%+35 IconY2%=IconY1%+35 '{ 'JR-Icônes (selbst gezeichnet) - auskommentiert /* '{ '1=i si ab#.Icon&=1 UseBrush 1,@rgb(0,100,255) USEP 0,0,@rgb(0,0,0) ellipse IconX1%,IconY1%-IconX2%,IconY2% usefont "Times New Roman",30,0,1,0,0 textcolor @rgb(255,255,255),-1 drawtext IconX1%+((IconX2%-IconX1%)\2),IconY1%+1,"i",6 '} '{ '2=? elseif ab#.Icon&=2 UseBrush 1,@rgb(0,100,255) USEP 0,0,@rgb(0,0,0) ellipse IconX1%,IconY1%-IconX2%,IconY2% usefont "Times New Roman",30,0,1,0,0 textcolor @rgb(255,255,255),-1 drawtext IconX1%+((IconX2%-IconX1%)\2)+1,IconY1%+2,"?",6 '} '{ '3=! elseif ab#.Icon&=3 UseBrush 1,@rgb(255,220,0) USEP 0,2,@rgb(255,180,0) line IconX1%,IconY2%-(IconX1%+((IconX2%-IconX1%)\2)),IconY1% line (IconX1%+((IconX2%-IconX1%)\2)),IconY1%-IconX2%,IconY2% line IconX1%,IconY2%-IconX2%,IconY2% fill IconX1%+10,IconY2%-10,@rgb(255,180,0) usefont "Arial",30,0,1,0,0 textcolor @rgb(0,0,0),-1 drawtext IconX1%+((IconX2%-IconX1%)\2)+1,IconY1%+5,"!",6 '} '{ '4=X elseif ab#.Icon&=4 UseBrush 1,@rgb(255,0,0) USEP 0,0,@rgb(0,0,0) ellipse IconX1%,IconY1%-IconX2%,IconY2% usefont "Arial",30,0,1,0,0 textcolor @rgb(255,255,255),-1 drawtext IconX1%+((IconX2%-IconX1%)\2)+1,IconY1%+2,"X",6 '} */ '} '{ 'Windows-Icônes '{ '1=i si ab#.Icon&=1 hIcon%=@external("USER32.DLL","LoadIconA",0,32516) '32516=~IDI_INFORMATION drawicon hIcon%,IconX1%,IconY1% '} '{ '2=? elseif ab#.Icon&=2 hIcon%=@external("USER32.DLL","LoadIconA",0,32514) '32514=~IDI_QUESTION drawicon hIcon%,IconX1%,IconY1% '} '{ '3=! elseif ab#.Icon&=3 hIcon%=@external("USER32.DLL","LoadIconA",0,32515) '32515=~IDI_WARNING drawicon hIcon%,IconX1%,IconY1% '} '{ '4=X elseif ab#.Icon&=4 hIcon%=@external("USER32.DLL","LoadIconA",0,32513) '32513=~IDI_ERROR drawicon hIcon%,IconX1%,IconY1% '} '{ '5=Security Shield elseif ab#.Icon&=5 hIcon%=@external("USER32.DLL","LoadIconA",0,32518) '32518=~IDI_SHIELD drawicon hIcon%,IconX1%,IconY1% '} '{ '6=Application Icon elseif ab#.Icon&=6 'hIcon%=@external("USER32.DLL","LoadIconA",0,~IDI_APPLICATION) '~IDI_WINLOGO 'funktioniert beides pas richtig dim b#,10001 @external("KERNEL32.DLL","GetModuleFileNameA",0,b#,10000) hIcon%=@create("HICON",@string$(b#,0),0) dispose b# drawicon hIcon%,IconX1%,IconY1% DeleteObject hIcon% '} '} endif textcolor @rgb(0,0,0),-1 endif '} '{ 'Text écrivons si ab#.hFont&=0 usefont "Segoe L'assurance-chômage",-12,0,0,0,0 d'autre SetGrafikFont ab#.hFont& endif textcolor ab#.TextColor&,-1 aktzeile%=1 a%=aktzeile% si usevertscrollbar% b%=aktzeile%+((ab#.TextMaxYSize&\yofs%)-1) d'autre b%=anzlines% endif for i%,a%,b% drawtext xiconsize%+textrandsize%,textrandsize%+(yofs%*(i%-a%)),lines$[i%],0 endfor 'i% '} EndPaint '{ 'Buttons erstellen for i%,1,ab#.AnzButtons& si i%<>ab#.DefButton& hB%[i%]=@create("BUTTON",hD%,@substr$(ab#.ButtonTexts$,i%,"|"),@width(hD%)-(textrandsize%*(ab#.AnzButtons&-(i%-1)))-(xbuttonsize%*(ab#.AnzButtons&-(i%-1))),@height(hD%)-(ybuttonsize%+textrandsize%),xbuttonsize%,ybuttonsize%) d'autre hB%[i%]=@create("DEFBUTTON",hD%,@substr$(ab#.ButtonTexts$,i%,"|"),@width(hD%)-(textrandsize%*(ab#.AnzButtons&-(i%-1)))-(xbuttonsize%*(ab#.AnzButtons&-(i%-1))),@height(hD%)-(ybuttonsize%+textrandsize%),xbuttonsize%,ybuttonsize%) endif endfor 'i% si ab#.DefButton&>0 @setfocus(hB%[ab#.DefButton&]) endif si usevertscrollbar% for i%,1,ab#.AnzButtons& si (ab#.DeactivateButtonsTillLastLineSeen% & (2 ^ (i%-1)))=(2 ^ (i%-1)) enablewindow hB%[i%],0 endif endfor 'i% endif '} '{ 'Ton abspielen si ab#.Sound&=1 si ab#.Icon&=1 MessageBeep($40) '~MB_ICONASTERISK elseif ab#.Icon&=2 MessageBeep($20) '~MB_ICONQUESTION elseif ab#.Icon&=3 MessageBeep($30) '~MB_ICONEXCLAMATION elseif ab#.Icon&=4 MessageBeep($10) '~MB_ICONERROR elseif ab#.Icon&=5 MessageBeep($30) '~MB_ICONEXLAMATION endif elseif ab#.Sound&=11 MessageBeep($40) '~MB_ICONASTERISK elseif ab#.Sound&=12 MessageBeep($20) '~MB_ICONQUESTION elseif ab#.Sound&=13 MessageBeep($30) '~MB_ICONEXCLAMATION elseif ab#.Sound&=14 MessageBeep($10) '~MB_ICONERROR elseif ab#.Sound&=15 MessageBeep(0) '~MB_OK (Standard-Beep) elseif ab#.Sound&>15 PlaySound @string$(ab#.Sound&,0),1 endif '} '} '{ 'Eingabehandling ende%=0 whilenot ende% waitinput '{ 'Esc. bzw. la fenêtre schließen si (((@iskey(27)=1) or (%umessage=$10)) and (@external("USER32.DLL","GetForegroundWindow")=hD%)) ende%=1 ret%=0 tandis que @iskey(27) sleep 25 endwhile ClearKeyboardBuffer '} '{ 'Scrollbar elseif (usevertscrollbar%=1) and (@GetScrollPos(hVertScrollbar%)<>oldvscrollpos%) oldvscrollpos%=@GetScrollPos(hVertScrollbar%) Début de peinture hD% UseBrush 1,ab#.BkColor& '@rgb(255,255,255) USEP 0,0,ab#.BkColor& '@rgb(255,255,255) rectangle xiconsize%,textrandsize%-(xiconsize%+xtextsize%+textrandsize%),(textrandsize%+ab#.TextMaxYSize&) si ab#.hFont&=0 usefont "Segoe L'assurance-chômage",-12,0,0,0,0 d'autre SetGrafikFont ab#.hFont& endif textcolor ab#.TextColor&,-1 aktzeile%=oldvscrollpos% a%=aktzeile% b%=aktzeile%+((ab#.TextMaxYSize&\yofs%)-1) for i%,a%,b% drawtext xiconsize%+textrandsize%,textrandsize%+(yofs%*(i%-a%)),lines$[i% ],0 endfor 'i% EndPaint si usevertscrollbar% si oldvscrollpos%=maxvscrollpos% for i%,1,ab#.AnzButtons& si (ab#.DeactivateButtonsTillLastLineSeen% & (2 ^ (i%-1)))=(2 ^ (i%-1)) enablewindow hB%[i%],1 endif endfor 'i% endif endif '} '{ 'Mausrad elseif %uMessage=522 si &uwParam<0 'nach unten gedreht a%=@GetScrollPos(hVertScrollbar%) inc a% if a%>maxvscrollpos% a%=maxvscrollpos% endif if a%<>oldvscrollpos% oldvscrollpos%=a% SetScrollPos hVertScrollbar%,oldvscrollpos% StartPaint hD% UseBrush 1,ab#.BkColor& '@rgb(255,255,255) USEP 0,0,ab#.BkColor& '@rgb(255,255,255) rectangle xiconsize%,textrandsize%-(xiconsize%+xtextsize%+textrandsize%),(textrandsize%+ab#.TextMaxYSize&) si ab#.hFont&=0 usefont "Segoe L'assurance-chômage",-12,0,0,0,0 d'autre SetGrafikFont ab#.hFont& endif textcolor ab#.TextColor&,-1 aktzeile%=oldvscrollpos% a%=aktzeile% b%=aktzeile%+((ab#.TextMaxYSize&\yofs%)-1) for i%,a%,b% drawtext xiconsize%+textrandsize%,textrandsize%+(yofs%*(i%-a%)),lines$[i% ],0 endfor 'i% EndPaint si oldvscrollpos%=maxvscrollpos% for i%,1,ab#.AnzButtons& si (ab#.DeactivateButtonsTillLastLineSeen% & (2 ^ (i%-1)))=(2 ^ (i%-1)) enablewindow hB%[i%],1 endif endfor 'i% endif endif elseif &uwParam>0 'pour dessus gedreht a%=@GetScrollPos(hVertScrollbar%) dec a% si a%<1 a%=1 endif si a%<>oldvscrollpos% oldvscrollpos%=a% SetScrollPos hVertScrollbar%,oldvscrollpos% Début de peinture hD% UseBrush 1,ab#.BkColor& '@rgb(255,255,255) USEP 0,0,ab#.BkColor& '@rgb(255,255,255) rectangle xiconsize%,textrandsize%-(xiconsize%+xtextsize%+textrandsize%),(textrandsize%+ab#.TextMaxYSize&) si ab#.hFont&=0 usefont "Segoe L'assurance-chômage",-12,0,0,0,0 d'autre SetGrafikFont ab#.hFont& endif textcolor ab#.TextColor&,-1 aktzeile%=oldvscrollpos% a%=aktzeile% b%=aktzeile%+((ab#.TextMaxYSize&\yofs%)-1) for i%,a%,b% drawtext xiconsize%+textrandsize%,textrandsize%+(yofs%*(i%-a%)),lines$[i% ],0 endfor 'i% EndPaint endif endif '} '{ 'Buttons d'autre '{ 'normale Buttons si ab#.HelpButton&=0 a%=ab#.AnzButtons& d'autre a%=ab#.AnzButtons&-1 endif for i%,1,a% si @clicked(hB%[i%]) ende%=1 ret%=i% pause endif endfor 'i% '} '{ 'Help-Button si ende%=0 si ab#.HelpButton& si @clicked(hB%[ab#.AnzButtons&]) HelpInfo#.cbsize&=@sizeof(HelpInfo#) HelpInfo#.iContextType&=1 '1=~HELPINFO_WINDOW HelpInfo#.iCtrlId&=0 HelpInfo#.hitemhandle&=hD% HelpInfo#.dwContextId&=0 HelpInfo#.MousePosX&=@MouseAbsX() HelpInfo#.MousePosY&=@MouseAbsY() @sendmessage(%HWnd,83,0,HelpInfo#) '83=~WM_HELP si ab#.pHelpProc& SetWindowPos hD%=@GetAbsWindowPosX1(hD%),@GetAbsWindowPosY1(hD%)-(@GetAbsWindowPosX2(hD%)-@GetAbsWindowPosX1(hD%)),(@GetAbsWindowPosY2(hD%)-@GetAbsWindowPosY1(hD%));1 'ActionBox dans den Hintergrund befördern, là vous eigentlich topmost ist et un ggf. de qui HelpProc benutztes la fenêtre überdecken serait @call(ab#.pHelpProc&,ab#.HelpProcParam&) SetWindowPos hD%=@GetAbsWindowPosX1(hD%),@GetAbsWindowPosY1(hD%)-(@GetAbsWindowPosX2(hD%)-@GetAbsWindowPosX1(hD%)),(@GetAbsWindowPosY2(hD%)-@GetAbsWindowPosY1(hD%));-1 'ActionBox wieder topmost faire si @iskey(27) tandis que @iskey(27) sleep 25 endwhile ClearKeyboardBuffer endif endif endif endif endif '} '} endif endwhile '} '{ 'aufräumen @setfocus(%HWnd) @destroywindow(hD%) DeleteObject hF% SetGrafikFont savedfont% SetDialogFont saveddialogfont% dispose HelpInfo# '{ 'Utilisateur Messages wiederherstellen si oldusermess16%=0 usermessages -$10 endif si oldusermess522%=0 usermessages -522 endif '} @set("FastMode",oldfastmode%) '} return ret% ENDPROC 'ActionBox
PROC ActionBoxReset 'mets alle Werte einer ActionBox-Bereichsvariablen sur Standard zurück (pratique, si on qui Bereichsvariable weiterbenutzen voudrais et auparavant viele individuelle Einstellungen vorgenommen hat) parameters ab# @external("KERNEL32.DLL","RtlFillMemory",ab#,@sizeof(ab#),0) ENDPROC 'ActionBoxReset
PROC XMessageBox 'simuliert une Standard-MessageBox (gleiche paramètre et Ausgabewerte) avec den Vorteilen qui ActionBox; simple "MessageBox" im Code par "XMessageBox" ersetzen (et cet Prozeduren sowie qui globalen Struktur- et Variablendefinitionen prendre naturellement) 'il y a cinq globale Variablen, à Standard-Messageboxen doch un bisschen individuel gestalten trop peut: '_XMessageBox_TextColor&: Textfarbe (avec @RGB(...) trop erzeugen) '_XMessageBox_BkColor&: Hintergrundfarbe (avec @RGB(...) trop erzeugen) '_XMessageBox_hFont&: Schriftart (avec @Créer("FONT",...) trop erzeugen) '_XMessageBox_pHelpProc&: Einsprungadresse trop einer Help-Procédure, qui aufgerufen wird, si on den Aider-Button aktiviert et ihn geklickt hat (ist avec @procaddr(...) trop ermitteln; qui PROC muss oui c'est ca une 4-Byte-paramètre avons) '_XMessageBox_HelpProcParam&: un benutzerdefinierter paramètre, qui qui Help-Procédure transfert wird parameters text$,caption$,flags& declare ab#,ret& ret&=0 dim ab#,S_ACTIONBOX ab#.Caption$=caption$ ab#.pText&=@addr(text$) ab#.TextXSize&=325 ab#.TextColor&=_XMessageBox_TextColor& ab#.BkColor&=_XMessageBox_BkColor& si _XMessageBox_hFont& ab#.hFont&=_XMessageBox_hFont& endif '{ 'Flags auswerten '{ 'Buttons si (flags& & 5)=5 ab#.AnzButtons&=2 ab#.ButtonTexts$="Wiederholen|Abbrechen" elseif (flags& & 4)=4 ab#.AnzButtons&=2 ab#.ButtonTexts$="Ja|Nein" elseif (flags& & 3)=3 ab#.AnzButtons&=3 ab#.ButtonTexts$="Ja|Nein|Abbrechen" elseif (flags& & 1)=1 ab#.AnzButtons&=2 ab#.ButtonTexts$="OK|Abbrechen" elseif (flags& & 2)=2 ab#.AnzButtons&=3 ab#.ButtonTexts$="Abbrechen|Wiederholen|Ignorieren" endif si (flags& & 768)=768 ab#.DefButton&=4 elseif (flags& & 256)=256 ab#.DefButton&=2 elseif (flags& & 512)=512 ab#.DefButton&=3 d'autre ab#.DefButton&=1 endif '} '{ 'Icon si (flags& & 96)=96 ab#.Icon&=-1 ab#.Sound&=15 elseif (flags& & 64)=64 ab#.Icon&=1 elseif (flags& & 48)=48 ab#.Icon&=3 elseif (flags& & 16)=16 ab#.Icon&=4 elseif (flags& & 32)=32 ab#.Icon&=2 d'autre ab#.Icon&=-1 endif '} '{ 'Aider-Button si (flags& & 16384)=16384 ab#.HelpButton&=1 si _XMessageBox_pHelpProc& ab#.pHelpProc&=_XMessageBox_pHelpProc& ab#.HelpProcParam&=_XMessageBox_HelpProcParam& endif endif '} '} ret&=@ActionBox(ab#) '{ 'Ergebnis mappen si (flags& & 5)=5 'ab#.ButtonTexts$="Wiederholen|Abbrechen" si ret&=1 ret&=4 elseif ret&=2 ret&=2 endif elseif (flags& & 4)=4 'ab#.ButtonTexts$="Ja|Nein" si ret&=1 ret&=6 elseif ret&=2 ret&=7 endif elseif (flags& & 3)=3 'ab#.ButtonTexts$="Ja|Nein|Abbrechen" si ret&=1 ret&=6 elseif ret&=2 ret&=7 elseif ret&=3 ret&=2 endif elseif (flags& & 1)=1 'ab#.ButtonTexts$="OK|Abbrechen" si ret&=1 ret&=1 elseif ret&=2 ret&=2 endif elseif (flags& & 2)=2 'ab#.ButtonTexts$="Abbrechen|Wiederholen|Ignorieren" si ret&=1 ret&=3 elseif ret&=2 ret&=4 elseif ret&=3 ret&=5 endif endif '} dispose ab# return ret& ENDPROC 'XMessageBox
PROC pHelpProc 'wird vom Aider-Button einer ActionBox aufgerufen 'ici peux malheureusement aucun weitere ActionBox benutzt volonté! cela gäbe Variablenkonflikte. si on cela absolument voudrais, muss on qui ActionBox-Proc hierfür duplizieren (z.B. comme PROC ActionBox2). parameters hActionBox& 'benutzerdefinierter paramètre (ab#.HelpProcParam& im Hauptprogramm), wird ici pas plus benutzt - hilfreich z.B., si on sur verschiedene ActionBoxes avec unterschiedlicher Aider réagir voudrais (ginge naturellement aussi avec separaten Procs) @MessageBox("Aider-Procédure aufgerufen. Vermutlich ist une DLL défaut.\n\nKeine panique, ca ist seulement une Simulation.","Aider-Procédure",64) ENDPROC 'pHelpProc
'{ 'Hilfsfunktionen: PROC MessageBeep '{ 'mögliche Werte pour flag ' Value Meaning ' ' 0xFFFFFFFF A simple beep. Si le sound card is not available, le sound is generated using le speaker. ' ' MB_ICONASTERISK ' 0x00000040L ' See MB_ICONINFORMATION. ' ' MB_ICONEXCLAMATION ' 0x00000030L ' See MB_ICONWARNING. ' ' MB_ICONERROR ' 0x00000010L ' The sound specified as le Windows Critical Stop sound. ' ' MB_ICONHAND ' 0x00000010L ' See MB_ICONERROR. ' ' MB_ICONINFORMATION ' 0x00000040L ' The sound specified as le Windows Asterisk sound. ' ' MB_ICONQUESTION ' 0x00000020L ' The sound specified as le Windows Question sound. ' ' MB_ICONSTOP ' 0x00000010L ' See MB_ICONERROR. ' ' MB_ICONWARNING ' 0x00000030L ' The sound specified as le Windows Exclamation sound. ' ' MB_OK ' 0x00000000L ' The sound specified as le Windows Default Beep sound. '} parameters flag& declare pc& pc&=%pcount si pc&=0 flag&=$FFFFFFFF endif @external("USER32.DLL","MessageBeep",flag&) ENDPROC 'MessageBeep PROC GetGrafikFont 'gibt aussi chez qui Systemschriftart un gültiges Handle zurück (et pas 0); cela peux später aussi wieder zum mettons benutzt volonté parameters HDC& declare a&,pc& pc&=%PCount si pc&=0 HDC&=%HDC endif a&=@external("GDI32.DLL","GetCurrentObject",HDC&,6) '6=~obj_font return a& ENDPROC 'GetGrafikFont PROC SetGrafikFont parameters hF%,HDC& 'hF% peux pas 0 pour Systemfont son, mais naturellement un avec GetSystemFont ermitteltes Handle. avec cette Funktion peux on »usefont hF%« realisieren, quoi Profan pas peux (chez usefont muss toujours dur qui Schriftartspezifikation angegeben volonté). declare a&,pc& pc&=%PCount si pc&=1 HDC&=%HDC endif a&=@external("GDI32.DLL","SelectObject",HDC&,hF%) return a& ENDPROC 'SetGrafikFont PROC GetDrawStringLenX 'ermittelt qui horizontale Ausdehnung de TrueType-Text parameters s$ declare b#,ret& dim b#,8 si @external("GDI32.DLL","GetTextExtentPoint32A",%HDC,@addr(s$),@len(s$),b#)=1 ret&=@long(b#,0) d'autre ret&=0 endif dispose b# return ret& ENDPROC 'GetDrawStringLen PROC GetDrawStringLenY 'ermittelt qui vertikale Ausdehnung de TrueType-Text parameters s$ declare b#,ret& dim b#,8 si @external("GDI32.DLL","GetTextExtentPoint32A",%HDC,@addr(s$),@len(s$),b#)=1 ret&=@long(b#,4) d'autre ret&=0 endif dispose b# return ret& ENDPROC 'GetDrawStringLen PROC GetAbsWindowPosX1 'ermittelt qui linke obere absolute Fensterposition parameters hW& declare b#,ret& dim b#,4*4 @external("user32.dll","GetWindowRect",hW&,b#) ret&=@long(b#,0) dispose b# return ret& ENDPROC 'GetAbsWindowPosX1 PROC GetAbsWindowPosY1 parameters hW& declare b#,ret& dim b#,4*4 @external("user32.dll","GetWindowRect",hW&,b#) ret&=@long(b#,4) dispose b# return ret& ENDPROC 'GetAbsWindowPosY1 PROC GetAbsWindowPosX2 'Es wird qui absolute Position ermittelt! Pour Breite/Hauteur GetWindowSpan verwenden! parameters hW& declare b#,ret& dim b#,4*4 @external("user32.dll","GetWindowRect",hW&,b#) ret&=@long(b#,8) dispose b# return ret& ENDPROC 'GetAbsWindowPosX2 PROC GetAbsWindowPosY2 'Es wird qui absolute Position ermittelt! Pour Breite/Hauteur GetWindowSpan verwenden! parameters hW& declare b#,ret& dim b#,4*4 @external("user32.dll","GetWindowRect",hW&,b#) ret&=@long(b#,12) dispose b# return ret& ENDPROC 'GetAbsWindowPosY2 PROC GetWindowThinBorderWidth declare erg& erg&=@external("user32.dll","GetSystemMetrics",7) '~SM_CXFIXEDFRAME=7 return erg& ENDPROC 'GetWindowThinBorderWidth PROC GetDialogFont 'gibt un Handle zur aktuell gesetzten DialogFont zurück (0, si le Systemschriftart eingestellt ist) declare dummycontrol%,hF% dummycontrol%=@create("TEXT",%HWnd,"",0,0,0,0) hF%=@sendmessage(dummycontrol%,49,0,0) '49=~wm_getfont @destroywindow(dummycontrol%) return hF% ENDPROC 'GetDialogFont PROC ClearKeyboardBuffer tandis que @inkey$()<>"" endwhile ENDPROC 'ClearKeyboardBuffer PROC MouseAbsX 'absolute x-Mausposition Déclarer Point#,XX& Faible Point#,8 @external("user32.dll","GetCursorPos",Point#) XX&=@long(Point#,0) Dispose Point# Retour XX& ENDPROC 'MouseX PROC MouseAbsY 'absolute y-Mausposition Déclarer Point#,YY& Faible Point#,8 @external("user32.dll","GetCursorPos",Point#) YY&=@long(Point#,4) Dispose Point# Retour YY& ENDPROC 'MouseY '}
'Hauptprogramm: cls dim ab#,S_ACTIONBOX '{ 'simple ActionBox avec entier wenig Programmieraufwand ab#.text$="ca ist une entier simple Actionbox avec seulement einem Button.\n\nSie nécessaire seulement une définition, nämlich den anzuzeigenden Text." imprimer "Button: "+@str$(@actionbox(ab#)) '} '{ 'Actionbox avec trois benutzerdefinierten Buttons ActionBoxReset(ab#) 'mets alle Werte sur Standard zurück ab#.text$="cet ActionBox hat trois Buttons, en Text libre gewählt volonté peux.\n\nDer Rückgabewert ist qui geklickte Button ou bien 0 im piège de Esc. ou bien la fenêtre schließen (\qX\q à droite dessus)." ab#.AnzButtons&=3 ab#.ButtonTexts$="Button 1|Button 2|Button 3" imprimer "Button: "+@str$(@actionbox(ab#)) '} '{ 'Actionbox avec trois benutzerdefinierten Buttons, einer definierten Titelzeile et einem definierten Icon ActionBoxReset(ab#) ab#.Caption$="eigene Überschrift" ab#.text$="cet ActionBox hat erneut trois Buttons, diesmal une definierte Titelzeile et un definiertes Icon, welches vom Standard-Windowston begleitet wird.\n\nDies ist bewusst même chose Icon, cela chez den bisherigen ActionBoxes verwendet wurde. Allerdings wird diesmal qui passende Sound en supplément gespielt, weil cela Icon explizit gesetzt wurde." ab#.AnzButtons&=3 ab#.ButtonTexts$="Button 1|Button 2|Button 3" ab#.Icon&=1 imprimer "Button: "+@str$(@actionbox(ab#)) '} '{ 'nochmal avec anderem Icon ActionBoxReset(ab#) ab#.Caption$="eigene Überschrift" ab#.text$="même chose nochmal, seulement avec anderem Icon.\n\nEs gibt six en (statt qui aus Profan bekannten quatre):\n- .Icon&=1: \qi\q\n- .Icon&=2: \q?\q (sans Ton, Windows hat pour keinen (plus))\n- .Icon&=3: \q!\q\n- .Icon&=4: \qX\q\n- .Icon&=5: Security Shield\n- .Icon&=6: Programme-Icon\n\n\ il y a dans cette ActionBox maintenant aussi une vom ersten abweichenden Default-Button.\n\n\ on ist incidemment pas à qui Windows-Sounds attaché, mais peux, si on voudrais, une völlig libre wählbaren Sound beim Öffnen qui ActionBox abspielen (aus einer beliebigen WAV-Dossier)." ab#.AnzButtons&=3 ab#.ButtonTexts$="Button 1|Button 2|Button 3" ab#.DefButton&=2 ab#.Icon&=3 imprimer "Button: "+@str$(@actionbox(ab#)) '} '{ 'avec très langem Text, qui gescrollt wird ActionBoxReset(ab#) ab#.Caption$="ActionBox avec scrollbarem Text" ab#.text$="ici gibt es très viel Text. Anstatt qui Box toujours größer trop faire, comment Windows es 1faire serait, gibt es ici une Maximalgröße, ab qui qui Text scrollbar gemacht wird. cela Textfeld ist standardmäßig maximum 500 Pixel hoch, c'est mais naturellement einstellbar.\n\nHier wird \ diesmal cela neue Security Shield-Icon de Windows verwendet. très brauchbar z.B. pour qui annonce, dass une Mot de passe-Abfrage fehlgeschlagen ist.\n\n\ Es était trop merken, dass qui Berechnung qui Zeilenumbrüche une fühlbare Zeit gedauert hat (jusqu'à qui ActionBox angezeigt wurde). je pourrait naturellement une DLL écrivons, qui cela plus rapide erledigt, mais aujourd'hui dachte je, dass reines XProfan sans Schnickschnack et weitere \ Fichiers aussi la fois wieder entier entspannend pour alle wäre. ;-)\n\n\ entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. \ entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. \ entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. \ entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. \ entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. \ entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. \ entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. \ entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. \ entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. \ entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. \ entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. \ entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. \ entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text.\n\nUngefähr zur Moitié là.\n\n \ entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. \ entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. \ entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. \ entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. \ entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. \ entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. \ entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. \ entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. \ entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. \ entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. \ entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. \ entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text.\n\nUnten arrivé!" ab#.AnzButtons&=3 ab#.ButtonTexts$="Button 1|Button 2|Button 3" ab#.DefButton&=2 ab#.Icon&=5 imprimer "Button: "+@str$(@actionbox(ab#)) '} '{ 'ausgewählte Buttons volonté seulement anklickbar, si on den Text jusqu'à pour unten gescrollt hat ActionBoxReset(ab#) ab#.Caption$="ActionBox avec scrollbarem Text et zunächst deaktivierten Buttons" ab#.text$="Diesmal ist qui 3. Button zunächst deaktiviert. seulement ensuite, si qui Benutzer den Text entier pour unten gescrollt (et hoffentlich gelesen) hat, wird cette Button aktiviert. So ist z.B. une Lizenzvereinbarung avant Aktivierung des Installationsbuttons entier léger trop realisieren.\n\n\ entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. \ entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. \ entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. \ entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. \ entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. \ entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. \ entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. \ entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text.\n\nUngefähr zur Moitié là.\n\n \ entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. \ entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. \ entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. \ entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. \ entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. \ entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. \ entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. \ entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text. entier viel Text.\n\nUnten arrivé. qui installation peux eh bien gestartet volonté." ab#.AnzButtons&=3 ab#.ButtonTexts$="Zurück|Abbruch|Installieren" ab#.DefButton&=2 ab#.DeactivateButtonsTillLastLineSeen%=4 'qui zunächst deaktivierten Buttons volonté bitweise transfert (Button 1=1, Button 2=2, Button 3=4, Button 4=8 usw.) imprimer "Button: "+@str$(@actionbox(ab#)) '} '{ 'Fehlermeldungs-ActionBox avec rotem Hintergrund et großer Schrift ActionBoxReset(ab#) ab#.Caption$="Fehlermeldungs-ActionBox avec rotem Hintergrund et großer Schrift" ab#.text$="FEHLER!\n\nDie Dossier Blablub.dll wurde pas trouvé. ses sélection:" ab#.AnzButtons&=3 ab#.ButtonTexts$="Wiederholen|Übergehen|Abbrechen" ab#.DefButton&=3 ab#.hFont&=@create("Font","Arial",20,0,1,0,0) ab#.TextColor&=@rgb(255,255,255) ab#.BkColor&=@rgb(200,0,0) ab#.Icon&=4 imprimer "Button: "+@str$(@actionbox(ab#)) DeleteObject ab#.hFont& '} '{ 'Fehlermeldungs-ActionBox avec Aider-Button ActionBoxReset(ab#) ab#.Caption$="Fehlermeldungs-ActionBox avec rotem Hintergrund et Aider-Button" ab#.text$="eh bien gibt es une zusätzlichen Aider-Button. ca est un spezieller Button, qui une benutzerdefinierte Funktion aufruft, dans qui on alles anstellen peux, quoi on voudrais, um weitere Hilfestellung trop einer annonce trop leisten.\n\nBei qui Standard-MessageBox wird demgegenüber lediglich \ une ~WM_HELP-Message gesendet, qui on malheureusement pas Travailler peux, au cours de qui MessageBox cela System blockiert.\n\n\nFEHLER!\n\nDie Dossier Blablub.dll wurde pas trouvé. ses sélection:" ab#.AnzButtons&=3 'Es bleibt chez 3 selbst definierten Buttons! qui Aider-Button wird automatisch hinzugefügt. ab#.HelpButton&=1 'qui Aider-Button wird aktiviert. ab#.pHelpProc&=@ProcAddr("pHelpProc",1) 'qui Einsprung-Adresse pour qui benutzerdefinierte Aider-Procédure wird défini. ab#.HelpProcParam&=0 'peux irgendein selbst gewählter paramètre son. ab#.ButtonTexts$="Wiederholen|Übergehen|Abbrechen|HILF MIR!!!" 'qui Text pour den Aider-Button peux cependant comme dernier Text hinzugefügt volonté. Anderenfalls wird "Aider" benutzt. ab#.DefButton&=3 ab#.TextColor&=@rgb(255,255,255) ab#.BkColor&=@rgb(200,0,0) ab#.Icon&=4 imprimer "Button: "+@str$(@actionbox(ab#)) @ProcAddr("pHelpProc",-1) 'qui ProcAddr wieder freigeben, weil on peut-être encore autre im Programme verwenden voudrais (je Parameterzahl gibt es seulement 5 freie Plätze) '} '{ 'XMessageBoxen ActionBoxReset(ab#) ab#.Caption$="XMessageBoxen" ab#.text$="Um bisher bestehenden Code léger à ActionBoxen anpassen trop peut, gibt es qui Procédure »XMessageBox«. cet appelez interne une ActionBox sur, mais so, dass on dieselben trois paramètre comment chez qui Standard-XProfan-MessageBox verwenden peux et aussi dieselben Rückgabewerte erhält. \ on muss seulement »MessageBox« im Code par »XMessageBox« ersetzen. avec dem Füllen de Werten dans qui Struktur qui ActionBox-Bereichsvariable muss on sich dabei alors pas beschäftigen.\n\n\ cet Funktion ist naturellement sur qui Standard-Buttontexte et -Rückgabewerte beschränkt. mais il peut avec cinq globalen Variablen immerhin qui Text- et Hintergrundfarbe sowie qui Schriftart libre choisir. aussi qui libre programmierbare Hilfeprozedur wird soutenu.\n\n\ si on alle MessageBoxen dans einem Programme z.B. avec einem sanften lindgrün comment dans cette Box unterlegt, hebt on sich déjà einmal gewaltig de presque allen anderen Programmen ab.\n\n\ Aider findet sich trop Beginn qui Procédure comme Kommentare.\n\n\ chez cette ActionBox wurde incidemment qui normale Windows-Standard-Beep comme Sound gewählt. cette Klang est un anderer comme qui Standardton pour cela aktuell gewählte Icon." ab#.BkColor&=@rgb(200,220,100) ab#.Icon&=1 ab#.Sound&=15 imprimer "Button: "+@str$(@actionbox(ab#)) '} '{ 'zum Schluss encore une avertissement (seulement une ActionBox zur Zeit) ActionBoxReset(ab#) ab#.Caption$="avertissement et Ende des Tutoriels" ab#.text$="Zum Schluss encore une avertissement:\n\nEs darf toujours seulement une ActionBox zur Zeit donner, sonst gibt es Variablenkonflikte. c'est im Normalfall überhaupt ne...aucune Problem. mais dans qui Subclassproc sollte on qui ActionBox vorsichtshalber wohl lieber pas benutzen.\n\n\ eh bien mais viel Amusement avec den neuen Opportunités! qui qui ActionBox benutzen voudrais, packt sich qui Struktur- et Variablendeklarationen sowie qui Prozeduren am besten dans un INC-Dossier. ici habe je alles hintereinander weg geschrieben, avec cela un einziger \ Sourcecode pour qui Veröffentlichung reicht.\n\nBeste Grüße, Jens-Arne\n\nAnregungen et Hinweise: jreumsc@web.de" ab#.BkColor&=@rgb(255,255,0) ab#.Icon&=3 imprimer "Button: "+@str$(@actionbox(ab#)) '} imprimer:imprimer "Zum finissons bouton drücken ou bien Mausklick." dispose ab# waitinput end
|
|