Foro | | | | - Page 1 - |
| 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 |
| | | | |
| | | | | - Page 1 - |
| 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 |
| | | | |
| | | | - Page 2 - |
| | Michael Dell | Ciao,
das Problem mit den MessageBoxen lag am Static- Stil WS_EX_TOPMOST, dank SetParent kann darauf jetzt verzichtet werden. KompilierenMarkierenSeparieren**** 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>)
End
Salu
Michael... |
| | | Salu Michael...
Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! | 26.02.2005 ▲ |
| |
| | GDL | Hallo Christian und Michael,
mein Hauptproblem liegt darin,das ich von Windows so gut wie keine Ahnung habe.Bis auf das bisschen was ich von Euch und Andreas bis jetzt auf die Reihe bekam,habe ich keine Ahnung wie ich die vorgefertigten Profanbefehle und die Messages kombinieren soll,da die Profanbefehle ohne die $Zahl eingegeben werden.Habe mir in Prfellow die Stylefactory mal angesehen,nur wo kann man nachlesen was die Messages,die nicht aus dem Namen,oder sofortiger Aktion erkennbar sind, bewirken.Mit den Messages ist es genauso,alle die in der Profan Aiuto nicht genau beschrieben sind,woher kann man sich eine anfängerverständliche Beschreibung besorgen.Wenn man auch die Winhelp übersetzt,hat man lediglich die Übersetzung vom engl.Fachchinesisch ins deutsche Fachchinesisch. Wenn von Euch jemand ein gutes Buch circa diesen Bereich weis,bitte teilt es mir mit.Die meisten Probleme(mir gehts jedenfalls so) entstehen per Anfänger immer dann,wenns mit den Profaneigenen Befehlen nicht geht und dann jede Menge andere Möglichkeiten hätte,aber mit denen nichts anzufangen weis. Darum kommen immer meine unkonventionellen Fragen und hoffe,dass ich mich dadurch nicht allzusehr blamiere ?Aber ich möchte es auf die Reihe kriegen !
Mit freundlichen Grüßen Georg |
| | | | |
| | CB | Hallo Georg! Ist nicht so schlimm, wies aussieht. Aber oft ein mühevoller und dornenreicher Weg dorthin. Das kannst Du nur genauso lernen wie wir alle. Codes ansehen und analysieren, wie andere etwas lösen und dann modifizieren, ausprobieren, schauen, was passiert. Experimentieren, experimentieren ... Du findest aber in der Profanhilfe viel Infos zu Controls, schau mal unter @Control nach. Auch div. Stile sind dort zu finden. Auch damit lohnt sich das Ausprobieren! Hilfreich ist auch das Abklappern der div. Homepages von jenen, die diesen Weg schon gegangen sind. Da gibts jede Menge Sourcecodes zum Ausprobieren und Verwenden. Speziell hilfreich per Dich wäre zB. Pascals Homepage (API-Grundlagen-Kurs etc) oder die Andreas Miethe, der sehr viele interessante Codes veröffentlicht hat (das meiste davon sehr gut dokumentiert), um nur ein paar Beispiele zu nennen. Die meisten der hier vertretenen Profaner haben auf ihren Seiten viel Wissenswertes der Öffentlichkeit zur Verfügung gestellt. Ich habe von diesen Seiten rund 200 MB freie Sourcecodes und Programme heruntergeladen, wo ich bei Bedarf suchen gehe, um nicht jedesmal im Internet stöbern zu müssen. Auch von Dir ist ein Programm in meiner Sammlung...
Saluto, Christian |
| | | | |
| | Michael Dell | Zustimm, is oft sehr mühsam aber es gibt einige gute Hilfen.
Mega- Tip1: [...] Stichwort: API_Hilfe
Mega- Tip2: [...] Stichwort: Controls.hlp
Panoramica circa Profan- Demos (nutze ich oft): [...]
Und das sind längst nicht alle!
Ansonsten wühle ich oft in Headern und Include auch von C++ und Masm32, etwas schwieriger aber auch sehr hilfreich ist die MSDN.
Zum Glück ist Profan viel leichter als andere Sprachen und es gibst ja die Community.
Salu
Michael... |
| | | Salu Michael...
Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! | 27.02.2005 ▲ |
| |
| | | Hallo Georg...
Nachfragen tu ich auch und wissen tue ich auch längst nicht alles. Nur wer nicht nachfragt blamiert sich.
Was Controls angeht - da hilft mir sehr oft die WINDOWS.PH von Profan. Dort findest du unter anderem die Konstanten per Fensterstyle. Links stehen die Symbolischen Namen und rechts die dem Stil entsprechenden Zahlenkonstanten. In den symboklischen Namen kannst du Angaben darüber finden, was der Stil tut. So erzeugt WS_VISIBLE zum Beispiel ein sichtbares Fenster. WS_ steht dabei per Windowstyle (per alle Arten von Controls), ES_ per Editstyle (per Editfelder), BS_ per Buttonstyle... Fensterstile kannst du locker addieren - sie dürfen logischerweise bloß nicht doppelt vorkommen.
Außerdem gibt es da ein paar geniale Aiuto File zur Windows API auf der Homepage von Uwe Pascal Niemeyer. Wenn du die Sachen dort richtig verstanden hast - und die sind recht einfach zu verstehen - kannst du sogar mit Aiuto der WIN32.HLP Fonte aus Visual Basic, MASM oder C++ übersetzen und Anregungen in deine eigenen Programme einbauen - und das ohne überhaupt die Sprache zu können!
Ich weiß selbst nicht alles, und ich kann mich wohl eher einen Lehrling als einen Profi nennen - aber ich weiß wo ich nachschlagen kann, und das ist wichtig... |
| | | | |
| | Unterthema: Controls mit Tabulatortaste ansteuern, Reihenfolge festlegen [...] erzeugt. |
| | | | |
|
AnswerThemeninformationenDieses Thema hat 6 subscriber: |