Italia
Foro

Tab Taste auf Dialogfenster

 

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
 
Windows7 Xprofan 8,9,10 [...]  [...] 
24.02.2005  
 




Michael
Dell
Hallo Georg,

interessante Frage, hab etwas rumgeschraubt:
KompilierenMarkierenSeparieren
Declare 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
 
Windows7 Xprofan 8,9,10 [...]  [...] 
25.02.2005  
 




Michael
Dell
Sorry, das war kein sehr gutes Beispiel.

Hier ein besseres (Hoff!) :
KompilierenMarkierenSeparieren
Declare 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
 
Windows7 Xprofan 8,9,10 [...]  [...] 
25.02.2005  
 




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.
KompilierenMarkierenSeparieren
textfeld&=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
 
Windows7 Xprofan 8,9,10 [...]  [...] 
25.02.2005  
 




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  
 



Und warum nimmst nicht einfach nen
KompilierenMarkierenSeparieren
DEF ASetParent(2) ! "USER32","SetParent","%%","%"
>

?

Salve, iF
 
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
 
26.02.2005  
 




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
 
XProfan 8/9.1, Win XP, AMD 64/3200
26.02.2005  
 




Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

9.931 Views

Untitledvor 0 min.
rafl19.08.2024
Thomas Zielinski28.06.2023
Paul Glatz22.06.2023
E.T.12.06.2023
Di più...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie