Deutsch
Forum

Static Tab und Edit

 
- Seite 1 -



Rolf
Koch
Huhu Leute,

heute hab ich mal ne Frage:
Hat einer ne Idee:
@Control(STATIC,txt$,$54000106,x%,y%,breit%,hoch%,fenster&,$7918,%hinstance)
dort liegen Edits drauf. Logischerweise kann ich diese nicht mit der Tabtaste anspringen. Logisch, denn es ist kein Dialog und ich kann diesem Teil keinen 512er Wert setzen.
Auch ein Exwert $200 funktioniert nicht.
Ich benötige das Teil aber. Leider klappt es mit Getkeystate(9) auch nicht.
Ist halt blöde, wenn man nicht mit der Tabtaste zwischen den Edits hin und herspringen kann.
Hab alles versucht.

Aber, habe noch ein bisschen Hoffnung , da nichts unmöglich ist.

Rolf
 
05.02.2005  
 



 
- Seite 2 -



Rolf
Koch
Hi Pascal
Nein leider müssen die Teile auf das jeweilige Static.
Kennste doch:
Zum Beispiel Button Klick 2:
Showwindow(static1&,0)
Showwindow(static2&,1)
u.s.w - sonst müsste ich einges enablen, was auch sehr unproffesionell ist.

Aber Danke trotzdem.
Im Moment nicht so extrem wichtig, da ich an einem anderen Projekt weiterareiten muss.

Rolf
 
07.02.2005  
 




Uwe
''Pascal''
Niemeier
Hallo Rolf!

Es sollen mehrere Gruppen von Elementen auf einmal ein- oder ausgeblendet werden (z.B. bei Reiterwechsel in einem Tab-Control)?

Wie wäre es mit rahmenlosen Dialogen statt Statics?

Vielleicht könnte man die Statics auch einem Subclassing unterziehen, wenn nur die Nebenwirkungen nicht wären...

SeeYou
Pascal
 
07.02.2005  
 




Rolf
Koch
Hi Pascal,

ja wäre auch eine Möglichkeit, wenn man so einfach und schön wie ein Static den Dialogen von Hause aus eine weisse Hintergrundfarbe geben könnte. Von Hause aus = per Stil und nur nicht per Startpaint - Endpaint *würg*

Rolf
 
07.02.2005  
 



Rolf - Du bist doch mit der Thread.pcu vertraut - warum nimmst die nicht dafür - die ist doch wie dafür geschaffen. Ich kann Dir natürlich auch ein kleines demo dafür liefern.

Salve, iF
 
07.02.2005  
 




Rolf
Koch
Hi If,

klar bin ich damit vertraut, sogar sehr intim
Also meinste dort Neuzeichnen?
Ich hatte extra *würg* bei Startpaint geschrieben. Ich hasse Startpaint und Endpaint. Absolut langweilig

Aber wie gesagt: Nehmen wir uns dem Thema später nochmals an, da es im Moment doch nicht so wichtig ist. Es sei denn ein anderer interessiert sich weiterhin für die Fragestellung - ausser Startpaint LOL
Rolf
 
07.02.2005  
 




Jörg
Sellmeyer
Hallo Rolf,
Wie wäre es denn so:

Cls
dlg&=Createdialog(%hwnd...)
Static&=Control(Static,dlg&,....)
auf dieses Static ein Bitmap mit Handle zaubern, geht ja auch mit Bitmap aus
Speicher. Ein 1 x 1 Pixel reicht ja schon für einen weißen Hintergrund
Button&=CreateButton(%dlg,...)

So hast Du die Controls auf dem Dialog und das Static gibt Dir den weißen Hintergrund
Gruß
Jörg
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
07.02.2005  
 




Rolf
Koch
Danke auch Dir für die Antwort.

Jedoch genau so (ähnlich sieht es ja aus).
Ich bin ein Staticfetischist und daher arbeite ich nur mit Bitmaps auf Statics.
Ich benötige kein Bitmap auf dem Staticteil. Da ich per Stil das Staticcontrol in weiss färbe. Brauche also noch nicht mal ein Pixel Grafik.
Also: Control(STATIC,txt$,$54000106,x%,y%,breit%,hoch%,fenster&,$10000,%hinstance) wäre weiss = Whiterect
oder
54000105 = Grayrect
oder
54000104 = Blackrect.
Du siehst, es geht ja auch ohne Bitmap. Ich schätze Du hast leider meine Frage nicht verstanden. Wie ich was erstelle und so weiter ist ja klar . Schätzungsweise hast Du erst weiter unten angefangen zu lesen, da sieht es nach einem anderen Problem aus .
Es geht lediglich um das Problem auf Statics erstellten Edits die Tabtaste abzufragen.

Abgesehen davon bleibt in diesem Fall immer noch das Problem

Meine Erstellung:

Dialog erstellen
Static drauf (in weisem Stil)
Controls drauf
und schätzungsweise gibt es keine Lösung für das Problem, es sei den per Subclass., daß man die Tabtaste dort in den Editfeldern ansprechen kann.

Aber wie gesagt: Macht Euch jetzt nicht verrückt. Muss halt jetzt zuerst was anderes programmieren.

[quote:1267241905]
Cls
dlg&=Createdialog(%hwnd...)
Static&=Control(Static,dlg&,....)
auf dieses Static ein Bitmap mit Handle zaubern, geht ja auch mit Bitmap aus
Speicher. Ein 1 x 1 Pixel reicht ja schon für einen weißen Hintergrund
Button&=CreateButton(%dlg,...)
[/quote:1267241905]
Jo dürfte ich kennen - so arbeiten ROC, NOCTRAMIC (sehr viel) und einige meiner Beispielcodes doch.

Rolf
 
08.02.2005  
 



Moin Rolf, ich noch mal....

Mal schauen, ob ich dich bislang richtig verstanden habe:
So weit bist du schon...
KompilierenMarkierenSeparieren
Declare Static&,Edits&[5],fenster&,Focus%,txt$
WINDOWSTYLE 31
WINDOWTITLE "STATIC Control und Tabtaste",TXT$
Window 0,0-640,440
LET FENSTER&=@Control("Dialog","",$54000000,10,10,210,300,%HWND,$7917,%hinstance)
LET TXT$="Test"
LET STATIC&=@Control("STATIC",txt$,$54000106,0,0,210,300,fenster&,$7918,%hinstance,$10000)
LET EDITs&[1]=@CREATEEDIT(STATIC&,"",10,10,200,25)
LET EDITs&[2]=@CREATEEDIT(STATIC&,"",10,50,200,25)
LET EDITs&[3]=@CREATEEDIT(STATIC&,"",10,90,200,25)
LET EDITs&[4]=@CREATEEDIT(STATIC&,"",10,130,200,25)
LET EDITs&[5]=@CREATEEDIT(STATIC&,"",10,170,200,25)
@SETFOCUS(EDITs&[1])
LET FOCUS%=1

Whilenot %MENUITEM=-2

    Waitinput

WEND


Die SKCONTROL.DLL habe ich jetzt mal weggelassen - damit kenne ich mich nicht aus - WS_TABSTOP hier nachträglich in die Controls einzufügen dürfte aber eigentlich kein Problem sein - oder doch?
Welche Probleme hast du mit dem Dialog als Untergrund, warum soll der weg, und welche Probleme gibt es mit WINDOWSTYLE 512?

 
08.02.2005  
 




Rolf
Koch
Hi AH,

jo komischerweise klappt da jetzt die Tabtaste. Ich hatte auch $10000 genommen.
Vielleicht liegt es jetzt doch nur noch an den SKEdits.
Aber wirklich gut so. Vielleicht kann ich es ja dann (wenn ich da weitermache) so umsetzen. Und evtl. den SKControls den Stile beibringen.

Thx
Rolf
 
08.02.2005  
 




Michael
Dell
Hallo,

hab auch noch ein Beispiel mit WS_EX_CONTROLPARENT, weis allerdings nicht ob das mit den SKEdits auch läuft:
KompilierenMarkierenSeparieren
Bitte tabulator Taste betätigen
Def GSC(1) !"USER32.DLL","GetSysColor"
Declare dlg1&,st1&,txt1&,ed1&,ed2&,ed3&,tst&
WindowStyle 538
Cls
dlg1& = Create("Dialog",%HWnd,"Test Dialog - Bitte tabulator Taste betätigen",40,40,400,300)
st1&  = Control("Static","Dies ist ein Test!",$54010106,40,40,200,150,dlg1&,$10001,%HInstance,$050080) WS_EX_CONTROLPARENT =$050080
st1&  = Control("Static","Dies ist ein Test!",$54010106,40,120,200,150,%HWnd,$10001,%HInstance,$050080) WS_EX_CONTROLPARENT =$050080
txt1& = Create(  "Text",st1&,"Dies ist ein Test!",10, 10,180, 16)
ed1&  = Create(  "Edit",st1&,            "Edit 1",10, 40,180, 18)
ed2&  = Create(  "Edit",st1&,            "Edit 2",10, 70,180, 18)
ed3&  = Create(  "Edit",st1&,            "Edit 3",10,100,180, 18)
Sleep 1000
ShowWindow(st1&,0)
Sleep 1000
ShowWindow(st1&,1)

WhileNot Or(Equ(%Key,2),Equ(%MenuItem,-2))

    WaitInput

EndWhile

DestroyWindow(dlg1&)
End

Gruß

Michael...
 
Salu Michael...

Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! 
08.02.2005  
 




Rolf
Koch
Ja, Michael, klappt auch bestens!
Wie gesagt: Dann hängt es von (mit Tab u.s.w) einem anderen Faktor ab.
Werde dann nochmals detailiert nachschauen, warum dies nicht so geht. Aber vielleicht geht es ja so jetzt mit den Beispielen, komme nur nicht dazu zu testen

Rolf
 
08.02.2005  
 




CB
Hi,

möchte Euch allen danken - ihr habt mir sehr geholfen, ein Problem zu beseitigen. Im Prinzip gings um die gleiche Ausgangssituation wie bei Rolf - nur mit Tabcontrols. Wie das mit SKControls geht, kann ich Dir leider auch nicht sagen, ich schätze aber, Sebastian wird da sicher was tricksen können.
Auch wenn Euch das keine neuen Erkenntnisse bringen wird, schicke ich mal meine Konstruktion (das primär fixierte 1. Tab ist zwar eine wilde Konstruktion, dazu habe ich von Frank und Pascal auch andere Lösungen bekommen, aber diese ist halt von mir - ich schmücke mich nun mal nur ungern mit fremden Federn):
KompilierenMarkierenSeparieren
DEF SetWindowLong(3) ! "User32","SetWindowLongA"
DEF GetWindowLong(2) ! "User32","GetWindowLongA"
DEF &WM_CLOSE $010
DEF &WM_COMMAND $0111
DEF &TCM_SETITEMSIZE $01329
DEF &TCS_FIXEDWIDTH  1024
DEF &TCM_GETITEMCOUNT $01304
DEF &GWL_STYLE  -16
DEF MakeLong(2) Or(&(1),&(2)<<16)
DEF GetSysColor(1) !"USER32","GetSysColor"
UserMessages &WM_COMMAND,&WM_CLOSE
Declare Ende&,TabControl&,TabItems&,AllTabsBut&,AktivesTab&,Ende&,Tab2&
Declare EditTab1&,EditTab2_1&,EditTab2_2&,EditTab3&,EditTab4&,EditTab5&,EditTab6&
Declare Control1&,Control2&,Control3&,Text1&

PROC TAB1AKTIV

    ShowWindow(AllTabsBut&,1)
    ShowWindow(Control1&,1)

ENDPROC

PROC TAB1INAKTIV

    ShowWindow(AllTabsBut&,0)
    ShowWindow(Control1&,0)

ENDPROC

PROC TAB2AKTIV

    ShowWindow(Control2&,1)

ENDPROC

PROC TAB2INAKTIV

    ShowWindow(Control2&,0)

ENDPROC

PROC TAB3AKTIV

    ShowWindow(Control3&,1)

ENDPROC

PROC TAB3INAKTIV

    ShowWindow(Control3&,0)

ENDPROC

PROC TAB4AKTIV

    ShowWindow(EditTab4&,1)

ENDPROC

PROC TAB4INAKTIV

    ShowWindow(EditTab4&,0)

ENDPROC

PROC TAB5AKTIV

    ShowWindow(EditTab5&,1)

ENDPROC

PROC TAB5INAKTIV

    ShowWindow(EditTab5&,0)

ENDPROC

PROC TAB6AKTIV

    ShowWindow(EditTab6&,1)

ENDPROC

PROC TAB6INAKTIV

    ShowWindow(EditTab6&,0)

ENDPROC

WindowStyle 538
Cls
TabControl& = Create("TABCTRL",%hwnd,"TAB 1",0,0,width(%HWND),height(%HWND))
Tab2& = InsertTab(TabControl&,1,"TAB 2")
InsertTab(TabControl&,2,"TAB 3")
InsertTab(TabControl&,3,"TAB 4")
InsertTab(TabControl&,4,"TAB 5")
InsertTab(TabControl&,5,"TAB 6")
SetWindowLong(TabControl&,&GWL_STYLE,OR(GetWindowLong(TabControl&,&GWL_STYLE),$0440))
TabItems& = 1
SendMessage(TabControl&,&TCM_SETITEMSIZE,0,MakeLong(Width(TabControl&),20))
==== Elemente Tab 1 ====
Control1& = Control("Static","",$50000006,20,30,600,410,%HWND,1001,%hInstance,$050080)
EditTab1& = Create("Edit",Control1&,"Edit in Control 1",50,50,150,19)
Text1& = Create("Text",Control1&,"Dzt. ist nur Tab 1 sichtbar",170,325,170,15)
AllTabsBut& = Create("Button",%HWND,"Show all tabs",50,350,100,20)    gesonderte Behandlung, deswegen dem Hauptfenster zugeordnet
==== Elemente Tab 2 ====
Control2& = Control("Static","",$50000006,25,50,250,200,%HWND,2001,%hInstance,$09)
Control2& = Control("Static","",$50010106,25,50,250,200,%HWND,2001,%hInstance,$050080) WS_EX_CONTROLPARENT =$050080
EditTab2_1& = Create("Edit",Control2&,"Edit 1 in Control 2",50,100,150,19)
EditTab2_2& = Create("Edit",Control2&,"Edit 2 in Control 2",50,125,150,19)
==== Elemente Tab 3 ====
Control3& = Control("Static","",$50000007,30,90,250,200,%HWND,3001,%hInstance,$050080)
EditTab3& = Create("Edit",Control3&,"Edit in Control 3",50,150,150,19)
==== Elemente Tab 4 ====
EditTab4& = Create("Edit",%HWND,"Normales Tab 4",50,200,150,19)
==== Elemente Tab 5 ====
EditTab5& = Create("Edit",%HWND,"Normales Tab 5",50,250,150,19)
==== Elemente Tab 6 ====
EditTab6& = Create("Edit",%HWND,"Normales Tab 6",50,300,150,19)
TAB1AKTIV
TAB2INAKTIV
TAB3INAKTIV
TAB4INAKTIV
TAB5INAKTIV
TAB6INAKTIV
AktivesTab& = GetActiveTab(Tabcontrol&)
AktivesTab& = 0
EnableWindow Tabcontrol&,0

PROC TABS_erweitern

    EnableWindow Tabcontrol&,1
    WindowStyle erweitern um feste Breite (alle Tabreiter sind gleich breit)
    SetWindowLong(TabControl&,&GWL_STYLE,OR(GetWindowLong(TabControl&,&GWL_STYLE),OR(&TCS_FIXEDWIDTH,$0440)))
    Anzahl der Tabreiter ermitteln
    TabItems& = SendMessage(TabControl&,&TCM_GETITEMCOUNT,0,0)
    Breite und Hoehe setzen (Par1 bei MakeLong ist die Breite, Par2 bei Makelong ist die Höhe)
    SendMessage(TabControl&,&TCM_SETITEMSIZE,0,MakeLong(Width(TabControl&)/TabItems&,20))
    AktivesTab& = 0
    ShowWindow(Text1&,0)

ENDPROC

Whilenot Ende&

    Waitinput
    AktivesTab& = GetActiveTab(Tabcontrol&)   Ermittelt das selektierte Tab

    If %UMessage = &WM_CLOSE

        Ende& = 1

    ElseIf %UMessage = &WM_COMMAND

        If &ULParam = AllTabsBut&

            TABS_erweitern
            TAB1INAKTIV
            TAB2AKTIV
            TAB3INAKTIV
            TAB4INAKTIV
            TAB5INAKTIV
            TAB6INAKTIV
            TAB1AKTIV                           das kapier ich zwar nicht so ganz, aber es geht nur so,
            TAB2INAKTIV                         sonst wird der Inhalt von Tab1 nicht gleich angezeigt!
            ShowWindow(AllTabsBut&,0)

        EndIf

    EndIf

    If tabchanged(TabControl&)                Tab gewechselt?

        If AktivesTab& = 0

            TAB1AKTIV
            ShowWindow(AllTabsBut&,0)
            TAB2INAKTIV
            TAB3INAKTIV
            TAB4INAKTIV
            TAB5INAKTIV
            TAB6INAKTIV

        ElseIf AktivesTab& = 1

            TAB1INAKTIV
            TAB2AKTIV
            TAB3INAKTIV
            TAB4INAKTIV
            TAB5INAKTIV
            TAB6INAKTIV

        ElseIf AktivesTab& = 2

            TAB1INAKTIV
            TAB2INAKTIV
            TAB3AKTIV
            TAB4INAKTIV
            TAB5INAKTIV
            TAB6INAKTIV

        ElseIf AktivesTab& = 3

            TAB1INAKTIV
            TAB2INAKTIV
            TAB3INAKTIV
            TAB4AKTIV
            TAB5INAKTIV
            TAB6INAKTIV

        ElseIf AktivesTab& = 4

            TAB1INAKTIV
            TAB2INAKTIV
            TAB3INAKTIV
            TAB4INAKTIV
            TAB5AKTIV
            TAB6INAKTIV

        ElseIf AktivesTab& = 5

            TAB1INAKTIV
            TAB2INAKTIV
            TAB3INAKTIV
            TAB4INAKTIV
            TAB5INAKTIV
            TAB6AKTIV

        EndIf

    EndIf

EndWhile

End

Gruß, Christian
 
XProfan 8/9.1, Win XP, AMD 64/3200
08.02.2005  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

6.120 Betrachtungen

Unbenanntvor 0 min.
Peter Max Müller13.11.2017
Ernst22.04.2016
Michael Borowiak04.11.2013
Julian Schmidt30.03.2012
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


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