**** Hiermit können bis zu 40 (0-39) MultiEdits auf Statics erzeugt und zerstört werden ****
Befehle: cMEDwStc(ControlNr&,dHndl&,EditArt&,Text$,x&,y&,cx&,cy&,zusatzStil&)
--> erstsellt Edits auf einem Static (macht das Edit Unabhängig vom übergeordneten Fenster!)
-- ControlNr& = Nummer des Controls (0-39 beginnt bei 0 & wird immer um eins erhöht)
-- dHndl& = Handle des übergeordneten Dialogs
-- EditArt& = 0 => MultiEdit / 1 => RichEdit
-- Text$ = erster Text der im Edit erscheinen soll sonst =>
-- zusatzStil& = bei 1 => wird nur das Static mit hellem Hintergrund erzeugt,
das dient zum Platzieren des Controls (Entwicklung) sonst => 0
KillMEDwStc(MaxControlNr&)
--> Killt alle mit cMEDwStc erstellten Controls
-- MaxControlNr& = die höchste Control Nummer (bei 2 erzeugten also 1)
gStcHandl(ControlNr&)
--> gibt das Handle des Controls (Static mit ControlNr&) zurück
gMedHandl(ControlNr&)
--> gibt das Handle des Controls (Edit mit ControlNr&) zurück
DEF ASetParent(2) ! USER32,SetParent
Declare MED1&[40,2] MED1&[CtrlNr&,0] = Static Handle / MED1&[CtrlNr&,1] = Edit Handle
Clear MED1&[]
Proc cMEDwStc erstsellt Edits auf einem Static (macht das Edit Unabhängig vom übergeordneten Fenster!)
Parameters CtrlNr&,dHndl&,Art&,Txt$,x&,y&,cx&,cy&,zStil&
Case Lt(CtrlNr&,0) Or Gt(CtrlNr&,39): Return -1
Case Lt(Art&,0) Or Gt(Art&,1): Return -1
Case Lt(zStil&,0) Or Gt(zStil&,1): Return -1
Case Equ(zStil&,1): zStil& = $06
Declare erg$
MED1&[CtrlNr&,0] = Control(Static,,Or($D0000120,zStil&),x&,y&,cx&,cy&,dHndl&,Add($a8000,CtrlNr&),0) StaticUnterlage
ASetParent(MED1&[CtrlNr&,0],dHndl&)
IfNot (zStil& = 6)
MED1&[CtrlNr&,1] = Control(Edit,,$50B000C4,0,0,cx&,cy&,MED1&[CtrlNr&,0],Add($a8000,CtrlNr&),0,$000200) EditMultiline
Case (Art& = 0): MED1&[CtrlNr&,1] = Create(MultiEdit,MED1&[CtrlNr&,0],Txt$,0,0,cx&,cy&)
Case (Art& = 1): MED1&[CtrlNr&,1] = Create(RichEdit,MED1&[CtrlNr&,0],Txt$,0,0,cx&,cy&)
EndIf
Case Lt(MED1&[CtrlNr&,0],1) Or Lt(MED1&[CtrlNr&,1],1): Return -1
SetActiveWindow(dHndl&)
Return 0
EndProc
Proc KillMEDwStc
Parameters CtrlMaxNr&
WhileLoop 0,CtrlMaxNr&,1
DestroyWindow(MED1&[&Loop,0])
EndWhile
EndProc
Def gStcHandl(1) MED1&[&(1),0]
Def gMedHandl(1) MED1&[&(1),1]
**********************************************************************************************
**** Programm Start ****
Declare dlg1&,bt1&,bt2&,bt3&
WindowStyle 26538
Window 0,0-640,480
dlg1& = Create(Dialog,%HWnd,Test- Fenster,60,60,640,480) Quasi Dialog Fenster
Zuerst die Buttons und alle anderen Controls erstellen
bt1& = Create(Button,dlg1&,Button 1,480, 60,120,22)
bt2& = Create(Button,dlg1&,Button 2,480,100,120,22)
bt3& = Create(Button,dlg1&,Button 3,480,140,120,22)
jetzt das Static- Control als Unterlage fürs MultiEdit (und nur für dieses)
es Trennt sozusagen das Edit vom Dialog und dessen Eigenschaften!
cMEDwStc(0,dlg1&,1,Rich, 20, 20,400,420,0)
cMEDwStc(1,dlg1&,0,Multi,460,180,162,160,0)
Sleep 1000
SetText gMedHandl(0),Test 1
Sleep 1000
SetText gMedHandl(1),Test 2
Sleep 1000
MessageBox(Test- Message,Achtung...,48)
SetActiveWindow(dlg1&)
WhileNot Or(Equ(%Key,2),Equ(%MenuItem,-2))
WaitInput
EndWhile
KillMEDwStc(1ss=s2>)
Fin