Italia
Foro

Tab Taste auf Dialogfenster

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



 
- 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.
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  
 



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




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




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...
 
27.02.2005  
 



Unterthema: Controls mit Tabulatortaste ansteuern, Reihenfolge festlegen  [...]  erzeugt.
 
25.04.2023  
 




Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

9.929 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