Foro | | | | GDL | Hi Profaner,
wie kann ich es anstellen, das ein Multiedit oder Richedit auch auf einem Dialogfenster so reagiert wie auf dem Hauptfenster ?D.h. beim Drücken der Tab Taste soll eingerückt werden und nicht das Multiedit den Focus verlieren.
Vielen Dank und verbleibe mit freundlichen Grüßen Georg |
| | | | |
| | Michael Dell | Hallo Georg,
interessante Frage, hab etwas rumgeschraubt: KompilierenMarkierenSeparierenDeclare dlg1&,med1&
WindowStyle 26538
Window 0,0-640,480
dlg1& = Control("Static","Test- Fenster",$D0C001A6,20,20,400,260,%Hwnd,0,%HINSTANCE,$0108) Static - QuasiDialog
med1& = control( "Edit", "",$50B000C4,10,10,380,200,dlg1&,0,%HINSTANCE,$0200) Edit - Multiline
WhileNot Or(Equ(%Key,2),Equ(%MenuItem,-2))
WaitInput
EndWhile
Salu Michael...
Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! | 25.02.2005 ▲ | |
| |
| | GDL | Hallo Michael,
erstmal Danke per den Code.Er geht schon,aber leider habe ich vergessen zu schreiben,dass auf den Dialogfenster auch Buttons sind,die schon reagieren müssen.Bitte nicht böse sein.
Probiere jetzt noch die $Zahl mit verschiedenen Zahlen in deinem Code aus.
Servus Georg |
| | | | |
| | Michael Dell | Sorry, das war kein sehr gutes Beispiel.
Hier ein besseres (Hoff!) : KompilierenMarkierenSeparierenDeclare dlg1&,stc1&,med1&,bt1&,bt2&,bt3&
WindowStyle 26538
Window 0,0-640,480
dlg1& = Create("Dialog",%HWnd,"Test- Fenster",20,20,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!
stc1& = Control("Static","",$D0000120,40,60,400,420,dlg1&,0,%HINSTANCE,$040008) Static - Edit Unterlage
med1& = control( "Edit","",$50B000C4,0,0,400,420,stc1&,0,%HINSTANCE,$0200) Edit - Multiline
SetActiveWindow(dlg1&)
WhileNot Or(Equ(%Key,2),Equ(%MenuItem,-2))
WaitInput
EndWhile
End
Salu
Michael |
| | | Salu Michael...
Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! | 25.02.2005 ▲ |
| |
| | GDL | Hallo Michael,
es klappt einwandfrei.Danke.
Kann man dies generell so machen,das man mit einem Static als Unterlage einem neuen Objekt neue Stile(unabhängig vom Fenster oder Dialog)zuweisen kann ?
Servus Georg |
| | | | |
| | Michael Dell | Hallo Georg,
ich denke in den allermeisten Fällen schon. Statics sind leicht an Sonderfälle anzupassen. Benutze sie auch gern gern als Basis- Unterlage per Objekte auf Tab-Controls also überall wo viele Controls verwaltet werden. Die besten Styles hierfür lassen sich schnell und einfach mit ControlFellow (in PrFellow) herausfinden.
Saluto
Michael |
| | | Salu Michael...
Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! | 25.02.2005 ▲ |
| |
| | GDL | Hallo Michael,
puh,bekam schon einen Schrecken. Baute mein ursprüngliches Programm um,nur die Speichern und Run Funktionen gingen nicht mehr.
Kam dann dahinter,das Windowseigene Dialoge (Speichern,Messagebox usw.),wenn sie im Bereich vom Static liegen,dahinter verborgen bleiben.
Habs dann so gelöst. KompilierenMarkierenSeparierentextfeld&=das Richedit
riche&=Static
subfenster&=Dialogfenster
SelectAll textfeld&
CopyToClip(textfeld&)
destroywindow(riche&)
speichern hier Speicherdialog
erzeugen
riche& = Control("Static","",$D0000120,0,60,800,600,subfenster&,0,%HINSTANCE,$040008) Static - Edit Unterlage
CreateRTFControl riche&,0,60,800,600
Let textfeld&=GetIntResult()
rtf&=@CREATE("FONT","COURIER",16,12,1,0,0)
setfont textfeld&,rtf&
PasteAsText(textfeld&)
setfocus(textfeld&)
Habe wieder einiges dazugelernt.
Servus Georg |
| | | | |
| | Michael Dell | Ciao,
die schwierigkeit beim Platzieren der Controls ensteht durch den Staticstil es handelt sich hier nicht um ein Child sondern um ein Popup. Das bedeutet: (x,y = 0,0) è linker oberer Bildschirmrand, nicht linke obere Ecke des übergeordneten Fensters.
Hab das ganze überarbeitet, so das es mit einem einzigen Befehl geht.
cMEDwStc(ControlNummer&,WindowHndl&,x&,y&,cx&,cy&,zusatzStil&).
Mit SetParent wird (x,y) korrekt gesetzt (Dank iF): KompilierenMarkierenSeparieren**** Hiermit können bis zu 40 (0-39) MultiEdits auf Statics erzeugt und zerstört werden ****
DEF ASetParent(2) ! "USER32","SetParent"
Declare MED1&[40,2] MED1&[CtrlNr&,0] = StaticHandle / MED1&[CtrlNr&,1] = MultiEditHandle
Clear MED1&[]
Proc cMEDwStc erstsellt ein Multiline- Edit auf einem Popup- Static (Unabhängig gegenüber übergeordneten Fenster!)
Parameters CtrlNr&,dHndl&,x&,y&,cx&,cy&,zStil&
Declare erg$
MED1&[CtrlNr&,0] = Control("Static","",Or($D0000120,zStil&),x&,y&,cx&,cy&,dHndl&,Add($a8000,CtrlNr&),0,$040008) 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
EndIf
Case Gt(MED1&[CtrlNr&,0],0) Or Gt(MED1&[CtrlNr&,1],0): Return -1
Return 0
EndProc
Proc KillMEDwStc Killt alle mit cMEDwStc erstellten Controls
Parameters CtrlMaxNr&
WhileLoop 0,CtrlMaxNr&,1
DestroyWindow(MED1&[&Loop,0])
EndWhile
EndProc
**********************************************************************************************
**** Programm Start ****
Declare dlg1&,bt1&,bt2&,bt3&
WindowStyle 26538
Window 0,0-640,480
dlg1& = Create("Dialog",%HWnd,"Test- Fenster",20,20,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&, 20, 20,400,420,0)
cMEDwStc(1,dlg1&,460,180,162,160,$06) letzter Parameter auf $06 zum ausrichten des Controls
SetActiveWindow(dlg1&)
WhileNot Or(Equ(%Key,2),Equ(%MenuItem,-2))
WaitInput
EndWhile
KillMEDwStc(1)
f='./../../funktionsreferenzen/xprofan/end/'>End
Salu
Michael... |
| | | Salu Michael...
Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! | 26.02.2005 ▲ |
| |
| | | | | | | |
| | Michael Dell | Hallo iF, den kannte ich noch nicht
Danke
Michael... |
| | | Salu Michael...
Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! | 26.02.2005 ▲ |
| |
| | | Achso lol - ich hab gegrübelt ob der nich Nachteile mitsich bringt - aba so ists ja jut.
Salve, iF |
| | | | |
| | CB | [quote:a59489485d=Georg Dankesreiter]Kam dann dahinter,das Windowseigene Dialoge (Speichern,Messagebox usw.),wenn sie im Bereich vom Static liegen,dahinter verborgen bleiben. [/quote:a59489485d] Hallo Georg, vielleicht hilft Dir auch ein erweiterter Stil per Messageboxen: (Auszug aus der Profan-Aiuto)
Werte per FENSTERART: 0 - normales Fenster (~MB_APPLMODAL) 4096 - großes, nicht verschiebbares Fehler-Fenster (~MB_SYSTEMMODAL) 8192- wie 0, jedoch per unsichtbare Fenster (~MB_TASKMODAL) 16384- fügt einen Aiuto-Button hinzu (~MB_HELP) 65536- die MessageBox wird in den Vordergrund gesetzt (~MB_SETFOREGROUND) 262144- die MessageBox wird in den Vordergrund gesetzt und bleibt dort (~MB_TOPMOST) 524288- Text rechtsbündig ausrichten (~MB_RIGHT)
Saluto, Christian |
| | | | |
|
AnswerThemeninformationenDieses Thema hat 6 subscriber: |