Incluye | | | | Ragnar Rehbein | Kurze Einleitung a extendedbuttons.inc Yo gehöre a el zwar pequeño aber hartgesottenen gemeinde el Visual Windows Prof. 2 a programmentwicklung no missen möchten. todos projetkte el una oberfläche haben voluntad con VWP2 erstellt. lo könne cualquier fensterelemente erstellt umbenannt movido voluntad etc. sin en irgendeiner weise en el quelltest eingreifen tener. aber auch para el fangemeinde des Object Creator 4.1 kann esta include nützlich ser. desafortunadamente son el möglichkeiten a buttongestaltung bastante eingeschränkt. con el skcontrol.dll ha uno dagegen tolle möglichkeiten. el benutzung bedeutet sin embargo jedesmal manuellen eingriff en el quelltext, si una element movido oder en el größe geändert se.
mi idee war nun folgende: Yo una include geschrieben, el una überblenden de beliebigen controls ermöglicht.
uno erstellt Entonces, ¿cómo gewohnt (z.b. con VWP2) seine oberfläche con el buttons. z.b. puede ser nun con extbut#.hoverbutton(addr(Button1&)) de el button1 una hoverbutton zaubern. el methode bekommt el adresse el variablen übermittelt, el el handle de button1 enthält. ellos stellt entonces el größe y lage des button1 fest. Luego se el buttontext geholt. Luego se el button1 zerstört. Luego se con el skcontrol.dll una hoverbotton a el gleichen position y identischer größe erstellt. y a guter letzt se el neue handle en el alten variablen button1& gespeichert. Yo kann also más con el variablen button1& trabajo, el nun el handle des hoverbuttons enthält.
Yo kann also en una programm el 10 buttons ha por el hinzufügen de sólo 13 zeilen quelltext, de allen buttons hoverbuttons hacer. el aussehen restos unverändert, kein quelltext muß geändert voluntad.
verschiebe Yo buttons en meiner entwicklungsumgebung oder ändere größen, wirkt se el inmediatamente sin más aufwand en el hoverbuttons de. después de el prinzip kann Yo beliebige elemente, el sólo como platzhalter dienen con otro incluso definierten überblenden. auch para el positionierung de listviews con franks listview.dll hervorragend geeignet !!
nachfolgend el quelltext y una kurzen codeschnipsel para el syntax. KompilierenMarcaSeparación $I SKControl.inc
Def GetWindowRect(2) !"USER32", "GetWindowRect"
Def GetWindowRgn(2) !"USER32", "GetWindowRgn"
DEF MapWindowPoints(4) ! "USER32", "MapWindowPoints"
Def GetSysColor(1) !"USER32","GetSysColor"
class extbuttons = bcolor&, farbe des buttons
tcolor&, farbe der schrift
hfont&, fonthandle von create font
x&, koordinate
y&,
sx&, breite des buttons
sy&,
skdll_init@,
skdll_deinit@,
hskdll&,
get_bdimension@, buttondimension ermitteln und umrechnen rückgabe gettext des buttons
hoverbutton@,
colorhoverbutton@,
colorhoverimagebutton@,
setcolor@,
setfont@,
dateedit@
proc extbuttons.skdll_init
declare .hskdll&
.hskdll& = UseDll("SKControl.dll")
if .hskdll& = 0
MessageBox("SKControl.dll konnte nicht geladen werden","Fehler",48+4096)
end
endif
SKCtrl_InitDll() Dll initialisieren...
endproc
----------------auf jeden fall vor beenden des programms ausführen--------------
proc extbuttons.skdll_deinit
SKCtrl_DeInitDll()
FreeDll .hskdll&
endproc
--------------nur ne hilfsfunktion-----------------------------------------
proc extbuttons.get_bdimension
parameters bhadr&
declare bh&,bt$,adr&,b#
dim b#,16
bh& = long(bhadr&,0)
GetWindowRect(bh&,b#)
MapWindowPoints(0,%hwnd,b#,2)
bt$ = gettext$(bh&)
DestroyWindow(bh&)
.x& = Long(b#,0)
.y& = Long(b#,4)
.sx& = Long(b#,8)-Long(b#,0)
.sy& = Long(b#,12)-Long(b#,4)
dispose b#
return bt$ buttontext
endproc
-----------um farben für colorbutton zu setzen, gilt dann für alle nachfolgenden buttons---------
proc extbuttons.setcolor
parameters tcolor&,bcolor&
.tcolor& = tcolor&
.bcolor& = bcolor&
endproc
----------------erklärt sich wohl alleine----------------------------------
proc extbuttons.setfont
parameters font$,höhe&,breite&,fett&,kursiv&,unterstrichen&
.hfont& = CreateFont("Arial",höhe&,breite&,fett&,kursiv&,unterstrichen&)
endproc
----------------------------------------------------------------------------
proc extbuttons.hoverbutton
parameters bhadr& speicheradresse des buttonhandles
declare bt$
bt$ = .get_bdimension(bhadr&)
long bhadr&,0=SKCtrl_CreateHoverButton(%hwnd,addr(bt$),.x&,.y&,.sx&,.sy&, %hInstance)
setfont long(bhadr&,0),.hfont&
endproc
----------------------------------------------------------------------------
proc extbuttons.colorhoverbutton
parameters bhadr& speicheradresse des buttonhandles
declare bt$
bt$ = .get_bdimension(bhadr&)
long bhadr&,0=SKCtrl_CreateClrHoverButton(%hwnd,addr(bt$),.tcolor&,.bcolor&,.x&,.y&,.sx&,.sy&, %hInstance)
setfont long(bhadr&,0),.hfont&
endproc
------------------imagehandle& ist optional--------------------------------
proc extbuttons.colorhoverimagebutton
parameters bhadr&,image$,pos&,imagehandle& speicheradresse des buttonhandles
declare bt$,ico&,hndl&
bt$ = .get_bdimension(bhadr&)
case right$(lower$(image$),4) = ".ico" : ico& = 1
case pos& = 1 : .sx& = -.sx& rechts daneben
case pos& = 2 : .sy& = -.sy& unten
if pos& = 3 oben
.sx& = -.sx&
.sy& = -.sy&
endif
if imagehandle& <> 0
hndl& = 1 noch nicht fertig
else
imagehandle& = addr(image$)
endif
long bhadr&,0=SKCtrl_CreateClrHvrImageButton(%hwnd,imagehandle&,addr(bt$),ico&,hndl&,.tcolor&,.bcolor&,.x&,.y&,.sx&,.sy&, %hInstance)
setfont long(bhadr&,0),.hfont&
endproc
-------------------------------macht aus einem bel. control ein dataedit----------------
proc extbuttons.dateedit
parameters bhadr&
.get_bdimension(bhadr&)
long bhadr&,0 = Create("DateEdit",%hwnd class=s3>"",.x&,.y&,.sx&,.sy& )
ENDPROC
auszug a anwendung: KompilierenMarcaSeparacióndeclarar extbut#
dim extbut#,extbuttons
..... buttondefinitionen etcétera
Proc Form1OnInit
extbut#.skdll_init()
ENDPROC
Proc Form1OnShow
extbut#.setcolor(0,getsyscolor(15)+rgb(10,10,10))
extbut#.setfont(Arial,16,0,0)
extbut#.hoverbutton(addr(Button1&))
extbut#.colorhoverimagebutton(addr(Button2&),"liste.ico")
extbut#.colorhoverimagebutton(addr(Button3&),"liste.ico")
extbut#.colorhoverimagebutton(addr(Button4&),"leer.ico")
ENDPROC
encima una feedback sería Yo mich freuen. auch fragen a VWP2 beantworte Yo gern.
r.r. |
| | | | |
| | | Hmmm klinkt toll, also entweder bin Yo mächtig beschränkt, oder simplemente sólo no up-to-date. Yo schnalle a manchen Temas hier wirklich garnix. Sei No böse deshalb, pero yo habe no wirklich kappiert Yo esta Inc nutzbringend anwende, also Yo mi se el inc qué daran ändern, el uno después de-como-antes seine Buttons simplemente anlegt como bisher? Yo glaube el Inc birgt algo Geniales insich, pero yo begreife lo sólo no.
Nixkappier, IF |
| | | | |
| | Ragnar Rehbein | Yo weiß sí no, como du deine buttons anlegst ? si du alles sólo hard codiert inkl. el koordinaten en el quelltext reinhämmerst, necesidad du el inc no. si du sin embargo con un tools, deine oberflächen quasi por drag and drop erstellst (z.b. con VWP2, así en delphi), wirst du determinar, daß el möglichtkeiten el disponible controls no siempre ausreichen. con dieser inc erhält uno el möglichkeit el gesamte projekt siempre voll grafisch Editar a puede, sin embargo propio controls a benutzen. el buttons dienen quasi sólo como platzhalter, el a laufzeit ausgetauscht voluntad. el eigenschaften el erstellten controls voluntad vererbt y el eltern entonces gekillt . Yo saber con XProfan no einfachere methode en rápidamente y flexibel !!! oberflächen a redactar.
r.r. |
| | | | |
| | | Argh ahora habs ego verstanden. Nunja, klar, also Yo bin así una Code-Einhämmerer como Usted sí así schön meintest, Controls con uno GUI redactar/positionieren es para mich una Grauß. Es para mich vergleichbar con el Arbeiten con Frontpage & Co. en Htmls a redactar, qué me auch no en el Kopf ir mag. Como lob Yo el Präzision de Notepad.
Spielt hier pero no Papel, Yo Sinn y Bedeutung Deiner Inc ahora verstanden (Yo weiß auch el el nix con GUI a tun ha), y esta auch ausprobiert. Yo finde el Concepto supahh!
IF |
| | | | |
|
RespuestaThemeninformationenDieses Thema ha 2 subscriber: |